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