Laboratorium 6

Transkrypt

Laboratorium 6
Metody numeryczne
Laboratorium 6 – Miary dopasowania funkcji aproksymującej
Funkcja polyfit()
W = polyfit (x, y, n)
Funkcja przyjmuje dwa wektory punktów: x i y. Powinny mieć taką samą liczbę elementów.
n określa stopień wielomianu, który ma te podane punkty aproksymować. Zwracany wektor W
zawiera współczynniki przy odpowiednich potęgach zmiennej x od największej zaczynając.
Czyli dla instrukcji:
W = polyfit(x,y,2); %% parabola, krzywa 2-go stopnia
wektor W zawiera 3 elemeny, współczynniki wielomianu W(x)=w1x2+w2x+w3 gdzie w1=W(1),
w2=W(2), w3=W(3). Przy n=2 wektor W będzie miał 3 elementy.
Funkacja polyval()
Y = polyval (W, x)
Funkcja liczy wartość wielomianu określonego współczynnikami W w punktach podanych w
wektorze x. Wynik zapisuje do wektora Y. Czyli po prostu liczy wartości Y=W(x).
Przykład:
x=[1 2 3 4];
y=[1 4 8 15];
n=length(x);
W = polyfit(x,y,1); %% aproksymacja wielomianem 1-go stopnia, linia prosta
wy = polyval(W,x); %% wy to wartości funkcji według wielomianu W dla wektora punktow x
%% rysowanie punktow oryginalnych (x,y) czyli funkcji F(x)
%% oraz tych otrzymanych z wielomianu aproksymacyjnego W(x)
plot(x,y,'*',x,wy,'-+'); %% najpierw punkty zrodlowe (x,y), potem punkty (x,wy)
%% x1=0:0.1:5; y1=polyval(W,x1); plot(x,y,'*',x,wy,'-+', x1,y1);
Zadania
Danych jest sześć punktów:
p1 (1, 1), p2 (2, 5), p3 (3, 8), p4 (4, 17), p5 (5, 25), p6 (6,32)
1. Napisać skrypt, który wykorzystując funkcję polyfit() dla podanych 6 punktów znajdzie
wielomian aproksymacyjny 1-go stopnia (prosta), narysować punty p1, ..., p6 oraz funkcję W(x)
aproksymującą podane punkty.
Przetestować działanie skryptu dla wszystkich możliwych stopni wielomianu aproksymacyjnego
czyli (dla 6 punktów) od 0 do 5. Zerowy stopień wielomianu jest po prostu średnią arytmetyczną.
2. Napisać skrypt, który dla znalezionego wielomianu W(x) 3-go stopnia obliczy wymienione miary
dopasowania (czyli różne rodzaje błędów aproksymacji) funkcji aproksymującej W(x) do wartości
współrzędnych y zadanych punktów. Miary dopasowania funkcji aproksymującej (następna strona):
• błąd bezwzględny,
• błąd kwadratowy,
• średni błąd procentowy,
• pierwiastek średniego błędu kwadratowego.
Skrypt powinien wyświetlać wartości tych błędów z jakimś opisem, który błąd jest który. Nie trzeba
rysować wykresów w tym zadaniu.
3. Napisać skrypt, który wyświetli błędy z zadania 2 dla wszystkich stopni wielomianu
aproksymacyjnego, od 0 do 5. Wyświetlone informacje powinny dawać obraz zmniejszającego się
błędu dla coraz wyższego stopnia wielomianu W(x).
4. Korzystając z rysowania blędów na wykresach w Octave:
%%
%%
%%
%%
hold on
errorbar(x,wy,abs(y-wy),"~"); %% bledy na y
errorbar(x,wy,abs(y-wy),"#~k"); %% bledy tez na y ale w kolorze r
hold of
narysować punty p1, ..., p6, funkcję W(x) aproksymującą podane punkty oraz paski błędów (funkcja
errorbar(), pokazujące zakres błędu dla każdego z punktów, dla których wyznaczona wielomian
aproksymujący.
5. Wykorzystując funkcję interp1() wykonać interpolację podanych na początku strony 6 punktów
oraz narysować te punkty wraz z funkcją je interpolującą. Przetestować interpolację dla metod:
'linear', 'nearest' oraz 'spline'. Porównać z interpolacją otrzymaną za pomocą funkcji polyfit().
Błędy, albo miary dopasowania :)
ϵ i= y i−W ( xi )
ϵ i to różnica między współrzędną yi zadanego punktu, a wartością wyi =W(xi) czyli wartością
wielomianu aproksymującego W(x) w i-tym punkcie.
n
n
i=1
i=1
Błąd bezwzględny: BB=∑∣y i −W (x i)∣=∑ ∣ϵi∣
n
n
i=1
i=1
Błąd kwadratowy (suma błędów kwadratowych - SSE): BK =∑ ( yi −W (x i ))2=∑ (ϵ i)2
Średni błąd procentowy: SBP=
n
y i−W ( x i)
1
⋅100 % czyli średni błąd względny * 100%
∑
n i=1
yi
∣
∣
n
n
1
1
Średni błąd kwadratowy (MSE): SBK = ⋅∑ ( y i−W ( x i))2= ⋅∑ (ϵi )2
n i=1
n i=1
√
n
√
n
1
1
Pierwiastek średniego błądu kwadratowego (RMSE): σ F = ⋅∑ ( y i−W ( xi ))2 = ⋅∑ (ϵ i)2
n i=1
n i=1
Inaczej odchylenie standardowe, może być też dzielenie przez n-1 zamiast przez n.

Podobne dokumenty