登录论坛

查看完整版本 : [MATLAB数学相关] 【求助】各位大虾,帮忙解一个三元方程,谢谢了


abxyz06
2009-09-29, 12:39
对matlab不熟悉,由于临时需要做一个方程组的求解才开始接触这个软件。方程组如下图,我解出结果后,将结果代回原先的方程组,方程两边却不相等。不知道为什么。
有哪位大虾能帮忙解一下这个方程组,最好能给出matlab代码,非常感谢~~~
http://www.labfans.com/bbs/attachment.php?attachmentid=2151&stc=1&d=1254199080
下面是我编写的m文件,其中x(1),x(2),x(3)分别对应上图中的R1、R2、R3:
function Test
clc
clear

options=optimset('Display','off');
options.TolFun=1e-30;
options.TolX=1e-16;

x0=[0.4;0.4;0.4]; %初值
[x,fval]=fsolve(@mf,x0,options)


function F=mf(x)
b0=0.611553; b1=1.746500; b2=1.860016; u = 6;
F = [1.0/(x(1)*x(2)*x(3))-b0;1.0/(x(1)*x(2))+(2-u)/(x(1)*x(3))+(3-u)/(x(2)*x(3))-b1;2.0/x(2)+(2-u)/x(3)+1.0/x(1)-b2];

得出的结果:
x =

0.7567
1.2281
11.1929


fval =

-0.5154
-1.3610
0.7326

可以看出,这三个x如果代回到第一个方程中,方程两边根本就不相等,而且差很多。
另外,不明白这个fval代表什么意思,是做什么的。

希望各位大虾帮帮忙解一下这个方程,再次感谢~~~

anbcjys
2009-09-30, 08:52
是因为迭代次数达到了 所以没有找到要求范围内的数值 修改相应的options即可

abxyz06
2009-10-06, 08:03
谢谢楼上,我对matlab刚刚开始学习,很生疏,请问修改options中的哪个参数呢,要修改为多大呢?

anbcjys
2009-10-06, 08:15
help fsolve .