楼主: victorliou
8960 6

[问答] 用matlab求非线性方程组的解,为何解都不能使第二个方程成立? [推广有奖]

  • 8关注
  • 5粉丝

已卖:1248份资源

副教授

11%

还不是VIP/贵宾

-

威望
0
论坛币
27434 个
通用积分
17.6934
学术水平
11 点
热心指数
6 点
信用等级
10 点
经验
15284 点
帖子
567
精华
0
在线时间
557 小时
注册时间
2005-9-21
最后登录
2025-9-8

楼主
victorliou 发表于 2012-4-13 19:59:34 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
用matlab求非线性方程组的解,但是求得的解代入第2、3、4个方程后,其方程都不等于0,为什么?



第一步,myfun.m如下:
function F = myfun(x)
F=9.1-(6.02)*(1+x(2)*exp(4*x(3)))*(x(4)^1.5-1)/(x(1)*x(2)*exp(4*x(3)));
14.2-(16.82)*(1+x(2)*exp(14*x(3)))*(x(4)^1.5-1)/(x(1)*x(2)*exp(14*x(3)));
8.4-(44.02)*(1+x(2)*exp(22*x(3)))*(x(4)^1.5-1)/(x(1)*x(2)*exp(22*x(3)));
10.4-(127.39)*(1+x(2)*exp(32*x(3)))*(x(4)^1.5-1)/(x(1)*x(2)*exp(32*x(3)));
第二步:
x0 = [1;1;0.01;1];
options=optimset('Display','iter');
[x,fval] = fsolve(@myf,x0,options)  % Call solver

结果为:
Warning: Trust-region-dogleg algorithm of FSOLVE cannot handle non-square systems; using Levenberg-Marquardt
algorithm instead.
> In fsolve at 314

                                        First-Order                    Norm of
Iteration  Func-count    Residual       optimality      Lambda           step
     0           5           82.81             161         0.01
     1          10         1.17548            23.6        0.001       0.513936
     2          15       0.0031149            1.14       0.0001      0.0342564
     3          20    2.61253e-008          0.0033       1e-005     0.00195934
     4          25    1.85746e-018       2.78e-008       1e-006   5.70737e-006
     5          30    3.15544e-030       3.62e-014       1e-007   4.81251e-011

Equation solved.

fsolve completed because the vector of function values is near zero
as measured by the default value of the function tolerance, and
the problem appears regular as measured by the gradient.

<stopping criteria details>


x =

    1.0116
    1.0057
    0.0328
    1.4889


fval =

  1.7764e-015

第三步:代入第二个方程
r2=(16.82)*(1.0057+1.0057*exp(14*0.0328))*(1.4889^1.5-1)/((1.0116*1.0057)*exp(14*0.0328))

r2 =

   22.1604

根据第二个方程这个值应当是14.2。所以有问题?为什么呢?

谢谢了












二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:非线性方程组 MATLAB matla 线性方程组 非线性方程 matlab 方程组

沙发
sunyongfirst 发表于 2012-4-13 20:14:47
是不是表达式写错了。

藤椅
victorliou 发表于 2012-4-13 20:34:25
能具体点儿吗?

板凳
jyliao 发表于 2012-4-14 09:32:47
F should be a vector function....
function F = myfun(x)
F=[ 9.1-(6.02)*(1+x(2)*exp(4*x(3)))*(x(4)^1.5-1)/(x(1)*x(2)*exp(4*x(3))); ...
14.2-(16.82)*(1+x(2)*exp(14*x(3)))*(x(4)^1.5-1)/(x(1)*x(2)*exp(14*x(3))); ...
8.4-(44.02)*(1+x(2)*exp(22*x(3)))*(x(4)^1.5-1)/(x(1)*x(2)*exp(22*x(3))); ...
10.4-(127.39)*(1+x(2)*exp(32*x(3)))*(x(4)^1.5-1)/(x(1)*x(2)*exp(32*x(3))) ];

But, still not solvable!
Check your expression

报纸
victorliou 发表于 2012-4-14 22:25:46
根据jyliao的建议,成功求解,谢谢!!!

地板
victorliou 发表于 2012-4-14 22:26:37
能推荐一本书吗?中英文均可!

7
aibieli731001 发表于 2012-4-14 22:37:18
victorliou 发表于 2012-4-14 22:26
能推荐一本书吗?中英文均可!
这方面的书很多,比如:MATLAB数值分析与应用。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-5 05:27