如何解决Linux shell中的线性系统?

时间:2010-09-06 09:06:57

标签: linux shell linear-algebra equations

有没有人知道Linux命令从其标准输入读取线性方程组并将解决方案(如果存在)写入其标准输出中?

我想做这样的事情:

generate_system | solve_system

2 个答案:

答案 0 :(得分:1)

您可以使用this包编写自己的命令。

答案 1 :(得分:1)

这是一个老问题,但在我搜索此问题时出现了,所以我在这里添加答案。

我使用了maxima的{​​{1}}功能。将输入/输出与/ solve进行争夺是一个挑战,但可以做到。

  1. 将等式系统准备为以逗号分隔的列表 - 例如maxima。我想要一个针对未知数量变量的解决方案,所以我使用了EQs="C[1]+C[2]=1,C[1]-C[2]=2",但你可以使用变量名。
  2. 准备一个您想要解决的变量列表 - C[n]
  3. Maxima将回显所有输入,使用换行,并以EQ_VARS="C[1],C[2]"形式返回解决方案。我们需要解决所有这些问题。
  4. 合在一起,这就变成了

    [C[1]=...,C[2]=..]

    将解决方案值放入数组OUT_VALS=( \ $(maxima --very-quiet \ --batch-string="display2d:false\$linel:9999\$print(map(rhs,float(solve([$EQs],[$EQ_VARS]))[1]))\$" \ | tail -n 1 \ | tr -c '0-9-.e' ' ') )

    请注意,如果您的问题得到正确约束,这只会正确处理Maxima输出 - 如果您有零个或多个解决方案,则无法正确解析输出。