前言: 朋友使用的 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);
完成。