24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2430  |  回复: 12

hongxiaodouy

新虫 (初入文坛)

[求助] 用不动点迭代求非线性方程组,求得的不是想要的解,怎么办

我用不动点迭代法求解一个非线性方程组(在这个方程组里我会用到其他的子程序),求得的解不满足我的实际条件,里面有的是负数。例如我给的初始值x0=5,y0=0.1已经很接近我需要得到的解x*=5.1,y*=0.11可是迭代以后却远离这个解,得到x=2,y=0.03之类的,请问这个问题是我程序语言的问题还是计算方法的错误?
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

xiegangmai

版主 (职业作家)

我没头衔

优秀版主优秀版主优秀版主

【答案】应助回帖


感谢参与,应助指数 +1
臭水沟: 金币+1, 谢谢交流~~ 2012-05-31 19:15:58
你是自己写的迭代算法吗?建议仔细检查一下你的程序。不满足收敛条件,不会退出的。
另外你可以用matlab自带的函数试试,对比一下。
明德厚学、求是创新
3楼2012-05-30 22:57:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guardian_qq

银虫 (小有名气)

【答案】应助回帖

★ ★
xiegangmai: 金币+2, 谢谢参与 2012-10-10 21:01:46
建议你用fsolve之类的求解,通常自带的都是优化过的,自己编的程序往往在考虑累积误差方面很粗糙,不容易发现问题。
如果要分析自己的程序也请你最好贴出代码来给大家看一下。
10楼2012-10-08 15:30:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

czxf

银虫 (正式写手)

【答案】应助回帖


感谢参与,应助指数 +1
xiegangmai: 金币+1, 谢谢参与! 2012-05-30 22:55:57
建议楼主看下不动点迭代收敛的条件,收敛区间应该是要求倒数绝对值小于1的吧,所以迭代初始点的选取还是有讲究的
2楼2012-05-30 12:57:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hongxiaodouy

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by czxf at 2012-05-30 12:57:04
建议楼主看下不动点迭代收敛的条件,收敛区间应该是要求倒数绝对值小于1的吧,所以迭代初始点的选取还是有讲究的

看了收敛条件 可是没有看懂呢   其实就像我上面的举例,如果我直接带入解x0=5.1,y0=0.11,那不就不用迭代,直接满足精度条件,得到解x*=5.1,y*=0.11,但是只要初始值偏离x*,y*,迭代结果就是x=2,y=0.03,不知道是怎么回事
4楼2012-05-31 13:27:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hongxiaodouy

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by czxf at 2012-05-30 12:57:04
建议楼主看下不动点迭代收敛的条件,收敛区间应该是要求倒数绝对值小于1的吧,所以迭代初始点的选取还是有讲究的

看了收敛条件 可是没有看懂呢   其实就像我上面的举例,如果我直接带入解x0=5.1,y0=0.11,那不就不用迭代,直接满足精度条件,得到解x*=5.1,y*=0.11,但是只要初始值偏离x*,y*,迭代结果就是x=2,y=0.03,不知道是怎么回事
5楼2012-05-31 13:27:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hongxiaodouy

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by czxf at 2012-05-30 12:57:04
建议楼主看下不动点迭代收敛的条件,收敛区间应该是要求倒数绝对值小于1的吧,所以迭代初始点的选取还是有讲究的

看了收敛条件 可是没有看懂呢   其实就像我上面的举例,如果我直接带入解x0=5.1,y0=0.11,那不就不用迭代,直接满足精度条件,得到解x*=5.1,y*=0.11,但是只要初始值偏离x*,y*,迭代结果就是x=2,y=0.03,不知道是怎么回事
6楼2012-05-31 13:28:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hongxiaodouy

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by xiegangmai at 2012-05-30 22:57:37
你是自己写的迭代算法吗?建议仔细检查一下你的程序。不满足收敛条件,不会退出的。
另外你可以用matlab自带的函数试试,对比一下。

是我自己写的,自带的函数需要定义自变量什么的,比较麻烦,我就没有用
7楼2012-05-31 13:31:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hongxiaodouy

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by xiegangmai at 2012-05-30 22:57:37
你是自己写的迭代算法吗?建议仔细检查一下你的程序。不满足收敛条件,不会退出的。
另外你可以用matlab自带的函数试试,对比一下。

电脑有点慢,就点了好几次,结果就回复了好几次~删不去~嘻~
8楼2012-05-31 13:33:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mataohk

银虫 (初入文坛)

【答案】应助回帖


xiegangmai: 金币+1, 谢谢参与 2012-10-05 20:45:53
估计是你自己程序的问题。其实一般问题都可以用Matlab自带的函数求解,比如:fsolve,fzero
9楼2012-09-29 15:25:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 hongxiaodouy 的主题更新
信息提示
请填处理意见