声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1402|回复: 12

[编程技巧] 两变数牛顿迭代的荒谬问题

[复制链接]
发表于 2009-3-24 23:08 | 显示全部楼层 |阅读模式

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

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

x
function [y,n]=newd(x0,eps)
%这是一个用牛顿迭代法求解非线性方程组近似解的函数%
%x0是迭代的初值向量,esp为精度。[y,n]中y为近似解,n为迭代次数%
if nargin==2, eps=1.0e-6
   elseif nargin<2, error; return; end
x1=x0-fnew(x0)/diff(fnew(x0)); j=1;
while(norm(x1-x0)>=1.0e-6)&(j<10000)
    x0=x1; x1=x0-fnew(x0)/diff(fnew(x0)); j=j+1;
end
    y=x0; n=j;
调用这个求解
function y=fnew(x)
y(1)=x(1)*x(1)-8*x(1)+x(2)*x(2)+6; y(2)=4*x(1)-8*x(2)+6;
y=[y(1) y(2)];
结果是程序无限运行,如果将j<100的话,得出的结果又很荒谬。其实只需迭代10次就可以得出结果y=[1.1224 1.3112]
我的MATLB是7.04版本的  是程序的问题还是版本的问题呀?

[ 本帖最后由 ChaChing 于 2009-5-2 10:09 编辑 ]
回复
分享到:

使用道具 举报

发表于 2009-3-25 08:02 | 显示全部楼层
检查程序 他是不会计算错的 可能是程序有问题 看看是否是你需要的思路
 楼主| 发表于 2009-3-25 08:45 | 显示全部楼层
程序已经都在上面了 是我从书上抄下来的一个例子,也差不多是我需要的
发表于 2009-3-25 08:49 | 显示全部楼层
有些书上的东西可能会有错误。一般来说,经典方法是不会有问题的。
 楼主| 发表于 2009-3-25 08:55 | 显示全部楼层
我抄的程序全部在上面,那位可不可以帮忙检查一下,看是那里出错了。我昨晚检查了一晚上就是不知道那里出错了。
发表于 2009-3-25 11:41 | 显示全部楼层
牛顿迭代学生时代玩过, 但时间久远已经模糊了! 又懒得查证
书上的例子也是针对两个变数吗? 单变数牛顿迭代可以使用在两变数吗?

[ 本帖最后由 ChaChing 于 2009-3-25 22:51 编辑 ]
 楼主| 发表于 2009-3-25 12:29 | 显示全部楼层
是的呀,我这是照搬的,一字不差!:@Q
发表于 2009-3-25 13:36 | 显示全部楼层
你把迭代精度放宽一点试试。
 楼主| 发表于 2009-3-25 16:33 | 显示全部楼层
有试过   还是一样会出错。运行的结果都是有的   只是结果根本一点可信度都没有
发表于 2009-3-25 19:26 | 显示全部楼层
刚google下, LZ的程序流程好像根本不正确!
还有为何要自己写, 不是有现成的!?
fsolve('fnew',[0,0])
Optimization terminated: first-order optimality is less than options.TolFun.
ans =
    1.1224    1.3112

[ 本帖最后由 ChaChing 于 2009-3-25 22:50 编辑 ]
发表于 2009-3-25 22:56 | 显示全部楼层
function [y,n]=newd(x0,eps)
if nargin<2, eps=1.0e-6;
elseif nargin>2 | nargin<1, error('input error!!'); return; end
x0=x0(:); j=1; [fx,jacob]=fnew(x0); x1=x0-jacob\fx;
while(norm(x1-x0)>=1.0e-6) & (j<10000)
    x0=x1; j=j+1; [fx,jacob]=fnew(x0); x1=x0-jacob\fx;
end
y=x0; n=j;

function [y,J]=fnew(x)
y(1)=x(1)*x(1)-8*x(1)+x(2)*x(2)+6; y(2)=4*x(1)-8*x(2)+6;
y=[y(1); y(2)]; J=[2*x(1)-8, 4; 2*x(2), -8];

[ 本帖最后由 ChaChing 于 2009-5-2 10:14 编辑 ]
发表于 2009-3-25 23:02 | 显示全部楼层

回复 7楼 liushuiwuxin 的帖子

若真是那本书原有的例子, 且楼主没误用的话!
那真想建议LZ换一本了, 有点不负责!:@)
 楼主| 发表于 2009-3-26 09:03 | 显示全部楼层
差不多是这样啦?非常感谢!!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-17 11:57 , Processed in 0.078391 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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