前言: 朋友使用的 matlab 2019 ,我用的 matlab 2014b 。我跟他说了一种解方程组方式,但是 2019 版本已经不再适用。我帮助他解决了这个问题。

他的 matlab 报错如下:

错误使用 solve>getEqns (line 418)
List of equations must not be empty.

出错 solve (line 226)
[eqns, vars, options] = getEqns(varagin[:]);

他的程序如下:

syms x y z

eq1 = 'x^2 + sin(y) - z = 100';
eq2 = 'x - y + z = 5';
eq3 = 'x * z + cos(y) = 6 * z';

[x, y, z] = solve(eq1, eq2, eq3, 'x', 'y', 'z');

问题出在:matlab 2019 中已经不接受向 solve 中传入字符串。我们需要对方程组改进如下:

  • eq 赋值时去掉等号;
  • 表示公式的等式中的 = 改成 == 表示条件判断;
  • solve 中去掉符号的单引号。

即如下:

syms x y z

eq1 = x^2 + sin(y) - z == 100;
eq2 = x - y + z == 5;
eq3 = x * z + cos(y) == 6 * z;

[x, y, z] = solve(eq1, eq2, eq3, x, y, z);

完成。