Sprawko moje pierwsze, Informatyka WEEIA 2010-2015, Semestr IV, Metody numeryczne, Lab 1 sprawko


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

  1. Listingi M-Funkcji:

  1. 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');

  1. 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)');

  1. Wzór liczący dziesiątą potęgę wielomianu x - 1

w4(i) = (x(i)-1)^10;

  1. 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);

  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

  1. 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);

  1. Plik obliczający różnicę progresywną:

function [wyj] = progres(x,h)

wyj = (sin((x+h)^2)-sin(x^2))/h;


  1. Wykresy M-Funkcji:

  1. Wykres pliku głównego - wykresy poszczególnych metod:

0x01 graphic

  1. Wykres błędów w skali logarytmicznej:

0x01 graphic

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.



Wyszukiwarka