あなたが何をしようとしているのか、まだ完全にはわかりません。コード作成時に代数方程式を解きたい場合は、Wolfram Alpha が非常に便利です。 2F2+t%5E2+%3D%3D+q1+%2B+v1+t+%2B+a1%2F2+t%5E2%2C%7Ba1%2Ct%7D%5D .
実行時に代数方程式を解きたい場合、それは一般的に非常に難しい問題です。あなたが何をしようとしているのかについて詳細を教えていただければ、いくつかの優れた無料パッケージをお勧めできるかもしれません。
編集: 解決しようとしている可能性のある問題の例:
Q: 初期位置 q0、初期速度 v0、一定加速度 a0 の宇宙船と、初期位置 q1 のミサイルが与えられた場合、ミサイルが最終的に宇宙船と衝突するマグニチュード M のミサイル速度 v1 を見つけたいと考えています。
A: 連立方程式を解こうとしている
q0 + v0 t + 1/2 a0 t^2 = q1 + v1 t
v1 . v1 = M^2
ベクトル v1 の場合、衝突時間 t も不明です。私が知る限り、この系を閉じた形式で解くのは非常に困難です。Wolfram Alpha はそれを詰まらせており、Mathematica でさえ苦労しています。ただし、数値的な方法で攻撃するのは比較的簡単です。そのために、最初の方程式を 2 番目の方程式に代入して、まず t を解きます。
(q0 - q1 + v0 t + 1/2 a0 t^2) . (q0 - q1 + v0 t + 1/2 a0 t^2) == M^2 t^2
これは既知の係数を持つ t の 4 次多項式です。
[(q0 - q1).(q0-q1)] + [2 (q0 - q1).v0] t + [v0.v0 + (q0-q1).a0 - M^2] t^2 + [v0.a0] t^3 + [1/4 a0.a0] t^4 = 0
括弧内はすべて、既知の量から計算できるスカラーです。この 4 次の根を見つけるには、ブラック ボックスの根ソルバーを使用します (Jenkins-Traub を強くお勧めします。C++ コードは www.crbond.com/download/misc/rpoly.cpp で入手できます。Java と Fortran のバージョンも、 'ネット)。
ルートが得られたら、正の最小のものを選択し (これは、ミサイルができるだけ早く宇宙船に衝突する方向に対応します)、それを最初の方程式に代入し、v1 を自明に解きます。
EDIT2:
Q: 初期位置 q0、初期速度 v0、一定加速度 a0 の宇宙船と、初期位置 q1、初期速度 v1 のミサイルが与えられた場合、最終的にミサイルが衝突するマグニチュード M のミサイル加速度 a1 を見つけたいと考えています。宇宙船と。
A: この問題は最初の問題とよく似ています。あなたの方程式は今
q0 + v0 t + 1/2 a0 t^2 = q1 + v1 t + 1/2 a1 t^2
a1 . a1 = M^2
a1 と t は不明です。繰り返しますが、これらの方程式を組み合わせて、既知の係数を持つ t の 4 次方程式を得ることができます。
[(q0 - q1).(q0-q1)] + [2 (q0 - q1).(v0-v1)] t + [(v0-v1).(v0-v1) + (q0-q1).a0] t^2 + [(v0-v1).a0] t^3 + [1/4 a0.a0 - 1/4 M^2] t^4 = 0
再び、Jenkins-Traub を使用して根を見つけ、最小の正の根を最初の方程式に代入して、a1 を解きます。