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

Лаб 4 / z4-6

.m
Скачиваний:
12
Добавлен:
24.04.2023
Размер:
3.34 Кб
Скачать
% задача 4. Выбрать функцию согласно номеру компьютера и провести ее
% интерполяцию по формуле Лагранжа при равномерном распределении узлов
% на заданном интервале для n = 11 и n = 6.
clear
% начало и конец отрезка
a=0;
b=4;
% количество узлов
n=6;
% степень полинома
h=(b-a)/(n-1);
x=a:h:b;
% значение функции
f=x.^2 .* sin(2 .* x - 3);
% для графика
X=a:0.01:b;
F=X.^2 .* sin(2 .* X - 3);
nx=length(X);
% пустая матрица для решения многочлена лагранжа
L=zeros(1,nx);
% запускаем повторы для интерполяции
for i=1:n
% специальный базис
l=ones(1,nx);
for j=1:n
% проверяем условие спец базиса
if i~=j
% формируем специальный многочлен
l=l.*(X-x(j))/(x(i)-x(j));
end;
end;
% формируем многочлен
L=L+l.*f(i);
end;
% графики интерполяции
figure(1)
plot(X,L)
hold on;
% исходная функция
plot(X,F)
hold on;
% погрешность
plot(X,L-F)

% задача 5. Провести интерполяцию по тем же узлам, используя стандартные функции Matlab.
% интерполяция своей функции средствами Matlab
clear
% начало и конец отрезка
a=0;
b=4;
n1=11;
% степень полинома
h=(b-a)/(n1-1);
x1=a:h:b;
% значение функции
f1=x1.^2 .* sin(2 .* x1 - 3);
% для графика
X1=a:0.01:b;
F1=X1.^2 .* sin(2 .* X1 - 3);
% апроксимация методом наименьших квадратов через встроенную функцию
a=polyfit(x1,f1,n1);
% полином с коэффициентами из массива апроксимации а через встроенную функцию
A=polyval(a,X1);
% графики интерполяции
figure(2)
plot(X1,A)
hold on;
% исходная функция
plot(X1,F1)
hold on;
% погрешность
plot(X1,A-F1)


% задача 6. Построить графики исходной функции и интерполянт не менее
% чем в 100 узлах. Сравнить результаты.
clear
% начало и конец отрезка
a=0;
b=4;
n2=100;
h2=(b-a)/(n2-1);
x2=a:h2:b;
% значение функции
f2=x2.^2 .* sin(2 .* x2 - 3);
% для графика
X2=a:0.01:b;
F2=X2.^2 .* sin(2 .* X2 - 3);
nx2=length(X2);
% пустая матрица для решения многочлена лагранжа
L2=zeros(1,nx2);
% аналогично прошлым заданиям:
for i2=1:n2
l2=ones(1,nx2);
for j2=1:n2
if i2~=j2
l2=l2.*(X2-x2(j2))/(x2(i2)-x2(j2));
end;
end;
L2=L2+l2.*f2(i2);
end;
% графики интерполяции
figure(3)
plot(X2,L2)
hold on;
% исходная функция
plot(X2,F2)
hold on;
% погрешность
plot(X2,L2-F2)


Соседние файлы в папке Лаб 4