Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / Лабы 2 / OLD / LAB_04

.TXT
Скачиваний:
27
Добавлен:
17.04.2013
Размер:
4.08 Кб
Скачать
Лабораторная работа N4

Тема: Задачи интерполяции и экстраполяции. Интерполяционный многочлен
Лагранжа.

1. Сгенерировать функцию y=y(x), заданную таблично: x от -2 до 2 с шагом
h=0.5, y=sin(x). Определить размер векторов x и y.

2. Найти значение интерполяционного многочлена Лагранжа для функции, заданной
таблично в п. 1, в точке z=-1.25 и сравнить с sin(-1.25) (format long).

При построении интерполяционного многочлена копировать свои действия
в текстовый файл, чтобы, убедившись в правильности своих действий
впоследствии с помощью текстового редактора создать m-файл функцию под
именем lag.m.
а) построить вектор ww=z-x; найти произведение prod(ww);
б) найти значение многочлена lix(i)=prod(ww)/(z-x(i)) при i=1;
в) построить вектор ww=x(i)-x;
г) найти значение многочлена lixi(i)=prod(ww(ww~=0));
д) найти значение первого члена суммы в выражении для многочлена
Лагранжа y(1)*lix(1)/lixi(1).

Убедившись в работоспособности модели вычисления членов суммы, на при-
мере вычисления первого слагаемого в интерполяционном многочлене Лагранжа
войти в текстовый редактор и отредактировать его с
целью создания исполняемого файла-процедуры lag_p.m, содержащего цикл
по i от 1 до длины вектора x c вычислениями значения многочлена
Лагранжа в точке z. Показать преподавателю. Сравнить значения многочлена
Лагранжа и функции sin(z) в точке z=-1.25

3. Отредактировать файл lag_p.m так, чтобы можно было вычислять значения и
в точках x(i). Если z равно x(i), то коэффициент при y(i) должен обра-
титься в единицу.

Задавая с клавиатуры разные z, сравнить значения многочлена Лагранжа и
sin(z). Провести теоретическую оценку точности, сравнить с эксперимен-
том.

4. Отредактировать файл lag_p.m так, чтобы он стал файлом-функцией lag.m,
вычисляющей значения многочлена Лагранжа в любой точке, задаваемой век-
тором z.

Первая строка:
function pl=lag(z,x,y)
далее комментарий для help и два цикла - один для различных точек z
(for k=1:N, где N длина вектора z) , другой, учитывающий точки разбие-
ния x (for i=1:n, где n число точек разбиения)

5. Провести сравнение графиков функций и интерполяционного многочлена Лаг-
ранжа plot(z,y(z),'-',z,pl,':'), сравнить погрешность с теоретической
оценкой для следующих примеров:

пример из лекции: функция y=sqrt(x) задана таблично в точках
х=100, 121, 144; найти ее приближенное значение в точке х=116
с помощью многочлена Лагранжа, оценить погрешность теоретически,
сравнить ее с практической, оценить погрешность на всем отрезке
[100, 144] и сравнить ее с практической. Результаты подтвердить
графиками.

x принадлежит отрезку [-2, 2]; число узлов интерполяции от 3, 6, 9;
y=sin(x); y=sqrt(x+2); y=abs(abs(x)-1). Например:

п x=-1:1;y=sin(x);z=-2:.2:2;pl=lag(z,x,y);

В случае необходимости изменить масштаб командой:

п v=[xmin xmax ymin ymax];axis(v)"

Построить график разности значений функции и многочлена Лагранжа.

Приложение (примерно такой файл должен получиться у Вас под именем lag.m):

function pl=lag(z,x,y)
%LAG Вычисление значений интерполяционного многочлена Лагранжа в точке z.
% Стинтаксис lag(z,x,y)
% Функция y=y(x) задана таблично точками (x(i),y(i)). z - может быть
% вектором.
[M,N]=size(z);
for k=1:N,
[m,n]=size(x);p=0;
for i=1:n
w=z(k)-x(i);
if (w==0)
p=p+y(i);
else
ww=z(k)-x;lix(i)=prod(ww)/(z(k)-x(i));
ww=x(i)-x;lixi(i)=prod(ww(ww~=0));
p=p+y(i)*lix(i)/lixi(i);
end
end
pl(k)=p;
end
Соседние файлы в папке OLD