2010-09-06 47 views

回答

1

可以使用this包可能会写自己这样的命令。

0

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

我用maximasolve函数。将输入/输出与maxima相匹配是一项挑战,但可以完成。

  1. 准备等式系统作为逗号分隔列表 - 例如,EQs="C[1]+C[2]=1,C[1]-C[2]=2"。我想为未知数量的变量提供解决方案,所以我使用C[n],但可以使用变量名称。
  2. 准备要解决的变量列表 - EQ_VARS="C[1],C[2]"
  3. 千里马将回显所有输入,使用换行,并在窗体[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输出 - 如果您有零个或多个解决方案,输出将不会被正确解析。