MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [求助]牛顿迭代法--我的数值哪去了? (https://www.labfans.com/bbs/showthread.php?t=6315)

eva08 2009-02-01 18:43

[求助]牛顿迭代法--我的数值哪去了?
 
我是初学者,刚碰到一个问题,我需要用牛顿迭代法得出从初始值到最后误差为8位小数的最后值。这些我都按理论老老实实的写了,但是不知道什么原因,答案显示有问题。
比如,我的初始值取得接近精确值,它可能需要10步就得出最后的近似值,那么我能看到所有的10个数据,这说明我的整个程序该是正确的吧。
但是,当我的初始值选得很远离精确值时,它可能就需要30或者更多步来完成,但是答案上却不显示所有的数据,而是每次都只显示了可能的最后一部分数据就没有了。而我需要用全部的数据来进行对比。
我是菜鸟,找了些书,也没提到这种情况怎么办才好。不知道有没有同学碰到过这种情况,帮帮我。

laohuiosa 2009-02-04 22:06

回复: [求助]牛顿迭代法--我的数值哪去了?
 
我想是因为初值离根太远,导致不收敛,所以迭代后出错。你在程序中加入一个迭代次数的变量,如果迭代次数超过,那就说明是初值迭代不收敛

eva08 2009-02-06 09:43

回复: [求助]牛顿迭代法--我的数值哪去了?
 
谢谢上面同学的回复。:lol:

可能我上面没有写明白,我的程序没有问题,取的初值都是可以保证收敛的。问题是出在答案的显示上,比如这个初值要运行30步才能完成,我能看到第20到30步的数值,也就是说最后的结果还是显示了,但是从最初值到第19步的数值却没显示。

最近发现把计算复杂化,比如 (n,n) Matrix A中,我以前习惯老是用n=100,现在用n=300,那么整个计算量就会相对大很多,整个运行过程也会相对来说慢很多,这时,所需的步骤也很大,但是我却能看到所有的数值了。

不知道是不是因为运行太快的缘故,还是别的原因,继续不解中:rolleyes:


所有时间均为北京时间。现在的时间是 03:29

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.