[Matlab] Interpolacja Lagrange'a

focus191
Użytkownik
Użytkownik
Posty: 10
Rejestracja: 26 cze 2017, o 21:23
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 7 razy

[Matlab] Interpolacja Lagrange'a

Post autor: focus191 »

Witam.
Mam problem dotyczący programu do interpolacji metodą Lagrange'a w Matlab. Znalazłem skrypt ale pokazuje błąd w pogrubionym/podkreślonym elemencie. Czy ktoś potrafi wskazać gdzie jest problem?
Zadanie:
Naszkicuj wykres funkcji przechodzącej przez następujące punkty:
(308.6, 0.055389), (362.6, 0.047485), (423.3, 0.040914), (491.4, 0.035413)
obliczając wielomian interpolacyjny metod¡ Lagrange'a.
Rozwiązanie w programie MATLAB:

Kod: Zaznacz cały

function [p,L] = lagranp(x,y)
%wejscie: x = [x0,x1,...,xN], y = [y0,y1,...yN]
%wyjscie: p - współczynniki wielomianu Lagrange'a stopnia n
%         L = współczynniki Lagrange'a
N = length(x) - 1;
p = 0;
for m=1:N+1
P = 1;
for k=1:N+1
if [b][u]k  = m[/u][/b], P = conv(P,[1 -x(k)])/(x(m) - x(k));
end
end
L(m,:) = P; %współczynniki wielomianowe Lagrange'a
p = p + y(m) * P; %wielomian Lagrange'a
end

clc
x = [308.6 362.6 423.3 491.4];
y = [0.055389 0.047485 0.040914 0.035413];
[p,L] = lagranp(x,y); %wyznacza wielomian Lagrange'a
xmin = min(x);
xmax = max(x);
xx = linspace(xmin,xmax,51);
yy = polyval(p,xx); %interpolacja do zadanych punktow
clf
plot(xx,yy,'b',x,y,'r*',x,o.*x,'p') %wykres funkcji
y1 = polyval(L(1,:),xx); %wielomiany charakterystyczne Lagrange'a
y2 = polyval(L(2,:),xx);
y3 = polyval(L(3,:),xx);
y4 = polyval(L(4,:),xx);
figure
clf
plot(xx,y1,'g.',xx,y2,'m-',xx,y3,'.',xx,y4,'r-.')
Ostatnio zmieniony 2 mar 2018, o 12:44 przez Afish, łącznie zmieniany 2 razy.
Powód: Poprawa wiadomości. Staraj się lepiej dobierać nazwy tematów, tak by wskazywały o czym jest treść zadania.
ODPOWIEDZ