假设我有2个线性方程和3个变量。解决方案至少是一维的。我希望Matlab通过将变量x1、x2、x3中的两个写成另一个自由变量来找到所有的解。这可能吗?似乎Matlab总是给我一个数值解。
在Mathematica中,"solve"函数总是返回一个包含所有解的符号解。但我发现Matlab只给了我一个数值解,这对我没有太大帮助。
首先定义要使用的符号变量:
syms x y z;
然后定义每个方程式。若你们有矩阵形式的线性系统,用for循环创建方程。
eqns = [x + y + z == 1, x + 2*y + 3*z == 2];
定义变量:
vars = [x, y, z];
最后,用solve
求解,将ReturnConditions
设置为true
。以这种方式求解,返回所有可能的解决方案。
[solx, soly, solz, param, conds] = solve(eqns, vars, 'ReturnConditions', true);
它为上面的例子提供了以下解决方案:
solx =
z1
soly =
1 - 2*z1
solz =
z1
param =
z1