0

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

我想做这样的事情:

generate_system | solve_system
4

2 回答 2

1

您可能可以使用此包编写自己的此类命令。

于 2010-09-06T16:42:08.720 回答
1

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

我使用了maxima'ssolve函数。争吵输入/输出到/从maxima是一个挑战,但可以做到。

  1. 将方程组准备为逗号分隔的列表 - 例如,EQs="C[1]+C[2]=1,C[1]-C[2]=2". 我想要一个未知数量的变量的解决方案,所以我使用了C[n],但你可以使用变量名。
  2. 准备一个你想解决的变量列表——EQ_VARS="C[1],C[2]"
  3. Maxima 将回显所有输入,使用换行,并以[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' ' ') )

这会将解决方案值放入数组$OUT_VALS中。

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

于 2017-03-21T18:03:44.810 回答