我需要解决一个庞大的线性方程组。问题是,根据用户输入,方程的数量会有所不同。
作为一个具体的例子,假设我有两个未知数的方程。我可以写
Solve[{x+y==1&&2x+2y==3},{x,y}]
有没有办法可以将上述求解概括为任意数量的方程式和变量而无需明确地输出所有内容?我的方程和变量存储在数组中。
答案 0 :(得分:3)
语法取决于存储它们的形式。例如,如果你有
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提醒我正确的语法)
答案 1 :(得分:2)
除了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}