一連の点が与えられたとき、それらに放物線を合わせる最も速い方法は何ですか? 最小二乗計算を行っていますか、それとも反復的な方法がありますか?
ありがとう
編集:勾配降下が進むべき道だと思います。最小二乗計算は、もう少し負担が大きかったでしょう (物事を安定させるために qr 分解または何かをしなければなりません)。
一連の点が与えられたとき、それらに放物線を合わせる最も速い方法は何ですか? 最小二乗計算を行っていますか、それとも反復的な方法がありますか?
ありがとう
編集:勾配降下が進むべき道だと思います。最小二乗計算は、もう少し負担が大きかったでしょう (物事を安定させるために qr 分解または何かをしなければなりません)。
ポイントにエラーが関連付けられていない場合は、3 つのポイントで補間できます。それ以外の場合は、最小二乗法または同等の定式化が有効です。
最近、3 点を通る放物線を見つける必要がありました。
放物線が(x1,y1), (x2,y2) and (x3,y3)
あり、放物線が必要だとします。
y-y0 = a*(x-x0)^2
それらを通過するには: find y0, x0, and a
.
いくつかの代数を実行して、このソリューションを取得できます (ポイントがすべて直線上にない場合)。
let c = (y1-y2) / (y2-y3)
x0 = ( -x1^2 + x2^2 + c*( x2^2 - x3^2 ) ) / (2.0*( -x1+x2 + c*x2 - c*x3 ))
a = (y1-y2) / ( (x1-x0)^2 - (x2-x0)^2 )
y0 = y1 - a*(x1-x0)^2
c の方程式に注目if y2==y3
すると、問題が発生します。したがって、私のアルゴリズムでは、これを確認し、x1、y1 を x2、y2 と交換してから続行します。
それが役立つことを願っています!
ポール・プロバート
計算解は、ほとんどの場合、反復解よりも高速です。「例外」は、反復回数が少ない場合と複雑な計算の場合です。
最小二乗法を使用します。線形回帰フィット用にコーディングしただけですが、放物線に使用できます (最近調べた理由がありました - ソースには、「Numerical Recipes」Press et al; および「Engineering Mathematics」Kreyzig の古い版が含まれていました)。
放物線のアルゴリズム