Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2008-07-16
年龄: 42
帖子: 4
声望力: 0 ![]() |
![]()
我是初学者,刚碰到一个问题,我需要用牛顿迭代法得出从初始值到最后误差为8位小数的最后值。这些我都按理论老老实实的写了,但是不知道什么原因,答案显示有问题。
比如,我的初始值取得接近精确值,它可能需要10步就得出最后的近似值,那么我能看到所有的10个数据,这说明我的整个程序该是正确的吧。 但是,当我的初始值选得很远离精确值时,它可能就需要30或者更多步来完成,但是答案上却不显示所有的数据,而是每次都只显示了可能的最后一部分数据就没有了。而我需要用全部的数据来进行对比。 我是菜鸟,找了些书,也没提到这种情况怎么办才好。不知道有没有同学碰到过这种情况,帮帮我。 |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2009-01-15
年龄: 36
帖子: 15
声望力: 17 ![]() |
![]()
我想是因为初值离根太远,导致不收敛,所以迭代后出错。你在程序中加入一个迭代次数的变量,如果迭代次数超过,那就说明是初值迭代不收敛
|
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2008-07-16
年龄: 42
帖子: 4
声望力: 0 ![]() |
![]()
谢谢上面同学的回复。:lol:
可能我上面没有写明白,我的程序没有问题,取的初值都是可以保证收敛的。问题是出在答案的显示上,比如这个初值要运行30步才能完成,我能看到第20到30步的数值,也就是说最后的结果还是显示了,但是从最初值到第19步的数值却没显示。 最近发现把计算复杂化,比如 (n,n) Matrix A中,我以前习惯老是用n=100,现在用n=300,那么整个计算量就会相对大很多,整个运行过程也会相对来说慢很多,这时,所需的步骤也很大,但是我却能看到所有的数值了。 不知道是不是因为运行太快的缘故,还是别的原因,继续不解中 ![]() |
![]() |
![]() |
![]() |
主题工具 | |
显示模式 | |
|
|
![]() |
||||
主题 | 主题作者 | 版面 | 回复 | 最后发表 |
[MATLAB数学相关] 请问这个过程应该怎么模拟 | lonelyrex | MATLAB论坛 | 2 | 2009-04-16 14:57 |
[求助]求解方程的问题 | 一个人的旅行 | MATLAB论坛 | 3 | 2009-03-25 16:00 |
[求助]求识别水果种类的方法!!! | george19868 | MATLAB论坛 | 2 | 2009-01-09 19:28 |
[求助]关于PLS程序主成分的确定问题 | yiouyang | MATLAB论坛 | 0 | 2008-12-17 15:59 |