如何使用Solve[]求解变量数量的方程



我需要解一个大的线性方程组。问题是,根据用户输入,方程的数量会发生变化。

作为一个具体的例子,假设我有两个方程,两个未知数。我可以写

Solve[{x+y==1&&2x+2y==3},{x,y}]

有没有一种方法,我可以推广上述解决任何数量的方程和变量,而不必明确地键入一切?我的方程和变量存储在数组中

语法将取决于您存储它们的形式。例如,如果您有

eqns = {x - y == 1, 2 x + 2 y == 3, 5*x - 3*y - z == 2}
vars = {x, y, z}

那么你可以做

Solve[eqns, vars]
(*
{{x -> 5/4, y -> 1/4, z -> 7/2}}
*)

(感谢Mr.Wizard提醒我正确的语法)

除了Acl所写的,您还可以使用LinearSolve:

我正在借用Acl数据

Remove["Global`*"];
eqns = {x - y == 1, 2 x + 2 y == 3, 5*x - 3*y - z == 2}
vars = {x, y, z}
A = CoefficientArrays[eqns, vars];
sol = LinearSolve[A[[2]], -A[[1]]]

,

{5/4, 1/4, 7/2}
In[135]:= Thread[vars->sol]
Out[135]= {x->5/4,y->1/4,z->7/2}

最新更新