やりたいこと
ラグランジュの補間を使って以下の点群からy=0の時のxの値を推定したい
double px[] = {1.0,1.3,1.6,2.0}; double py[] = {-0.403,-0.158,0.896,1.513};
pxがx座標,pyがy座標
やったこと
yを推定することはできた。
以下にx=0.0の時のyの推定をしたプログラムを書きます。
double lagrange(double *px, double *py, int N, double x) { // P double y =0.0; for (int k=0; k < N; k++) { // L double l_k = 1.0; for (int j=0; j< N; j++) { if (k == j) continue; l_k *= (x - px[j]) / (px[k] - px[j]); } y += py[k] * l_k; printf("l_k[%d] = %1f\n", k, l_k); } return y; } int main(void) { double px[] = {1.0,1.3,1.6,2.0}; double py[] = {-0.403,-0.158,0.896,1.513}; double N = sizeof(px) / sizeof(px[0]); double x = 0.0; printf("x=%.15f,y=%.15f",x,lagrange(px, py, N, x)); return 0; }
これである程度yの推定はできました。
お願いしたいこと
上記のコードからy=0の時のxの値を推定するようなアドバイスを頂けないでしょうか?
どうかアドバイスだけでもお願いします。
逆がわかりません。
yに値を与えた時にもxを推定する動作するようにしたいです。
どうかよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。