关于用最小二乘法解非线性方程组的问题
关于用最小二乘法解非线性方程组的问题方程组的某些解要求必须大于0,而解方程组的命令fslove无法设置解的范围,在网上看到说可以用LSQNONLIN来设置解的范围,我想请问各位大侠:
1。能否用最小二乘法解多个非线性方程组,因为如果每个方程f(x)都必须为0,那么使每个方程的平方和最小(最小是0),是否就可解这些方程组了。也就可以使用lsqnonlin函数了?
2。在使用该函数时,exitflag=3,也就是方程的残差符合终止条件了,可我发现结果并不是方程的解,但我减小option中Tolfun的值为1E-7时,就怎么都迭代不出来了,exitflag总是为0,我就不知该改动哪个参数来使迭代收敛了?
3。接2,比如如何增加允许迭代的次数,或如何减小残差,等等?
谢谢各位大侠! 顶一下,希望有人帮忙澄清概念,或者,不知哪里有对MATLAB中相关算法进行解释或介绍的书呀。 当然是可以的,不过对初值选择要求比较高,最好把具体问题给出来 原帖由 ABBYABBIE 于 2006-9-3 08:23 发表
当然是可以的,不过对初值选择要求比较高,最好把具体问题给出来
具体问题比较复杂,共有423个方程,我做成两个m文件,见附件,而且针对不同的速度v 选用不同的猜测初值带入计算,但计算了一、两天结果都差不多,残差到 1E-4 ,怎么也减小不了了。
还请各位大侠帮忙看看,多谢了
为什么附件传不上去呀,急
原帖由 jtyuan 于 2006-9-3 11:26 发表注意上传条顶上的说明
上传新附件 (小于 300 kb , 可用扩展名: chm, pdf, zip, rar, tar, gz, bzip2, gif, jpg, jpeg, png, bmp, txt, mid, doc, ppt, m, fig, for, f90) 我看到了,两个m文件,总共才 35kb 左右呀,怎么传不上去呢,而且好像我是有权限的呀,是否还要点击其它地方呢,还是我机器的问题呀,怪了
回复 #7 jtyuan 的帖子
原来是文件的后缀要加上呀,这回成功了 再顶一下:这个问题很难吗,恳请各位帮个忙吧,这个问题已经困扰我好久了,身边的人问不到答案,真的很着急!!! 423多个方程,残差能到 1E-4 已经很不错了
用lsqnonlin是可以的,但是可能会碰到初值的选择问题 残差能到 5E-4 ,
但给的初值不同时,虽然“残差能到 5E-4,”, 但看各未知量的值,不相同,而且差别很大,那肯定不是方程组的解呀,所以还是没有办法。 另:
看介绍说fslove解非线性方程组用最小二乘法,现在 的 lsqnonlin也是最小二乘法,但根据对423个方程组的求解,我发现他们用的方法是不一样的,如果调用lsqnonlin时也不限制解的范围,lsqnonlin函数也还是解不出来,而不限制解的范围时 fslove 是可以得出解的(每个方程都可以达到1E-10左右),确实是方程的解(只不过不是我要的解)。
怎么办呢?请大家帮帮忙,不胜感激!!! 用一些全局收敛算法试试看那 关于lsqnonlin函数,在option中减小Tolfun的值,好像对残差(resnorm)没有影响(而resnorm的大小实际上是方程是否得解的标志),不像fsolve,我减小option中tolfun的值,直接在输出里能看到各个方程的值与0的差值变小,也就是解越精确。
那,在lsqnonlin中,是否残差resnorm的大小是外界没有办法控制的,是由算法自己决定的。也就是说我的方程的残差只能达5E-4,是由算法和方程性质决定的,现在用MATLAB的fsolve 或lsqnonlin是解不出该方程组了??? thank you。。。。。
页:
[1]