fengli84921 发表于 2008-5-3 21:30

求解非线性方程组出现NAN的值如何解决



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


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

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

[ 本帖最后由 eight 于 2008-5-4 21:26 编辑 ]

sigma665 发表于 2008-5-3 21:37

回复 楼主 的帖子

你啥都没有,别人怎么看呢:@L

dlbsyp 发表于 2008-5-3 21:55

你一个方程怎么能求出四个未知数来呢
应该找到四个方程来求那四个未知数

fengli84921 发表于 2008-5-4 08:58

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

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


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

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


采用计算:
x=newtonpro()

其中,为迭代初值

原函数文件:
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 编辑 ]
页: [1]
查看完整版本: 求解非线性方程组出现NAN的值如何解决