在联立方程组中,Matlab [版本R2016a]找到了一个解决方案 - 但是当我向系统添加一个额外的(和解决方案不相关的)方程时,却找不到这个(仍然有效的)解决方案。
这是我的代码(更简单的版本):
syms g p l h1 h2 h3
% set assumptions
g=0;
assume(0<p<1);
assume(0<l<1);
assume(0<h1<1);
assume(0<h2<1);
assume(0<h3<1);
assumeAlso(h2<h1);
assumeAlso(h3<h2);
% equations
H1 = g^2+2*g*p*l*p/(1-g*l)+p^2*l^2;
H2 = g^2*(H1)+2*g*p^2*l^3 + 2*g^2*p^2*l^2/(1-g*l) + p^2*l^4;
H3 = g^2*(H2)+2*g*p^2*l^5 + 2*g^2*p^2*l^4 + 2*g^3*p^2*l^3/(1 - g*l) + p^2*l^6;
现在,仅使用前两个方程式就可以得到两个参数的解决方案
solve([H1-h1,H2-h2],[l,p])
solution =
l: [1x1 sym]
p: [1x1 sym]
ans = h2^(1/2)/h1^(1/2) ans = h1/h2^(1/2)
但&#34;提供&#34;所有三个方程到Matlab,我都找不到解决方案。任何人都知道为什么会这样?我对Matlab不太熟悉,所以我可能会错过一些基本的东西。
solution=solve([H1-h1,H2-h2,H3-h3],[l,p])
solution =
l: [0x1 sym]
p: [0x1 sym]