私はいくつかのJavaコードの結果である多変量方程式のシステムを解こうとしています。ランタイムの前には、フォームの数も変数の数も分かっていません。例はプログラムで多変量方程式系を解く方法は?
ZeroDivisionError: polynomial division
変数は区間[0,1]のすべてのあるエラーをスロー
(I) (e-a*d*e-b*d*e+2*b*d*f+2*b*d*e*g)/(-1+a*d+b*d)+f == 0
(II) e*g+((f+e*g)*a*d)/(-1+a*d+b*d)==0
(III) -e*h+((-f-e*g)*d)/(-1+a*d+b*d)==0
(IV) -e*j+((-f-e*g)*c)/(-1+a*d+b*d)==0
Iは、単に入力を返すSymjaを用いて試みたが、SymPy、であり、そしてなります私はすべての解決策が必要です。 Mathematicaはこれを解決することができますが、商用ソフトウェアであるため残念ながらこのプロジェクトでは使用できません。
使用するソフトウェアに関する推奨事項に感謝します。 SymPyが本当に好きだったのですが、なぜこのエラーが発生するのか分かりません。アイディアは高く評価されています。
from sympy.solvers import solve
from sympy.abc import a,b,c,d,e,f,g,h,j
lst = a,b,c,d,e,f,g,h,j
sys = [(e-a*d*e-b*d*e+2*b*d*f+2*b*d*e*g)/(-1+a*d+b*d)+f,e*g+((f+e*g)*a*d)/(-1+a*d+b*d),-e*h+((-f-e*g)*d)/(-1+a*d+b*d),-e*j+((-f-e*g)*c)/(-1+a*d+b*d)]
solution = solve(sys, lst)
print solution
Mathematicaのバージョンは次のとおりです:
eqn = {(e - a*d*e - b*d*e + 2*b*d*f + 2*b*d*e*g)/(-1 + a*d + b*d) + f == 0, e*g + ((f + e*g)*a*d)/(-1 + a*d + b*d) == 0, -e*h + ((-f - e*g)*d)/(-1 + a*d + b*d) == 0, -e*j + ((-f - e*g)*c)/(-1 + a*d + b*d) == 0};
Simplify[Solve[eqn, {a, b, c, d, e, f, g, h, j}]]
出力:場合
{{e -> 0, f -> 0},
{c -> (1 - 2 a d - 3 b d) j, f -> ((-1 + 2 a d + b d) e)/(-1 + 2 a d + 3 b d), g -> (a d)/(1 - 2 a d - 3 b d), h -> d/(1 - 2 a d - 3 b d)},
{a -> 0, c -> j - 3 b d j, f -> ((-1 + b d) e)/(-1 + 3 b d), g -> 0, h -> d/(1 - 3 b d)},
{a -> (1 - b d)/(2 d), c -> -2 b d j, f -> 0, g -> 1/4 - 1/(4 b d), h -> -(1/(2 b))}}
Mathematicaの表現とソリューションを投稿できますか? –
共通分母を乗算しようとしましたか?私はそれらのツールがそれを自動化する方法を与えると思いますが、結果を解決できるかどうかを手で確認することもできます。 – agentp
@agentpはいこれを試してみましたが、それでも問題はありませんでした。 – berndibus