私は非線形連立方程式のシステムを見ています。2つの変数はu>0とb>0です。Matlab、Python、またはFortranでこの問題を解決するにはどうすればよいですか?ありがとう。
2 に答える
この質問が本当にここにあるかどうかは正直わかりません。しかし、解決策は理論的には単純です。式1は、uの関数としてbについて自明に解かれます。式2に代入します。ここで、bは1つの場所にのみ表示されます。
ここで、新しい方程式2でルートファインダーを使用して、その関係を満たすuの値を解くことができます。uの値が与えられると、適応数値求積ルーチンを使用して積分を行うことができます。MATLABでは、それはquadgkのようなものになります。(ODEソルバーは必要以上の情報を提供するので、気にしないでください。必要なのは全体的な積分だけです。)
ただし、実際には、その積分のカーネルは変数tの単純な多項式であり、u^10は積分から外れます。そのため、最初の学期の微積分は手作業で統合を行いますが、鉛筆と紙が必要になります。または、シンボリックツールボックスで十分です。ここでは、1行の呼び出しで解決できますが、長い行になります。私はそれを書くのが面倒だと感じています。
とはいえ、数値積分は少し問題になることに注意してください。数値は厄介で巨大であり、指数がかなり大きいためです。このように、それはまた、あなたが非常に象徴的に解決をしたいということを意味します。
実際、この答えのポイントは、特に記号ツールボックス(または鉛筆と紙!)のようなツールが十分で利用可能な場合、問題に数値ソルバーを投げることは悪い考えであるということです。
#1 を b について解くことで、これらの方程式の 1 つを簡単に消去できます。次に、それを使って #2 を u について解きます。
これを行うには、反復法を使用する必要があります。解を推測し、推定値を計算し、推測と比較し、調整して、収束するまで繰り返します。
数値積分 (5 次のルンゲクッタなど) を使用して積分を計算します。