我需要解一个大的线性方程组。问题是,根据用户输入,方程的数量会发生变化。
作为一个具体的例子,假设我有两个方程,两个未知数。我可以写
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}