0

標準入力から線形連立方程式を読み取り、標準出力に解(存在する場合)を書き込むLinuxコマンドを知っている人はいますか?

私はこのようなことをしたい:

generate_system | solve_system
4

2 に答える 2

1

このパッケージを使用して、このような独自のコマンドを作成できる可能性があります。

于 2010-09-06T16:42:08.720 に答える
1

これは古い質問ですが、この問題の検索で表示されたので、ここに回答を追加します。

maximasolve関数を使用しました。入出力のラングリングはmaxima少し難しいですが、実行できます。

  1. 連立方程式をコンマ区切りのリストとして準備します。たとえば、EQs="C[1]+C[2]=1,C[1]-C[2]=2"。未知数の変数の解決策が欲しかったので、を使用C[n]しましたが、変数名を使用できます。
  2. 解決したい変数のリストを準備します-EQ_VARS="C[1],C[2]"
  3. Maximaはすべての入力をエコーし​​、行の折り返しを使用して、形式で解を返し[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出力を適切に処理することに注意してください。ゼロまたは複数のソリューションがある場合、出力は正しく解析されません。

于 2017-03-21T18:03:44.810 に答える