声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4038|回复: 14

[综合讨论] 关于用最小二乘法解非线性方程组的问题

[复制链接]
发表于 2006-9-1 20:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
关于用最小二乘法解非线性方程组的问题

       方程组的某些解要求必须大于0,而解方程组的命令fslove无法设置解的范围,在网上看到说可以用LSQNONLIN来设置解的范围,我想请问各位大侠:
        1。能否用最小二乘法解多个非线性方程组,因为如果每个方程f(x)都必须为0,那么使每个方程的平方和最小(最小是0),是否就可解这些方程组了。也就可以使用lsqnonlin函数了?
      2。在使用该函数时,exitflag=3,也就是方程的残差符合终止条件了,可我发现结果并不是方程的解,但我减小option中Tolfun的值为1E-7时,就怎么都迭代不出来了,exitflag总是为0,我就不知该改动哪个参数来使迭代收敛了?
     3。接2,比如如何增加允许迭代的次数,或如何减小残差,等等?
    谢谢各位大侠!
回复
分享到:

使用道具 举报

 楼主| 发表于 2006-9-2 18:24 | 显示全部楼层
顶一下,希望有人帮忙澄清概念,或者,不知哪里有对MATLAB中相关算法进行解释或介绍的书呀。
发表于 2006-9-3 08:23 | 显示全部楼层
当然是可以的,不过对初值选择要求比较高,最好把具体问题给出来
 楼主| 发表于 2006-9-3 11:14 | 显示全部楼层
原帖由 ABBYABBIE 于 2006-9-3 08:23 发表
当然是可以的,不过对初值选择要求比较高,最好把具体问题给出来


        具体问题比较复杂,共有423个方程,我做成两个m文件,见附件,而且针对不同的速度v 选用不同的猜测初值带入计算,但计算了一、两天结果都差不多,残差到 1E-4 ,怎么也减小不了了。

         还请各位大侠帮忙看看,多谢了
 楼主| 发表于 2006-9-3 11:26 | 显示全部楼层

为什么附件传不上去呀,急

发表于 2006-9-3 11:27 | 显示全部楼层
原帖由 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)
 楼主| 发表于 2006-9-3 14:19 | 显示全部楼层
我看到了,两个m文件,总共才 35kb 左右呀,怎么传不上去呢,而且好像我是有权限的呀,是否还要点击其它地方呢,还是我机器的问题呀,怪了

yhwp881.m

19.28 KB, 下载次数: 9

yhorder881.m

6.67 KB, 下载次数: 8

 楼主| 发表于 2006-9-3 14:20 | 显示全部楼层

回复 #7 jtyuan 的帖子

原来是文件的后缀要加上呀,这回成功了
 楼主| 发表于 2006-9-6 09:32 | 显示全部楼层
再顶一下:
        这个问题很难吗,恳请各位帮个忙吧,这个问题已经困扰我好久了,身边的人问不到答案,真的很着急!!!
发表于 2006-9-6 15:47 | 显示全部楼层
423多个方程,残差能到 1E-4 已经很不错了
用lsqnonlin是可以的,但是可能会碰到初值的选择问题

评分

1

查看全部评分

 楼主| 发表于 2006-9-6 17:11 | 显示全部楼层
残差能到 5E-4 ,
     但给的初值不同时,虽然“  残差能到 5E-4,”, 但看各未知量的值,不相同,而且差别很大,那肯定不是方程组的解呀,所以还是没有办法。
 楼主| 发表于 2006-9-6 19:17 | 显示全部楼层
另:
     看介绍说fslove解非线性方程组用最小二乘法,现在 的 lsqnonlin也是最小二乘法,但根据对423个方程组的求解,我发现他们用的方法是不一样的,如果调用lsqnonlin时也不限制解的范围,lsqnonlin函数也还是解不出来,而不限制解的范围时 fslove 是可以得出解的(每个方程都可以达到1E-10左右),确实是方程的解(只不过不是我要的解)。
        怎么办呢?请大家帮帮忙,不胜感激!!!
发表于 2006-9-6 20:34 | 显示全部楼层
用一些全局收敛算法试试看那
 楼主| 发表于 2006-9-10 09:26 | 显示全部楼层
关于lsqnonlin函数,在option中减小Tolfun的值,好像对残差(resnorm)没有影响(而resnorm的大小实际上是方程是否得解的标志),不像fsolve,我减小option中tolfun的值,直接在输出里能看到各个方程的值与0的差值变小,也就是解越精确。
      那,在lsqnonlin中,是否残差resnorm的大小是外界没有办法控制的,是由算法自己决定的。也就是说我的方程的残差只能达5E-4,是由算法和方程性质决定的,现在用MATLAB的fsolve 或lsqnonlin是解不出该方程组了???
发表于 2011-4-12 20:24 | 显示全部楼层
thank you。。。。。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-16 11:42 , Processed in 0.067716 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表