- 締切済み
代数学 方程式に任意の数字を入れて残りの変数を出す
y= a・x + b (y:定数) という式があったとして、右辺にある任意の2変数に文字を入れて残りの変数を決定したいと思います。 yと一致しなかったら計算打ち切りという処理にしたいのですが、問題は式の本数と変数の個数が1000個以上あるのです。(できれば式と変数の数を任意とする関数を書きたい) 上記の例なら a = (y-b)/x x = (y-b)/a b = y - ax と全部場合分けすることもできなくはないですが、変数が1000個となると全部人間が場合分けするのは非現実的です。 なにか良いアルゴリズムないでしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- ki073
- ベストアンサー率77% (491/634)
CやFortranでしたら、質問欄のようなやり方がいいように思います。 式が複雑で、解の式が簡単には出せないのなら、数値的に根を求められるライブラリを利用する方法もあります。 例えば http://ja.wikipedia.org/wiki/GNU_Scientific_Library Cにこだわらないのでしたらmximaを使うのが一番簡単だと思います。 http://maxima.sourceforge.net 方程式の解き方を解説したた日本語のサイトがいっぱいありますので、検索してみてください。 maximaに直接コマンドをして渡しその結果を標準出力に出することができます。 他のソフトで利用を考えたときには良いように思います。 例えば maxima --very-quiet --batch-string="float(solve([5=2*x+6], x));" とすると標準出力には float(solve([5 = 2 x + 6], x)) [x = - 0.5] と出てきます。