標準入力から線形連立方程式を読み取り、標準出力に解(存在する場合)を書き込むLinuxコマンドを知っている人はいますか?
私はこのようなことをしたい:
generate_system | solve_system
標準入力から線形連立方程式を読み取り、標準出力に解(存在する場合)を書き込むLinuxコマンドを知っている人はいますか?
私はこのようなことをしたい:
generate_system | solve_system
このパッケージを使用して、このような独自のコマンドを作成できる可能性があります。
これは古い質問ですが、この問題の検索で表示されたので、ここに回答を追加します。
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出力を適切に処理することに注意してください。ゼロまたは複数のソリューションがある場合、出力は正しく解析されません。