data 29.04.2013
SPRAWOZDANIE Z LABORATORIUM
METOD NUMERYCZNYCH
Ćwiczenie nr 3
Temat: Aproksymacja i Interpolacja
Wydział: EEiA
rok akademicki: 2012/2013 semestr: IV
Grupa: 4C5
Dzień: czwartek godz. 1415-1600
Kubiak Łukasz 171367
Leśnik Przemysław 171374
Interpolacja
a)
y(x)=e-x/2sin(x) xє(-3,5)
function wykresbledu(x0,x1,n)
% x0-poczatek przedzialu
% x1-koniec przedzialu
% n-ilosc wezlów
X=[-3:(5+3)/30:5];
Y=sin(X).*exp(-X/2);
W=polyfit(X,Y,30);
%obliczenie bledu interpolacji
for i=1:1000
X(i)=-3+i*(5+3)/1000;
blad(i)=polyval(W,(X(i)))-sin(X(i))*exp(-(X(i)/2));
end
plot(X,blad,'-');
wykres błędu dla wielomianu stopnia 30
b) $\mathbf{y}\left( \mathbf{x} \right)\mathbf{=}\sqrt{\mathbf{1 +}\mathbf{x}^{\mathbf{2}}}$ xє(-4,7)
function wykresbledu2(x0,x1,n)
% x0-pocz?tek przedzia?u
% x1-koniec przedzia?u
% n-ilo?? w?z?ów
X=[-4:(7+4)/25:7];
for i=1:length(X)
Y(i)=((1+X(i)^2)^0.5);
end
W=polyfit(X,Y,25);
%obliczenie b??du interpolacji
for i=1:1000
X(i)=-4+i*(7+4)/1000;
blad(i)=polyval(W,(X(i)))-((1+X(i)^2)^0.5);
end
plot(X,blad,'-');
wykres błędu dla wielomianu stopnia 25
2.Aproksymacja
function aprox
x=[0:0.2:2];
y=0.75*exp(x)+0.7391;
p1=0;
p2=0;
f=0;
for i=1:length(x)
p1(i)=exp(x(i));
p2(i)=1;
end
A=[p1*p1' p1*p2'; p2*p1' p2*p2'];
v=[p1*y'; p2*y'];
Q=inv(A)*v;
a=Q(1)
b=Q(2)
X=[0:0.01:2];
for i=1:length(X)
f(i)=a*exp(X(i))+b;
end
plot(X,f,'-'),xlabel('x'),ylabel('y');
for i=1:length(x)
p1(i)x(i))^2;
p2(i)=x(i);
p3(i)=1;
end
A=[p1*p1' p1*p2' p1*p3'; p2*p1' p2*p2' p2*p3'; p3*p1' p3*p2' p3*p3'];
v=[p1*y'; p2*y'; p3*y']; Q=inv(A)*v; a=Q(1)
b=Q(2)
c=Q(3)
X=[0:0.01:2];
for i=1:length(X)
f(i)=a*(X(i))^2+b*X(i)+c;
end
hold on
plot(X,f,'-r'),xlabel('x'),ylabel('y');
plot(x,y,'*');
hold off
Wykres aproksymacji średniokwadratowej
Wnioski:
Z interpolacji wynika że im więcej węzłów tym wyznaczony błąd jest znacznie mniejszy. Z wykresów wynika, że maksymalna norma błędu jest najmniejsza dla interpolacji wielomianami stopnia w okolicy 30.
Z wykresu wynika, że dokładniejsza jest aproksymacja wielomianem stopnia drugiego.