PDA

查看完整版本 : [求助]牛顿迭代法--我的数值哪去了?


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: