有谁知道 Linux 命令从其标准输入中读取线性方程组并将解(如果存在)写入其标准输出中?
我想做这样的事情:
generate_system | solve_system
有谁知道 Linux 命令从其标准输入中读取线性方程组并将解(如果存在)写入其标准输出中?
我想做这样的事情:
generate_system | solve_system
您可能可以使用此包编写自己的此类命令。
这是一个老问题,但在我搜索这个问题时出现了,所以我在这里添加一个答案。
我使用了maxima
'ssolve
函数。争吵输入/输出到/从maxima
是一个挑战,但可以做到。
EQs="C[1]+C[2]=1,C[1]-C[2]=2"
. 我想要一个未知数量的变量的解决方案,所以我使用了C[n]
,但你可以使用变量名。EQ_VARS="C[1],C[2]"
[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 输出——如果您有零个或多个解决方案,则输出将不会被正确解析。