数学建模社区-数学中国

标题: [求助]求助!matlab求解复杂非线性方程组,急急急!!!在线等 [打印本页]

作者: laokang56970    时间: 2008-7-30 16:06
标题: [求助]求助!matlab求解复杂非线性方程组,急急急!!!在线等
各位大侠,我的课题现在遇到了大麻烦。课题中的一组三个方程组成的非线性方程组,没办法解出来,请求大家帮忙,我是新手,matlab不熟,这么复杂的方程组,我不知道如何下手啊。问题如下:
t(1:n)=[126,118,40,67,164,638,750,69,71,29,124,91,139,70,436,19,357,49,26,163,108,110];
n=22;
未知量:α、β、q!
- D( C0 E3 J5 z8 x( ~. v K) U
 
7 F0 A4 h1 v! o9 @, m2 F. W' U# q
大家帮忙看看,我的程序哪里出错了

9 v* A. C) @# l5 U K/ a ! C' n# \7 z8 s( [ 3 S8 N8 y; ?: U- T* q1 g
我自己编了个程序,不知道哪里出错了,一直是busy,不出结果,大家帮忙看看。拜托
方程见上:
程序如下:
function F = equation08729(x,y,z)  %x代表α;y代表β;z代表q
syms x y z
n=23;f1=0;f2=0;g2=0;h1=0;h2=0;h3=0;

t=[126,118,40,67,164,638,750,69,71,7,22,124,91,139,70,436,19,357,49,26,163,108,110];
for i=2:n
    for j=1:i-1
        f1=f1+t(j);
    end
    f2=f2+(t(i)+z*f1)^y-(z*f1)^y;
    g2=g2+log(t(i)+z*f1)-((t(i)+z*f1)/x)^y*log((t(i)+z*f1)/x)+(z*f1/x)^y*log(z*f1/x);
    h1=h1+f1/(t(i)+z*f1);
    h2=h2+f1^y;
    h3=h3+(t(i)+z*f1)^(y-1)*f1;
end
f3=y/x^(y+1)*f2+(y*(t(1)/x)^y-n-y+1)/x;
g3=n/y+log(t(1)/x)-(t(1)/x)^y*log(t(1)/x)+g2;
h4=(y-1)*h1+y*z^(y-1)/x^y*h2-y/x^y*h3;

F=[f3;g3;h4];
%%%[x0,y0,z0] = [80; 1;0.5];           % Make a starting guess at the solution
%%%x0=80;y0=1;z0=0.5;
options=optimset('Display','iter');   % Option to display output
set(0,'RecursionLimit',10000);
[x,y,z] = fsolve(@equation08729,[80,1,0.5],options);  % Call optimizer
[attach]5629[/attach]
[attach]5630[/attach]

方程一.jpg.jpg (70.5 KB, 下载次数: 199)

方程一.jpg

方程一.jpg

方程二.jpg.jpg (140.12 KB, 下载次数: 231)

方程二.jpg

方程二.jpg


作者: laokang56970    时间: 2008-7-30 16:07
[attach]5631[/attach]

方程三.jpg.jpg (101.56 KB, 下载次数: 203)

方程三.jpg

方程三.jpg


作者: liwenhui    时间: 2008-7-30 22:35

我在程序里没找到错误,也不存在死循环,你的方程复杂,可能需要一点时间才能算出来。我也经常碰到方程复杂的情况,常常是算上半小时也出不了结果,程序编制好了,到最后往往是拼计算机的配置高低。试试别的方法,数值方法逼近试试。


作者: laokang56970    时间: 2008-7-31 09:08
一定是程序有问题,我运行半天都没有反应,有时候程序还会自动退出,版主帮忙仔细看看
作者: liwenhui    时间: 2008-7-31 18:02

没有死循环呀!






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5