MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   [MATLAB数学相关] 复杂的方程组求解 (https://www.labfans.com/bbs/showthread.php?t=19024)

longking0212 2013-09-13 18:55

复杂的方程组求解
 
现在有这样一个方程组需要求解,麻烦各位路过大神提供一下帮助,谢谢!
D=A(α+2δD)^m[3/2(μξ^2)+(3μ+9λ/2)ε^2]^m
其中α+δ=1,还有D,ξ,ε,μ,λ是已知的,求解m,A,α,δ。
已知的数据都各有四组数据,是一个四元方程组。怎么使用Matlab怎么求解,谢谢各位指导指导!

liuyunfeng 2013-09-19 08:56

回复: 复杂的方程组求解
 
可以用fsolve解非线性方程组。
需要自建一个M文件,编入方程组。
另外,用fsolve的话,几个未知量就用几个方程组,你的α+δ=1求解时可能用不到,但是可以用来验证结果。
比如你的方程D=A(α+2δD)^m[3/2(μξ^2)+(3μ+9λ/2)ε^2]^m,
将四组已知的D,ξ,ε,μ,λ代入方程,得到4个未知量为m,A,α,δ的方程。
将方程变换为XXX=0的形式,0在左边。
未知量为x矩阵,x实际为[m A α δ],将上面得到的4个方程中的m,A,α,δ替换为x(1)、x(2)、x(3)、x(4),四个方程左边的的0分别替换为y(1)、y(2)、y(3)、y(4)。
这样,新建M文件,写入上面的4个方程:

[CODE]function y=rootegBfun(x)
y(1)=XXX;
y(2)=XXX;
y(3)=XXX;
y(4)=XXX; %其中都已经替换为x(1)、x(2)、x(3)、x(4)的关系。[/CODE]
保存为rootegBfun.m
命令行下,输入:
x0=ones(1,4);%迭代法需要初始值,这里随便设个[1 1 1 1]示意一下,建议要尽量接近真实的[m A α δ]
x=fsolve(@rootegBfun,x0,optimset('Display','off'));
按照上面的,应该可以求出来。


所有时间均为北京时间。现在的时间是 13:41

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.