metody numeryczne cw 1


data 21.03.2013
SPRAWOZDANIE Z LABORATORIUM
METOD NUMERYCZNYCH
Ćwiczenie nr 1
Temat: Błąd w obliczeniach numerycznych
Wydział: EEiA
rok akademicki: 2012/2013 semestr: IV
Grupa: 4C5
Grupa laboratoryjna: 3
Dzień: czwartek godz. 1415-1600
Aukasz Kubiak 171367
Leśnik Przemysław 171374
Ćwiczenie 1. Oblicz wartość wielomianu korzystając ze wzoru (x-1)10, oraz schematu Hornera i wzoru
= & + + w przedziale [0,95 1,05]dla 100 punktów.
m-funkcja w matlabie
function [y1,y2,y3]=wielomian2(c,x)
c=[1,-10,45,-120,210,-252,210,-120,45,-10,1];
x=linspace(0.95,1.05,100);
for i=1:length(x)
y1(i)=(x(i)-1)^10;
y2(i)=c(1)*x(i)^10+c(2)*x(i)^9+c(3)*x(i)^8+c(4)*x(i)^7+c(5)*x(i)^6+c(6)*x(i)^5+c(7)*x(i
)^4+c(8)*x(i)^3+c(9)*x(i)^2+c(10)*x(i)+c(11);
y3(i)=(((((((((c(1)*x(i)+c(2))*x(i)+c(3))*x(i)+c(4))*x(i)+c(5))*x(i)+c(6))*x(i)+c(7))*x
(i)+c(8))*x(i)+c(9))*x(i)+c(10))*x(i)+c(11);
end
%c=[1,-10,45,-120,210,-252,210,-120,45,-10,1];
%x=linspace(0.95,1.05,100);
%[y1,y2,y3]=wielomian2(c,x)
figure(1)
plot(x,y1,'r')
hold on
grid on
plot(x,y2,'g')
plot(x,y3,'y');
y4=polyval(c,x);
plot(x,y4,'b');
legend('(x-1)^{10}','c_{10}*x^{10}+..+c_{11}', 'Schemat Hornera','polyval')
title('Wykres przebiegu wielomianu w zalezności od zastosowanej metody')
title('Przebieg wielomianu w zalezności od zastosowanej metody')
ylabel('y')
xlabel('x')
Wykres
Ćwiczenie 2. Plik z obliczonymi pochodnymi funkcji tg(x2+1), obliczający różnice progresywną,
centralną, ich błędy względne ,układ współrzędnych przedstawiający wykresy poniższych wielkości
w skali logarytmicznej.
function[h]=roznica(h)
x=0.5;
h0=0.1;
%obliczenie wartosci pochodnych
p1=2*x*(sec(1+x^2))^2;
p2=2*((sec((x^2)+1))^2+4*(x^2)*tan((x^2)+1)*(sec((x^2)+1))^2);
p3=8*(x*tan((x^2)+1)*(sec((x^2)+1))^2+2*x*tan((x^2)+1)*sec((x^2)+1)+2*(x^3)*(sec((x^2)+
1))^2+2*(x^3)*(tan((x^2)+1))^2*sec((x^2)+1));
for i=1:40; %obliczanie róznicy centralnej
h(i)=h0*2^-(i-1); %krok rozniczkowania
rc=(tan((x^2)+1+h(i))-tan((x^2)+1-h(i)))/(2*h(i)); %roznica centralna
bw=(rc-p1)/p1; %blad wzgledny
m(1,i)=abs(bw); %blad zapisany do wektora
bgc=((((h(i))^2)/6)*p3)/p1; %blad bezwzgledny
m(3,i)=abs(bgc); %blad zapisany do wektora
end
for i=1:40; %obliczanie róznicy progresywnej
h(i)=h0*2^-(i-1); %krok rozniczkowania
rp=(tan((x^2)+1+h(i))-tan((x^2)+1))/ h(i); %roznica progresywna
bw2=(rp-p1)/p1; %blad wzgledny
m(2,i)=abs(bw2); %blad zapisany do wektora
bgp=((h(i)/2)*p2)/p1; %blad bezwzgledny
m(4,i)=abs(bgp); %blad zapisany do wektora
end
%wykresy bledow
loglog(h,m(1,: ),'r-',h,m(2,: ),'g-',h,m(3,: ),'b.',h,m(4,: ),'y.')
title('Wykres bledu wzglednego');
xlabel('log(h)');
ylabel('log(blad wzgledny)');
legend('roznica centralna', 'roznica progresywna', 'blad wzgledny odciecia r. progr.',
'blad wzgledny odciecia r.centr.')
Krok optymalny dla różnicy centralnej (czerwony wykres): 10-6
Krok optymalny dla różnicy progresywnej (zielony wykres): 10-8
Wartość dokładna pochodnej: 10.057509621834829
Wnioski
Funkcja z ćwiczenia 2 wylicza błędy całkowite różnicy progresywnej i centralnej oraz
szkicuje odpowiednie wykresy. Naszym zadaniem było zbadanie rozkładu błędu pochodnej
funkcji tag(x2+1) dla różnych wartości h (wyliczonych ze wzoru: H(i) = h0*2^(-(i-1. Na
podstawie wykresu można stwierdzić, że różnica centralna daje nam lepsze przybliżenie
pochodnej biorąc większy krok niż dla różnicy progresywnej.
Na podstawie wykresów błędu względnego najbardziej optymalny krok będzie oscylował dla
różnicy progresywnej w okolicach 10^(-8) oraz dla różnicy centralnej w okolicach 10^(-6).
Ćwiczenie 1 pozwala na porównanie skuteczności sposobów obliczania wartości
wielomianu. Metoda pierwsza korzysta ze schematu Hornera - metody minimalizującej
liczbę mnożeń niezbędnych do otrzymania końcowego wyniku, metoda druga korzysta z
bezpośredniego podstawienia wartości x do wzoru wielomianu. .
Z pierwszego wykresu możemy zaobserwować jak złożoność obliczeń ma wpływ na
nieprzewidywalne rozłożenie błędów, które pokazują nam oscylacje. Najmniej złożoną
funkcją jest obliczenie na podstawie wzoru wielomianu P(x)=(x-1)^10 co pokazuje nam
czerwona linia, nie występują błędy. Obserwując wykres, dla schematu Hornera wyniki są
mniej porozrzucane, niż wyniki przy zastosowaniu wzoru standardowego. W przypadku gdy
użyjemy funkcji polyval, wyniki wykresu dla schematu Hornera i dla użytej funkcji nam się
pokrywają. Na podstawie wykresu można stwierdzić, że wbudowana funkcja Matlab a
oparta jest na schemacie Hornera.


Wyszukiwarka

Podobne podstrony:
Metody numeryczne w11
metody numeryczne i w1
metody numeryczne i w2
barcz,metody numeryczne, opracowanie wykładu
Metody numeryczne7
metody numeryczne w1
Metody numeryczne macierze
Metody numeryczne aproksymacja
3 Metody numeryczne rozwiązywania równań algebraicznych
Metody numeryczne w6
METODY NUMERYCZNE CZESC PIERWSZA
Metody numeryczne2
metody numeryczne dla informatykow
metody numeryczne i w7
metody numeryczne i w9

więcej podobnych podstron