Интерполирование функций полиномами
Министерство образования и науки Украины
Севастопольский национальный технический университет
Кафедра технической кибернетики
ОТЧЁТ
По лабораторной работе №2
“Интерполирование функций полиномами.”
Выполнил: студент гр. А-22д
Литус И.В.
Проверил: старший преподаватель
Захаров В.В.
Севастополь
2011
1 ЦЕЛЬ РАБОТЫ
- Освоить методы алгоритмизации и программирования формы представления интерполяционного полинома Ньютона с равномерным расположением узлов.
- Изучить свойства интерполяционного полинома Ньютона.
- Исследовать зависимость ошибки интерполирования функции от количества и расположения узлов для интерполяционного полинома Ньютона.
2 ВАРИАНТ ЗАДАНИЯ
№ варианта |
С1 |
С2 |
С3 |
С4 |
С5 |
Форма Fm(x) |
9 |
0 |
0,5 |
4,6 |
-1,87 |
0,65 |
Ньютон |
3 КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Интерполирование - это приближённое определение значений функции f(x) в промежуточных точках заданного замкнутого интервала xB x xE изменения её аргумента x по известным значениям f(x1), f(x2),…, f(xm). Значения аргумента xi[xB, xE] , i=1,2…,m интерполируемой функции f(x) называются узлами интерполяции.
Интерполирование функции f(x) полиномом означает построение такого полинома минимальной степени Fm(x), который в m узлах интерполяции удовлетворяет условиям:
f(k)(xi) = Fm(k)(xi) , i = 1,2,…,m , k = 0,1,…,mi-1 . (1)
Здесь f(k)(xi) известные значения функции f(x) и её производных k- ого порядка f(k)(x) в узлах интерполяции, а mi кратность i- ого узла. Если mi=1, i-тый узел называется простым.
Интерполирование функций f(x) полиномом с простыми узлами (mi=1, i =1,2,…,m) означает построение такого полинома минимальной степени Fm(x), который в m узлах интерполяции удовлетворяет условиям:
f(xi) = Fm(xi) , i = 1,2,…,m .
Функция
, (2)
для которой необходимо построить интерполяционный полином Fm(x) в форме Ньютона на интервале 0 x 1 изменения аргумента x, задана аналитически. Это даёт возможность при любом значении x[0,1] вычислить величину абсолютной ошибки интерполирования
(3)
и, таким образом, провести полное исследование зависимости точности интерполирования от количества узлов интерполирования m и расположения точки x относительно узлов интерполирования xi. Значения коэффициентов c1, c2, c3, c4, c5 и форма представления интерполяционного полинома определены вариантом задания. Таблица вариантов приведена в разделе «Приложение».
В работе предполагается, что узлы xi - простые и расположены равномерно на интервале [0,1]. При этом первый x1 и последний xm узлы находятся на концах интервала (x1=0, xm=1), так что шаг интерполирования h (расстояние между двумя соседними узлами) является величиной постоянной на интервале [0,1] и определяется формулой
h = 1/(m1) ,
а узлы - формулой
xi = (i1) h , i=1,2,…,m . (4)
Интерполяционный полином Лагранжа [1,2] может быть представлен в виде
Fm (x) = , (5)
где
, i (x,0) = 1 . (6)
Коэффициенты аi интерполяционного полинома Ньютона определяются как решение системы линейных алгебраических уравнений с нижней треугольной матрицей коэффициентов, которая получается при подстановке (5) в (1). В случае равномерного расположения узлов коэффициенты аi определяются аналитически через конечные разности значений функции f(x) в узлах интерполирования (4) формулой
. (7)
Ошибка интерполирования функции f(x) на интервале обычно оценивается как максимальное значение на этом интервале абсолютной величины ошибки . Поскольку вычислить E(x) во всех точках интервала невозможно, то в работе предлагается вычислить её значение в точках
zi = (i-1)·0,01 , i = 1,2,…,101 (8)
и определить оценку ошибки интерполирования функции на заданном интервале [0,1], как
e = |E(zi)| . (9)
4 СХЕМА ПРОГРАММЫ
I
Fm (z) =
emax = |e(zk)|
5 ЛИСТИНГ ПРОГРАММЫ
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
double tochnoe (double x, double *c);
int main ()
{
int l,k,i,j,m;
double x,e,a,z,h,emax,tt;
double c[5],t[100],g[100];
printf ("Vvedite kol-vo uzlov:");
scanf("%d",&m);
printf ("vvedite coefficieti:\n");
emax=0;
for (i=0;i<5;i++)
scanf("%lf",&c[i]);
h=1/double(m-1);
t[0]=0;
g[0]=tochnoe(t[0],c);
for (i=1;i<=m;i++)
{
t[i]=t[i-1]+h;
g[i]=tochnoe(t[i],c);
}
for (i=2;i<=m;i++)
for (j=m;j>=i;j--)
g[j]=g[j]-g[j-1];
tt=1;
for (k=2;k<m;k++)
{
tt=tt*h*(k-1);
g[k]=g[k]/tt;
}
for (l=0;l<101;l++)
{
z=l*0.01;
x=g[m];
for (i=m-1;i>0;i--)
{
x=g[i]+(z-t[i])*x;
}
e=tochnoe(z,c)-x;
if (emax<fabs(e))
emax=e;
if (l%10==0)
printf("N=%lf f(z)=%lf Fm(z)=%lf E=%lf\n",z,tochnoe(z,c),x,e);
}
printf("shag %lf\n",h);
printf("osibka %e\n",emax);
system("pause");
return 0;
}
double tochnoe (double x, double *c)
{
double f;
int i;
f=(c[0]*x+c[1])/(x*x*x+c[2]*x*x+c[3]*x+c[4]);
return f;
}
6 PЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММЫ
При m=3
При m=10
При m=20
Рисунок 6.1-графики зависимости значения точного и приближенного значения функции
от узлов интерполирования.
Из рисунка 6.1 видно что при увеличении узлов интерполирования, решение с помощью полинома Ньютона становится практически равным точному решению.
Рисунок 6.2-графики зависимости ошибки от узлов интерполирования.
Из рисунка 6.2 видно что при увеличении количества узлов интерполирования ошибка стремится к 0.
ВЫВОД
В ходе лабораторной работы были освоены методы алгоритмизации и программирования формы представления интерполяционного полинома Ньютона с равномерным расположением узлов, а также изучены свойства интерполяционного полинома Ньютона и исследована зависимость ошибки интерполирования функции от количества и расположения узлов для интерполяционного полинома Ньютона.
Из рисунка 6.1 видно что при увеличении узлов интерполирования, решение с помощью полинома Ньютона становится практически равным точному решению.
Из рисунка 6.2 видно что при увеличении количества узлов интерполирования ошибка стремится к 0.
Интерполирование функций полиномами