III. Порядок выполнения работы:
-
Составить программу-функцию для вычисления значения функции в точке x методом интерполяции.
-
Составить головную программу, содержащую обращение к вычислительной процедуре и осуществляющую печать результатов.
-
Результаты работы оформить в виде краткого отчета, содержащего характеристику используемого метода вычислений, его точности и полученное значение функции.
IV. Выполнение работы:
1) Составим программу-функцию для вычисления интеграла по формуле Гаусса.
double Eitken(int a, int b, double x)
{
double masX[11];
masX[0]=0.2712;
masX[1]=0.3968;
masX[2]=1.5472;
masX[3]=2.1912;
masX[4]=2.2752;
masX[5]=4.3336;
masX[6]=4.5528;
masX[7]=4.7144;
masX[8]=5.0688;
masX[9]=5.1024;
masX[10]=5.5152;
double masY[11];
masY[0]=-3.4381;
masY[1]=-2.5174;
masY[2]=0.3600;
masY[3]=-0.1842 ;
masY[4]=-0.2544;
masY[5]=10.3745;
masY[6]=14.0833;
masY[7]=17.2852;
masY[8]=25.8317;
masY[9]=26.7578;
masY[10]=39.9208;
double dx1,dx2;
if (b-a==1)
{
dx1= (x-masX[a])*masY[b];
dx2= (x-masX[b])*masY[a];
return(1/(masX[b]-masX[a])*(dx1 - dx2));
}
else
{
if(b-a==11+1) exit;
else return(1/(masX[b]-masX[a])*( (x-masX[a])*Eitken(a+1,b,x) - (x-masX[b])*Eitken(a,b-1,x)));
}
return(0);
}
2) Составим головную программу, содержащую обращение к вычислительной процедуре и осуществляющую печать результатов.
void main()
{
clrscr();
double x,y;
double Eitken(int,int,double);
printf("\n Welcome!\n\n");
printf("Programma vichiclyaet fuction y=f(x), predstavlennyu tablicei.\n\n\r");
printf("Input the argument : x=");
cin>>x;
y=Eitken(0,11,x);
printf("The method of Eitken: y=%f",y);
printf("\n\nPress any key to exit, please.\n");
getch();
}
3) Проведем вычисления по программе:
X = 2.7344
Y = -0.340403
График аппроксимирующей функции:
V. Вывод:
Проанализировав результаты работы программы, мы можем сделать вывод, что в том случае, если требуется найти лишь численное значение интерполяционного многочлена , а не его представление, может быть использована итерационно-интерполяционная схема Эйткена.