有谁知道Linux命令从其标准输入中读取线性方程组,并在其标准输出中写入解决方案(如果存在)?如何在Linux shell中解决线性系统问题?
我想要做这样的事情:
generate_system | solve_system
有谁知道Linux命令从其标准输入中读取线性方程组,并在其标准输出中写入解决方案(如果存在)?如何在Linux shell中解决线性系统问题?
我想要做这样的事情:
generate_system | solve_system
可以使用this包可能会写自己这样的命令。
这是一个老问题,但在我搜索这个问题时出现,所以我在这里添加一个答案。
我用maxima
的solve
函数。将输入/输出与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输出 - 如果您有零个或多个解决方案,输出将不会被正确解析。