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