F(x)=1/(ax^2+bx+c) の形式で、いくつかの点を逆放物線に当てはめようとしています。
私の目的は、10 ~ 30 点のセットを取り、それらを逆放物線に適合させる関数を C++ でプログラムすることです。
最小二乗法を使用して分析式を取得しようとし始めましたが、結果を得ることができません。私は手で試してみました(少しクレイジー)、次にa、b、cの式を分析的に解こうとしましたが、mupadは結果を与えません(私はMatlabのmupadにかなり慣れていないので、正しくやっていない可能性があります) . 問題にアプローチする方法がわかりません。
この特定の問題の分析式を取得できますか? 一般的な最小二乗フィッティングのアルゴリズムも見ましたが、それほど複雑なアルゴリズムは必要ありません。この方程式に必要なだけです。そうでない場合、StackOverflow の人々はどのように問題に取り組みますか?
必要に応じて、方程式と、試した小さな Mupad コードを投稿できますが、不要だと思います。
編集:いくつかの例
画像が少し乱雑で申し訳ありませんが、それは私が必要とするものです。データは青色です (このデータは特にノイズが多い)。垂直線の間にあるデータのみを使用する必要があります (左側のデータの束と右側の別のデータ)。
フィットの結果は赤線です。
これはすべて matlab で作成されていますが、c++ で作成する必要があります。
データを載せてみます…
編集2:私は実際に次のようにMatlabでフィッティングを行いました(実際のコードではありません):
create linear system Ax = b, with
A = [x² x 1]
x = [a; b; c]
b = 1/y;
それはうまくいくはずですよね?SVDで計算されたMoore-Penrose pseudoinvを使用して解決できます。ではない?