Cześć,
potrzebna mi pomoc. Musze napisać funkcje wyznaczającą wielomian określony przez punkty, mam użyc interpolacji metodą Lagrange. Tylko nie wiem jak sie do tego zabrać. Mam za wzór taką funkcje w matlabie:
function [] = lagrange(xj,yj,x,n)
w=0;
s = 0;
for j=1:n+1
omega_p = 1;
for i=1:n+1
if i ~= j,
omega_p = conv(omega_p,[1 -xj(i)])/(xj(j) - xj(i));
end
end
s = s + yj(j) * omega_p;
end
for i=1:length(s)
w=w*x+s(i);
end
disp(s);
disp(w);
end
Pomoże ktoś, nie mam pojęcia jak się do tego zabrać, nie wiem czego użyć zamiast conv.
Z tego co pamiętam (a metody numeryczne miałem jakieś trzy lata temu) to najlepiej będzie wygenerować sobie wykres w matlabie podanej funkcji i odczytać kilka współrzędnych punktów (na przykład n=3), czyli x1, x2, x3, a potem wyliczyć ze wzoru Lagrange’a Wyliczasz w taki sposób, że podstawiasz x1, x2, x3 dla określonego n (w tym wypadku n=3) pod wzór Li(x).
Kluczem do sukcesu jest zauwazenie, ze conv wykonane dla wektorów o długosci 1 jest po prostu rowne ich iloczynowi, czyli conv(omega_p,[1 -xj(i)]) moze byc zastapione przez omega_p * (1 - xj(i))
Przydatny link do napisania odpowiednika funkcji conv http://www.mathworks.com/help/matlab/ref/conv.html , mozesz skorzystac z gotowca gemu convolver https://github.com/neilslater/convolver