data 19.03.2012 godzina 14:15
rok akademicki: 2011/2012 semestr: IV
grupa: 4D6 (D) - X2
SPRAWOZDANIE Z LABORATORIUM
METOD NUMERYCZNYCH
ĆWICZENIE NR 1
TEMAT: Przenoszenie się błędów w obliczeniach numerycznych
Krzysztof Filipek - 164333
Kamil Turkowski - 164478
Listingi M-Funkcji:
Plik główny porównujący wszystkie używane metody i obrazujący wyniki na wykresie
A = [1 -10 45 -120 210 -252 210 -120 45 -10 1];
g = [0.9500,1.0500];
x = linspace(g(1),g(2),100);
for i=1:100
w1(i) = horner(A,x(i));
w2(i) = wielomian(A,x(i));
w3(i) = polyval(A,x(i));
w4(i) = (x(i)-1)^10;
end
plot(x,w1,x,w2,x,w3,x,w4);
xlabel('x');
ylabel('w');
Plik z obliczonymi pochodnymi funkcji sin(x2), obliczajacy różnice centralną i progresywną, ich błędy względne i odniesień oraz przedstawiający wykresy poniższych wielkości w skali logarytmicznej
h = 0.13;
x = 3;
p1 = '2*x*cos(x^2)';
p2 = '2*(cos(x^2)-2*x^2*sin(x^2))';
p3 = '-4*x*(3*sin(x^2)+2*x^2*cos(x^2))';
w1 = eval(p1);
w2 = eval(p2);
w3 = eval(p3);
for i=1:70
H(i) = h*2^(-(i-1));
Rc(i) = centralna(x,H(i));
Rp(i) = progres(x, H(i));
Bw_Rc(i) = (Rc(i)-w1)/w1;
Bw_Rp(i) = (Rp(i)-w1)/w1;
Bo_Rc(i) = ((-1/6)*(H(i))^2*w3)/w1;
Bo_Rp(i) = ((1/2)*H(i)*w2)/w1;
end
loglog(H, abs(Bw_Rc), H, abs(Bw_Rp), H, abs(Bo_Rc), H, abs(Bo_Rp))
xlabel('log(h)');
ylabel('log(B)');
Wzór liczący dziesiątą potęgę wielomianu x - 1
w4(i) = (x(i)-1)^10;
Plik ze schematem Hornera 1
function [w] = horner(A,x)
w=0;
n=length(A)-1;
for i=1:n
w=w+A(i);
w=w*x;
end
w=w+A(n+1);
Plik ze schematem Hornera 2
function [w] = wielomian(A,x)
w=0;
n=length(A);
for i=1:n
w=w+A(i)*x^(n-i);
end
Plik obliczający różnicę centralną funkcji sin(x2):
function [wyj] = centralna(x,h)
wyj = (sin((x+h)^2)-sin((x-h)^2))/(2*h);
Plik obliczający różnicę progresywną:
function [wyj] = progres(x,h)
wyj = (sin((x+h)^2)-sin(x^2))/h;
Wykresy M-Funkcji:
Wykres pliku głównego - wykresy poszczególnych metod:
Wykres błędów w skali logarytmicznej:
Krok optymalny dla różnicy centralnej (niebieski wykres): 10-6
Krok optymalny dla różnicy progresywnej (czerwony wykres - najniższa półprosta): 10-8
Wnioski:
W zadaniu pierwszym użyliśmy dwóch metod obliczania wielomianu, a mianowicie schematu Hornera i wyliczania wartości wprost ze wzoru. W obu przypadkach wystąpiły duże rozbieżności wyników.
Wraz ze zmianą długości kroku zmienia się błąd względny. Lepsze wyniki daje różnica centralna.