二分法を使用して、2 つの高度に非線形な方程式を解こうとしています。言いましょう。f(x,y) = 0
次数8とg(x,y) = 0
次数6。
2D Bisection Method を解決f(x,y) = 0
してすべての可能な rootsg(x,y) = 0
を見つけるには、matlab コードが必要です。
二分法を使用して、2 つの高度に非線形な方程式を解こうとしています。言いましょう。f(x,y) = 0
次数8とg(x,y) = 0
次数6。
2D Bisection Method を解決f(x,y) = 0
してすべての可能な rootsg(x,y) = 0
を見つけるには、matlab コードが必要です。
あなたの考えはうまくいきません。2 つの変数の 2 つの多項式を使用して、グレブナー基底、結果、ベズーの定理、無限遠解を使用した代数の領域に入りました。
ベズーの定理は、最大で 6*8=48 個の解が存在することを示しています。実数と複素数です。matlab に Gröbner パッケージがあるとは思わないので、Maple、Magma、または Singular を使用してください。
結果を使用すると、変数の数を減らすことができます。f と g の x の結果は、y の一変数多項式であり、標準的な方法で解くことができます。これは、y の多項式を含むシルベスター行列の行列式です。原則として、これを matlab で評価できるはずですが、あまり実用的ではありません。
結果のアイデアは、ホモトピー法に (明白な回り道ではなく) 役立ちます。これは、Verschelde、Wampler らによって完全に数値化された方法で広く行われました。
私の記憶が正しければ、ホモトピーの最初の解決可能な問題は、
g0(x,y)=(y-a1*x-b1)*...*(y-a6*x-b6)
ランダムな係数 a1,..,a6,b1,...,b6 を使用します。次に、一変数多項式から g0 のすべての線形因子について初期解を決定できます。
0=f1(x)=f(x,a1*x+b1),..., 0=f6(x)=f(x,a6*x+b6)
Jenkins-Traub または Laguerre を使用して、ルート xjk および yjk=aj*xjk+bj を指定します。複素平面の 2 等分または 4 等分はあまり役に立ちませんが、存在します。ヤコブソンとディデューの作品をご覧ください。
ここで、直線または曲線 t=s+c*s*(1-s) で 0 から 1 になるホモトピー パラメーター t を導入します。システムを検討する
0=f(x(t),y(t)),
0=t*g(x(t),y(t))+(1-t)*g0(x(t),y(t)),
x(0)=xjk および y(0)=yjk で始まり、すべての j=1,...,6, k=1,...,8 です。
係数の一般的な値の場合、たどるパスは交差しないため、最初から最後まで規則的であり、すべてのルートを見つけることができます。1 つのトリッキーな部分は、パスがドリフトするときに、それが非常に大きな解または無限遠での非解によるものかどうかを判断することです。
別のホモトピーは、固定された任意の y0 に対して f(x,y0) の根 x1,...,x8 を計算することから始まり、次に g(x1, y),...,g(x8,y)。ホモトピーは次のように与えられます。
0=f( x(t), (1-t)*y0+t*y(t)),
0=g( x(t), y(t)),
ここで、x(0)=xk および y(0)=yjk です。