2010-09-06 93 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輸出 - 如果您有零個或多個解決方案,輸出將不會被正確解析。