主题: [MATLAB数学相关] 复杂的方程组求解
查看单个帖子
旧 2013-09-19, 08:56   #2
liuyunfeng
初级会员
 
注册日期: 2013-09-19
帖子: 3
声望力: 0
liuyunfeng 正向着好的方向发展
微笑 回复: 复杂的方程组求解

可以用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个方程:

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