使用solve()时出错:单个字符变量名称有效,但更长的名称会出错

时间:2015-12-10 13:30:11

标签: matlab

有人知道为什么这段代码:

syms pi41 r C2 sigma mu C3 theta
pi41 = solve('(-2*pi41-2*r*C2+3*(sigma^2-2*mu)/sigma*C3)*theta^2','pi41')

有这样的错误:

Error using mupadengine/feval (line 163)
Invalid argument.

Error in solve (line 294)

sol = eng.feval('solve', eqns, vars, solveOptions);

但是使用像这样的代码的简单字符:

syms a b c d e f x
x = solve('(-2*x-2*a*b+3*(d^2-2*e)/d*c)*f^2','x')

没有?

我会感激任何帮助。

1 个答案:

答案 0 :(得分:0)

构建两个向量,一个包含方程,另一个包含未知数

syms foo bar
eq = [  foo + bar == 5; 
      2*foo - bar == 4];
unknowns = [foo, bar];

然后使用solve

sol = solve(eq, unknowns)

或在你的情况下

syms pi41 r C2 sigma mu C3 theta
eq = (-2*pi41-2*r*C2+3*(sigma^2-2*mu)/sigma*C3)*theta^2 == 0;
unknowns = [pi41];
sol = solve(eq, unknowns);

结果

sol =
- C2*r - (C3*(- 3*sigma^2 + 6*mu))/(2*sigma)

你也可能想要指定/确保sigma不为零....

...在Matlab 2015b

相关问题