НИЖЕГОРОДСКИЙ ГОСУДАРСТВЕННЫЙ

ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

им.

Лабораторная работа

по вычислительной математике №3

Вар. 13

Выполнил:

Студент гр. 10-В-1

Проверила:

НИЖНИЙ НОВГОРОД

2012 г.

Задание:

Найти приблизительное значение функции при данном значении аргумента с помощью интерполяционного многочлена Лагранжа, еcли функция задана в равноотстоящих узлах таблицы;

X

Y

0.210

4.83170

0.215

4.72261

0.220

4.61855

0.225

4.51919

0.230

4.42422

0.235

4.33337

x=0.2165

Теоретические сведения:

Блок-схема алгоритма

Блок-схема: знак завершения: начало

 

Блок-схема: данные: Описание массивов x[6],y[6]

 

 

Блок-схема: данные: Вывод начальных данных

Блок-схема: данные: Вывод результата

X Y

Блок-схема: знак завершения: конец

Ход работы программы

Результат работы программы

Вывод:

В данной работе был реализован метод аппроксимации дискретно заданных функций многочленом Лагранжа.

В ходе работы были получены решения, достаточно хорошо согласующиеся с характером исходных данных. При аппроксимации функций получали значения, практически не нарушающие плавность хода функции между дискретными точками.

Приложение:

#include<iostream. h>

#include<conio. h>

#include<stdio. h>

float x[6]={1.375,1.380,1.385,1.390,1.395,1.400};

float y[6]={5.04192,5.17744,5.32016,5.47069,5.62968,5.79788};

float X=1.3862,Y;

int N=6;

float mp(int j);

int main(void)

{

printf("Lagrange method\n x y\n");

for(int j=0;j<6;j++)

printf("\n%3.3f %f ",x[j],y[j]);

getch();

Y=0;

for(int t=0; t<N; t++)

Y=Y+mp(t)*y[t];

cout<<"\nx=" <<X<<" y="<<Y;

getch();

return 0;

}

float mp(int j)

{

float res=0,m=1,p=1;

for(int i=0;i<N;i++)

if(i!=j) m=m*(X-x[i]);

for(int i=0; i<N; i++)

if(i!=j) p=p*(x[j]-x[i]);

res=m/p;

return res;

}