假设我有2个线性方程和3个变量。该解决方案至少是一维的。我希望Matlab通过根据另一个自由变量编写两个变量x1,x2,x3来找到所有解决方案。这可能吗?看来Matlab总是给我一个数值解。
在Mathematica中,“解决”功能始终返回包含所有解决方案的符号解决方案。但是我发现Matlab只是给我一个数值解,不是很有帮助。
答案 0 :(得分:3)
首先,定义要使用的符号变量:
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