Błędy w obliczeniach numerycznych - stare, Informatyka WEEIA 2010-2015, Semestr IV, Metody numeryczne, Lab 1 sprawko


Metody numeryczne w inżynierii

Sprawozdanie z laboratorium

nr 1-błędy w obliczeniach numerycznych

Dominika Szczęch

Paweł Dukat

Poniedziałek godzina 14.00-16.00

Wprowadzenie:

Na wstępie należałoby zaznaczyć, że obliczenia numeryczne prowadzone na komputerze obarczone są z reguły błędem. Sumaryczny błąd złożony jest z takich czynników jak np.: błędy wejściowe, błędy metody, błędy zaokrągleń, błędy obcięcia czy błędy wynikające z ograniczonych możliwości komputera (np. reprezentacja liczb). Zadaniem użytkownika jest zminimalizowanie sumarycznego błędu powstającego podczas rozpatrywania danego zagadnienia. Wykonywane ćwiczenie ma na celu uświadomienie faktu istnienia niedokładności wykonywania obliczeń przy użyciu komputera.

Przebieg ćwiczenia:

Zadanie 1a: Obliczanie wartości wielomianu

m-plik:

function[war]=wielomian(A,x)

war=0;

n=length(A);

for i=1:n

war=war+A(i)*x^(n-i);

end

Zadanie 1b: Obliczanie wartości wielomianu z zastosowaniem schematu Hornera

m-plik:

function[war]=horner(A,x)

war=0;

n=length(A)-1;

for i=1:n

war=(war+A(i))*x;

end

war=war+A(n+1);

Obliczanie wartości wielomianu za pomocą stworzonych funkcji i narzędzi Matlaba

Wielomian:

m-plik:

function [w]=funkcja(x)

w=(x-1)^10;

Program obliczający wartości wielomianu różnym metodami:

m-plik:

A=[1 -10 45 -120 210 -252 210 -120 45 -10 1]

x=linspace(0.95, 1.05, 100)

for i=1:100

wart1(i)=funkcja(x(i));

wart2(i)=polyval(A,x(i));

wart3(i)=horner(A,x(i));

wart4(i)=wielomian(A,x(i));

end

plot(x,wart1,'*',x,wart2,'*',x,wart3,'*',x,wart4,'*')

Wykresy wartości dla funkcji (x-1)^10:

0x01 graphic

Legenda:

Kolor niebieski-wykres funkcji (x-1)^10

Kolor czerwony- wartość policzona bezpośrednio poprzez wstawienie X

Kolor błękitny- wartość policzona za pomocą polecenia polyval oraz za pomocą schematu Hornera

Wnioski:

Ćwiczenie 1 pozwala na porównanie skuteczności dwóch sposobów obliczania wartości wielomianu. Metoda pierwsza korzysta z bezpośredniego podstawienia wartości x do wzoru wielomianu, metoda druga korzysta ze schematu Hornera - metody minimalizującej liczbę mnożeń niezbędnych do otrzymania końcowego wyniku.

Metoda pierwsza wymaga n*(n+1)/2 mnożeń oraz n dodawań. Metoda druga przekształca wielomian do postaci:

0x01 graphic

Przekształcenie to redukuje liczbę niezbędnych do wykonania działań do n mnożeń oraz n dodawań, co znacząco przyspiesza proces otrzymywania wyniku.

Na podstawie wykresu można stwierdzić, że wbudowana funkcja Matlab'a oparta jest na schemacie Hornera gdyż ich wykresy się pokrywają.

Zadanie2: Obliczanie przybliżonej wartości pochodnej przy wykorzystaniu wzoru na różnicę progresywną oraz centralną.

Sprawdzana funkcja:10^x

Zadanie2a:Różnica progresywna:

m-plik:

function[war]=roznicaprog(x,h)

war=(10^(x+h)-10^x)/h

Zadanie2b:Różnica centralna:

m-plik:

function[war]=roznicacentralna(x,h)

war=(10^(x+h)-10^(x-h)/(2*h))

Zadanie2c:Obliczanie błędów całkowitych wyznaczonych przybliżeń oraz błędy względne różnicy centralnej i progresywnej.

m-plik:

h0 = 1; %krok podstawowy

x0 = 0.4; %wartość początkowa

poch1 = '10^x*log(10)';

poch2 = '(10^x*log(10)*log(10))+(0.1*10^x)';

poch3 = '(10^x*log(10)*log(10))+(0.1*(10^x)*log(10))+(0.1*(10^x)*log(10))

+(0.1*(10^x)*log(10))';

wpoch1 = eval(poch1);

wpoch2 = eval(poch2);

wpoch3 = eval(poch3);

for i=1:70

H(i) = h0*2^(-(i-1));

Rc(i) = roznicacentralna(x0,H(i));

Rp(i) = roznicaprog(x0,H(i));

BwRc(i) = (Rc(i)-wpoch1)/wpoch1; %błąd różnicy centralnej

BwRp(i) = (Rp(i)-wpoch1)/wpoch1; %błąd różnicy progresywnej

BodcRc(i) = ((-1/6)*(H(i))^2 * wpoch3)/wpoch1; %błąd odcięcia Rc

BodcRp(i) = ((1/2)*H(i) * wpoch2) / wpoch1; %błąd odcięcia Rp

end

loglog(H, abs(BwRc), H, abs(BwRp), H, abs(BodcRc), H, abs(BodcRp))

Wykresy błędów:

0x01 graphic

Legenda:

Kolor niebieski-błąd różnicy centralnej

Kolor zielony- błąd różnicy progresywnej

Kolor błękitny-błąd odcięcia różnicy progresywnej

Kolor purpurowy-błąd odcięcia różnicy centralnej

Wnioski:

M-pliki z zadania 2 wyliczają błędy całkowite różnicy progresywnej i centralnej oraz szkicują odpowiednie wykresy. Naszym zadaniem było zbadanie rozkładu błędu pochodnej funkcji 10 do potęgi x dla różnych wartości h (wyliczonych ze wzoru: H(i) = h0*2^(-(i-1))).



Wyszukiwarka

Podobne podstrony:
Błędy w obliczeniach numerycznych, Informatyka WEEIA 2010-2015, Semestr IV, Metody numeryczne, Lab 1
Sprawko Sebastiana i Stacha, Informatyka WEEIA 2010-2015, Semestr IV, Metody numeryczne, Lab 1 spraw
Sprawko moje pierwsze, Informatyka WEEIA 2010-2015, Semestr IV, Metody numeryczne, Lab 1 sprawko
Sprawko moje piąte, Informatyka WEEIA 2010-2015, Semestr IV, Metody numeryczne, Lab 5
Zagadnienia do przygotowania na zaliczenie wykładu Projektowanie Serwisów WWW, Informatyka WEEIA 201
odpowiedzi egzamin, Informatyka WEEIA 2010-2015, Semestr IV, Systemy Wbudowane, Inne, egzamin
Instrukcje Matlaba, Informatyka WEEIA 2010-2015, Semestr III, Automatyzacja Obliczeń Inżynierskich
bepka, Informatyka WEEIA 2010-2015, Semestr II, Ergonomia i zasady bezpiecznej pracy, Bezpieczenstwo
cwiczenie, Informatyka WEEIA 2010-2015, Semestr III, Programowanie Obiektowe
Sprawozdanie Krzysztof Filipek 3D6, Informatyka WEEIA 2010-2015, Semestr III, Wstęp do Techniki Cyfr
string, Informatyka WEEIA 2010-2015, Semestr III, Programowanie Obiektowe, Laboratorium

więcej podobnych podstron