24小时热门版块排行榜    

查看: 810  |  回复: 3

zhufu777

新虫 (初入文坛)

[求助] matlab求解非线性方程组

先建立M文件L501如下
function ms=L501(X)
ms(1)=400-106670*(X(2)^2+0.33*X(1)^2*X(3)^2)^0.5;
ms(2)=17542*X(1)^2-13740*X(2)*((X(2)^2+5.3*X(1)^2)^0.57-(X(2)^2+0.33*X(1)^2*X(3)^2)^0.57);                                                     
ms(3)=35125*X(1)^3-4971.5*((X(2)^2+5.3*X(1)^2)^1.57-(X(2)^2+0.33*X(1)^2*X(3)^2)^1.57)+13740*X(2)^2*((X(2)^2+5.3*X(1)^2)^0.57-(X(2)^2+0.33*X(1)^2*X(3)^2)^0.57);

然后是运行程序
fsolve('L501',[1 1 1])
ans =
    0.0140    0.0037    0.0347


fsolve('L501',[0.1 0.1 0.1])

ans =
    0.0122    0.0037    0.0009
不同初值,结果相差很大,怎么办啊,到底应该取什么初值啊??
谁能帮我求一下解。谢谢

只有6个金币。给5个吧
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

qq839767816
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zsy312

银虫 (小有名气)

【答案】应助回帖

你算的结果不对,三个函数分别是5.32043, 1.82239, -0.00181376,明显偏大了。
我用mathematica算的结果差异比较大的有四组解
CODE:
{x -> -0.000708432, y -> -0.00289383,  z -> 5.86005},
{x -> -6.3323*10^-6, y -> 0.00374988,  z -> 1.10622},
{x -> -6.3323*10^-6, y -> 0.00374988, z -> -1.10622},
{x -> -0.000708432, y -> -0.00289383, z -> -5.86005}

代码(初始值随机生成,大量搜寻):
CODE:
n = 300; err = 10^-10;
s = Table[{}, {i, n}];
For[i = 1, i <= n, i++, rand = RandomReal[{-10, 10}, 3];
  (s[[i]] =
     FindRoot[{400 - 106670 (0.33 x^2 z^2 + y^2)^0.5 == 0,
       17542 x^2 -
         13740 y ((5.3 x^2 + y^2)^0.57 - (0.33 x^2 z^2 + y^2)^0.57) ==
         0, 35125 x^3 +
         13740 y^2 ((5.3 x^2 + y^2)^0.57 - (0.33 x^2 z^2 +
              y^2)^0.57) -
         4971.5 ((5.3 x^2 + y^2)^1.57 - (0.33 x^2 z^2 + y^2)^1.57) ==
        0}, Transpose[{{x, y, z}, rand}]]) // Quiet;];
s1 = {};
For[i = 1, i <= n, i++,
  If[Norm[{400 - 106670 (0.33 x^2 z^2 + y^2)^0.5,
       17542 x^2 -
        13740 y ((5.3 x^2 + y^2)^0.57 - (0.33 x^2 z^2 + y^2)^0.57),
       35125 x^3 +
        13740 y^2 ((5.3 x^2 + y^2)^0.57 - (0.33 x^2 z^2 +
             y^2)^0.57) -
        4971.5 ((5.3 x^2 + y^2)^1.57 - (0.33 x^2 z^2 + y^2)^1.57)} /.
      s[[i]]] <= err, s1 = PrependTo[s1, s[[i]]]]];
{Length[s1], s1}
Table[{400 - 106670 (0.33 x^2 z^2 + y^2)^0.5,
   17542 x^2 -
    13740 y ((5.3 x^2 + y^2)^0.57 - (0.33 x^2 z^2 + y^2)^0.57),
   35125 x^3 +
    13740 y^2 ((5.3 x^2 + y^2)^0.57 - (0.33 x^2 z^2 + y^2)^0.57) -
    4971.5 ((5.3 x^2 + y^2)^1.57 - (0.33 x^2 z^2 + y^2)^1.57)} /.
  s1[[i]], {i, Length[s1]}]

2楼2012-11-04 12:47:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zsy312

银虫 (小有名气)

误差精度限制在了10^-10之内,所以还是比较理想的。
3楼2012-11-04 12:49:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

此道题本身特殊,除了x2等于正负0.00374988281616199是固定的外,x1等于0,x3可以等于任何数,因此有无穷多组解。
4楼2012-11-04 14:59:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zhufu777 的主题更新
信息提示
请填处理意见