ラグランジュの補間法のCプログラム
昨日学校でラグランジュの補間法の問題をC言語のプログラムで解けという課題が出されました
しかし、友達と相談してもよくわかりませんでした
課題は以下の問題です
sin関数6点、(0.92+0.01x)、x=0,1,2,3,4,5を求めて、ラグランジュの方法でsin(0.923)を計算せよ
ちなみに答えは、0.79742です
先生からサンプルのプログラムをもらいました
以下のサンプルプログラムを参考にして解いてくださいと言われたのですが、どうしても解けません
すいませんが分かる方、よろしくお願いします
#include <stdio.h>
#include <math.h>
#define N 6 //データ数
double x[N]={ 0.0,1.0,2.0,3.0,3.1,5.0}; //X座標
double y[N]={0.0,1.1,2.5,4.0,4.1,5.0}; //Y座標
double lagrange( double);
int main()
{
double xx,yy;
//補間計算
printf("XX\t\tYY\n");
for( xx=0.0; xx<=5.0; xx+=.2 )
{
yy = lagrange( xx);
printf("%8.2lf\t%8.2lf\n", xx, yy );
}
return 0;
}
//補間サブルーチン
double lagrange( double xx )
{
double z[N];
double yy=0.0;
int i,j;
for( i=0; i<N; i++ )
{
z[i] = 1.0;
//係数計算
for( j=0; j<N; j++ )
if( i!=j )
z[i]*=(xx-x[j])/(x[i]-x[j]);
//補間値計算
yy+=z[i]*y[i];
}
return yy;
}
上記はあくまでサンプルプログラムなので、中に入っている数値は適当です
よろしくお願いします