Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2013-09-13
年龄: 37
帖子: 1
声望力: 0 ![]() |
![]()
现在有这样一个方程组需要求解,麻烦各位路过大神提供一下帮助,谢谢!
D=A(α+2δD)^m[3/2(μξ^2)+(3μ+9λ/2)ε^2]^m 其中α+δ=1,还有D,ξ,ε,μ,λ是已知的,求解m,A,α,δ。 已知的数据都各有四组数据,是一个四元方程组。怎么使用Matlab怎么求解,谢谢各位指导指导! |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2013-09-19
帖子: 3
声望力: 0 ![]() |
![]()
可以用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)的关系。 命令行下,输入: x0=ones(1,4);%迭代法需要初始值,这里随便设个[1 1 1 1]示意一下,建议要尽量接近真实的[m A α δ] x=fsolve(@rootegBfun,x0,optimset('Display','off')); 按照上面的,应该可以求出来。 |
![]() |
![]() |