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

ЧМ_3

.docx
Скачиваний:
4
Добавлен:
28.06.2022
Размер:
306.88 Кб
Скачать

Никитиной Софии ИВТ-24

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

Интерполяция функций. Интерполяционные полиномы Лагранжа, Ньютона.

Скрипт:

function y = interpol( X, Y, x)

for i=1:length(X-1)

if (x>=X(i) && x<=X(i+1))

k=(Y(i+1)-Y(i))/(X(i+1)-X(i));

y=Y(i)+k*(x-X(i));

return;

end;

end

end

Командная строка:

f=@(t)sin(pi*t); i=0:4; Ti=i./4; Fi=f(Ti);

intf=@(x)(interpol(Ti, Fi, x));

X=[0 1/6 1/3 1/2];

Y=zeros(size(X));

YR=zeros(size(X));

for i=1:length(X)

Y(i)=intf(X(i));

YR(i)=f(X(i));

end

[X; Y; YR; abs(Y-YR)]

hold on; grid on;

fplot(f, [0 1]);

fplot(intf, [0 1], 'r');

plot(Ti, Fi, '*');

Скрипт:

function y = interpol( X, Y, x )

A=repmat(X.', 1, length(X)).^repmat([0:length(X)-1], length(X), 1);

M=A\Y.';

y=(repmat(x', 1, length(X)).^repmat([0:length(X)-1], length(x), 1))*M;

end

Командная строка:

f=@(t)sin(pi*t);

i=0:4;

Ti=i./4;

Fi=f(Ti);

X=[0:0.05:1];

Y=interpol(Ti, Fi, X);

hold on; grid on;

plot(X, Y, 'r');

fplot(f, [0 1]);

plot(Ti, Fi, '*');

function yy = newton(x, y, xx)

N = length(x);

DIFF = y;

for k = 1 : N-1

for i = 1: N - k

DIFF(i) = (DIFF(i+1) - DIFF(i)) / (x(i+k) - x(i));

end

end

yy = DIFF(1) * ones(size(xx));

for k = 2 : N

yy = DIFF(k) + (xx - x(k)) .* yy;

end

>> newton(X,Y,2)

ans = 2.0643

>> sin(pi*2)

ans = -2.4493e-16

syms z

x = -1:.2:1; %шаг 0.2

f=1/(1+25*z^2);

y = 1./(1+25*x.^2) ;

xi = .95;

yi = newton(x,y,xi);

plot(x,y,'o','linewidth',2);

hold on;

plot(xi,yi,'*k','linewidth',3);

hold on;

xi=x(1):0.01:x(length(x));

yi = newton(x,y,xi);

plot(xi,yi,'k-');

plot(xi,abs(subs(f,xi)-yi),'g-');

grid on;

plot([min(x) max(x)],[0 0],'-k');

max(abs(subs(f,xi)-yi))

xlabel('x');

ylabel('y');

ezplot('1/(1+25*x^2)',[-2 2]);

axis equal

Соседние файлы в предмете Численные методы