Wolfram mathematica 如何将Solve[]用于可变数量的方程?

Wolfram mathematica 如何将Solve[]用于可变数量的方程?,wolfram-mathematica,Wolfram Mathematica,我需要解一个大的线性方程组。问题在于,根据用户的输入,方程式的数量会有所不同 作为一个具体的例子,假设我有两个未知的方程。我会写字 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 = {

我需要解一个大的线性方程组。问题在于,根据用户的输入,方程式的数量会有所不同

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

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}}
*)

(感谢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}

如果有明确的数组示例,其中eqn和vars存储在hanks acl中,这将非常有用。我花了几个小时想弄明白这一点。回答您的问题,是的,我是mathematica的新手。@用户什么,几小时后@您从未想到过??)我同意一开始在mathematica中很难计算出如何做简单的事情。@acl,回顾我的答案;如果您同意
和@@
是无关的,并且您相应地更新了您的问题,我将删除我的问题。