Sprawozdanie 1.
Przenoszenie się błędów w obliczeniach numerycznych.
1.Funkcja (x-1)^10:
function [wy]=fun1(x)
wy=(x-1).^10; %obliczenia dla całego wektora x
2.Obliczanie wartości wielomianu dla zwykłej metody obliczeń:
function [w] = zw(A,X)
w=0;
n=length(A);
for (i=1:1:n) %pętla wykonuje obliczenia dla wszystkich
w=w+A(i)*X^(n-1); %współczynników funkcji i dla każdej wartości
end %wektora X w jednym obiegu
3.Obliczanie wartości wielomianu dla schematu hornera:
function [wyj]=horn(a,x)
wyj=0;
li=length(a);
for i=1:1:l %pętla liczy wartości dla całego wektora x
wyj=wyj*x+a(j); %w każdym przebiegu zmieniając wartość
end %współczynnika funkcji
4.Skrypt przedstawiający wyniki obliczeń dla funkcji zw, horn i polyval na wspólnym wykresie:
X=linspace(0.95,1.05);
A=poly(ones(1,10));
for i=1:100
wy=zw(A,X); %obliczanie wartosci metoda zwykła
wy2=horn(A,X); %obliczanie wartości schematem hornera
wy3=polyval(A,X); %obliczanie wartości funkcją polyval
end
plot(X,wy,'.',X,wy2,'o',X,wy3) %efekt działania 3 funkcji na jednym wykresie
5.Obliczenia wartości pochodnej funkcji cos(x) metodą centralną dla wartości
x0=pi/3 i kroku h=pi/15:
function[wyn]=metcent(x0,h)
tab=[];
for i=1:40 %obliczenia wartości pochodnej cos(x)
wyn(i)=(cos(x0+h)-cos(x0-h))/(2*h); %dla 40 wartości od pi/3 z krokiem pi/15
x0=x0+h;
tab(i) = x0;
end
6.Obliczenia wartości pochodnej funkcji cos(x) metodą progresywną dla wartości
x0=pi/3 i kroku h=pi/15:
function[y]=metprog(x0,h)
tab=[];
for i=1:40 %obliczenia wartości pochodnej cos(x)
y(i)=(cos(x0(i)+h)-cos(x0(i)))/h; %dla 40 wartości od pi/3 z krokiem pi/15
x0=x0+h;
tab(i)=x0;
end
7.Obliczenia wartości błędu względnego dla metody centralnej:
function[wy]=bladcent(h)
for i=1:40 %obliczenie błedu względnego
wy(i)=((h/2)*(-cos(h)))/(-sin(h));
end
8.Obliczenia wartości błędu względnego dla metody progresywnej:
function[wy]=bladprog(h)
for i =1:40 %obliczenie błedu względnego
wy(i)=((h/6)*(sin(h)))/(-sin(h));
end
9.Skrypt rysujący współny wykres dla obu metod liczenia pochodnych i ich błędów:
x0=pi/3;
h=pi/15;
X=[];
for i=1:40
x0=x0+h; %skrypt liczy i wykreśla wartości
X(i) = x0; %pochodnej cos(x) dla metody
end %centralnej i progresywnej
X2=[1:40] %oraz błędy metod dla współczynnika h.
A=metprog(x0,h);
B=metcent(x0,h);
C=BladProgresywna(h);
D=BladCentralna2(h);
plot(X,A,'.',X,B,'o',X2,C,'-',X2,D);
xlim([1 10]);
legend('MetProg','MetCent','BladProg','BladCent');