声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 969|回复: 3

[综合讨论] 求解非线性方程组出现NAN的值如何解决

[复制链接]
发表于 2008-5-3 21:30 | 显示全部楼层 |阅读模式

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

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

x


我采用了newton迭代法求解下面的非线性方程组,但是求解结果出现


x1 =
NaN +
NaNi
NaN +
NaNi
NaN +
NaNi
NaN +
NaNi


不知道如何解决,请教各位高手,谢谢了!

[ 本帖最后由 eight 于 2008-5-4 21:26 编辑 ]
111.bmp
回复
分享到:

使用道具 举报

发表于 2008-5-3 21:37 | 显示全部楼层

回复 楼主 的帖子

你啥都没有,别人怎么看呢:@L
发表于 2008-5-3 21:55 | 显示全部楼层
你一个方程怎么能求出四个未知数来呢
应该找到四个方程来求那四个未知数
 楼主| 发表于 2008-5-4 08:58 | 显示全部楼层

求助:求解值为NAN如何解决(迭代求解非线性方程组的问题)

我采用了newton迭代法求解下面的非线性方程组,但是求解结果出现


x1 =
NaN +
NaNi
NaN +
NaNi
NaN +
NaNi
NaN +
NaNi


不知道如何解决,请教各位高手,谢谢了!
昨天没有发好帖子,不好意思,还请各位老大帮忙!再次感谢!


采用计算:
x=newtonpro([300 0.3 5 0.3])

其中,[300 0.3 5 0.3]为[x(1) x(2) x(3) x(4)]迭代初值

原函数文件:
function y=f(x)
y(1)=x(1)*0.0563^x(2)+x(3)*log(1+x(4)*3594.1)-179.44;
y(2)=x(1)*0.1687^x(2)+x(3)*log(1+x(4)*5338.3)-306.19;
y(3)=x(1)*0.2543^x(2)+x(3)*log(1+x(4)*4176.4)-362.97;
y(4)=x(1)*0.3223^x(2)+x(3)*log(1+x(4)*3437.1)-384.78;

导函数文件:
function y=df(x)
y=[0.0563^x(2) x(1)*x(2)*0.0563^(x(2)-1) log(1+x(4)*3594.1) 3594.1*x(3)/(1+x(4)*3594.1);
   0.1687^x(2) x(1)*x(2)*0.1687^(x(2)-1) log(1+x(4)*5338.3) 5338.3*x(3)/(1+x(4)*5338.3);
   0.2543^x(2) x(1)*x(2)*0.2543^(x(2)-1) log(1+x(4)*4176.4) 4176.4*x(3)/(1+x(4)*4176.4);
   0.3223^x(2) x(1)*x(2)*0.3223^(x(2)-1) log(1+x(4)*3437.1) 3437.1*x(3)/(1+x(4)*3437.1)]

newton算法文件:
function y=newtonpro(x0)
x1=x0-f(x0)/df(x0);
n=1;
while(norm(x1-x0)>=1.0e-6)&(n<=1000)
    x0=x1;
    x1=x0-f(x0)/df(x0);n=n+1;
end;
x1
n

[ 本帖最后由 fengli84921 于 2008-5-4 09:07 编辑 ]
111.bmp
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-23 11:24 , Processed in 0.063439 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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