4C3 Michał Wróbel Marek Niemiec lab MN sprawozdanie ćw3

background image

Sprawozdanie

Temat ćw3: Interpolacja i aproksymacja

Sprawozdanie wykonali:
Marek Niemiec

152139

Michał Wróbel

152180

Pierwszą funkcją, która poddaliśmy aproksymacji była funkcja pierwotna

y=1,2 x

2

2,3 x−3,1 . Najpierw wyznaczyliśmy punkty wykresu dla pierwotnej funkcji

(niebieskie gwiazdki). Następnie za pomocą funkcji polyfit i polyval aproksymowaliśmy funkcje
dla węzłów od 1 do 4 (linie zielone).

M-funkcja wygląda następująco:

% funkcja y=1,2x^2 + 2,3x - 3,1

x=1:0.1:5;
y=(x.*x)*1.2 + x.*2.3 -3.1;

% funkcja

plot(x,y,

'b*'

),xlabel(

'os x'

),ylabel(

'os y'

),title(

'wykresy funkcji y = 1,2x^2 +

2,3x - 3,1'

)

hold

on

for

n=1:4

p=polyfit(x,y,n);
yw=polyval(p,x);

plot(x,yw,

'g-'

)

end

Tak wyglądają wykresy przedstawiające powstałe funkcje:

background image

Wykres wyglądająca jak wykres funkcji y=ax+b powstał przez aproksymację danych dla

węzłów n=1. Wykresy powstałe przez aproksymację danych dla węzłów n=2,3,4 pokrywają się z
wykresem funkcji bazowej.

Kolejna funkcją, którą poddaliśmy aproksymacji była funkcja y=

x

. Najpierw zostały

wyznaczone punkty i na ich podstawie został wykreślony wykres funkcji bazowej (zielona linia).
Następnie aproksymowaliśmy funkcję w zakresie węzłów n=1:50 . W przedziale dla n=1:20
uzyskaliśmy następujące funkcje (czerwona linia) oraz błąd wynikający z aproksymacji (niebieska
linia).

M-plik wygląda następująco:

% |sqrt(x^2)| - funkcja modu³ pierwiastek z x

x1=-5:0.2:5;

y1=abs(sqrt(x1.*1));

% wyniki funkcji

plot(x1,y1,

'g-'

),xlabel(

'os x'

),ylabel(

'os y'

),title(

'wykresy funkcji |

sqrt(x^2)|'

)

hold

on

for

n=41:43

pf=polyfit(x1,y1,n);

yz=polyval(pf,x1);
plot(x1,yz,

'r-'

)

% wykres funkcji uzyskanej poleceniem matlaba

blad=yz - y1;
plot(x1,blad,

'b-'

)

% wykres bledu (róznicy jaka powstala miedzy wynikami)

%%%%%%%%

end

figure;
hold

on

for

n=1:4

%wielomian czybyszewa

w_cz=seqcheb(n,2);
w_cz_p=polyval(w_cz,x1);

plot(x1,w_cz_p,

'r--'

)

end

Dla n=1:20 wykresy funkcji aproksymowanej maja postać:

background image

Dla n=20:30 wygląda to tak:

Dla n=30:40 wykresy funkcji zbytnio nie zmieniają kształtu jednak po przekroczeniu

węzłów n=41 po brzegach zaczynają się pojawiać oscylacje co świadczyło by o wystąpieniu
zjawiska Rungego.

background image

Następnym zadaniem było napisanie funkcji aproksymującej zbiór elementów,

wykorzystanie tej funkcji w zadaniach oraz porównanie wyników z funkcjami matlaba polyfit i
polyvil.

Pierwszym zadaniem z tej serii była aproksymacja danych dla funkcji pierwotnej

y=ax

2

bxc . M-plik ma następującą konstrukcje:

% wielomian y=ax^2 + bx +c
% obliczamy a,b,c

fi0=[1 1 1 1];
fi1=[0 1 2 3];

fi2=[0 1 4 9];
format

long

e

;

x=[0 1 2 3];

%dane wejsciowe

y=[1 2 4 8];

%dane wyjsciowe

Fi=[ones(size(x)); x; x.*x]

% funkcja obliczajaca wartosci przy wielomianie

A=Fi * Fi';
A

b=Fi * y';
b

c=inv(A) * b;
c

% funkcja matlaba

axb=polyfit(x,y,2);

axb
y_axb=[axb(1,3)*x.*x + axb(1,2)*x + axb(1,1)]

plot(x,y,

'g'

),xlabel(

'os x'

),ylabel(

'os y'

),title(

'wykresy funkcji y=ax^2 + bx

+ c'

)

hold

on

plot(x,y_axb,

'r--'

)

blad=y_axb - y;
plot(x,blad,

'b'

)

Powstałe wykresy przedstawiają wykres funkcji bazowej (linia zielona), wykres funkcji

powstałej przez aproksymacje (przerywana linia czerwona) oraz wykres błędu (linia niebieska). Jak
widać na krańcach przedziału błędy są duże dla aproksymacji funkcją matlaba dla węzłów n=2.

background image

Drugim zadaniem było uzyskać funkcje opisującą zjawisko przypływów w Morzu

Północnym aproksymując serię danych pomiarowych. Funkcja pierwotna miała postać

M =h

0

a1sin

2 t

12



a2cos

2 t

12

. W zadaniu korzystaliśmy z utworzonego algorytmu i

funkcji Matlaba. M-pik wygląda tak:

% zadanie 1: z poziomem morza pólnocnego
% M(x)=h0 + a1*sin((2*pi*t)/12) + a2*cos((2*pi*t)/12)

t=[0 2 4 6 8 10];
h=[1.0 1.6 1.4 0.6 0.2 0.8];

Mi=[ones(size(t)); sin((2*pi*t)/12); cos((2*pi*t)/12)]
A1=Mi *Mi';

A1
b1=Mi * h';

b1
c1=inv(A) * b;

c1

% funkcja matlaba

figure;
poziom=polyfit(t,h,2);

poziom

% b³¹d

blad2=h_poziom-h
h_poziom=[poziom(1,1) + poziom(1,2)*sin((2*pi*t)/12) +

poziom(1,3)*cos((2*pi*t)/12)];
plot(t,h,

'r'

),title(

'falowanie poziomu morza pólnocnego :)'

),xlabel(

't

[h]'

),ylabel(

'h [m]'

)

hold

on

plot(t,blad2,

'b'

)

plot(t,h_poziom,

'g--'

)

Wykresy przedstawiające wykres funkcji bazowy (linia czerwona), wykres funkcji

uzyskanej poleceniem matlaba (linia przerywana zielona) oraz wykres funkcji błędu (linia
niebieska).

background image

Trzecim zadaniem z tej serii było aproksymacja funkcji kwadratowej dla dwóch funkcji

bazowych, która minimum osiąga w p. W=(1,y) oraz nie przecina osi x. Jako funkcji pierwotnej
użyliśmy funkcji y=2x

2

4x3 . Wszystkie obliczenia zostały zrobione w M-pliku.

% zadanie 2: aproksymacja funkcji kwadratowej, która minimum osiaga
% w punkcie o wspólrzedne w=(1,y) oraz funkcja nie przechodzi przez os 'x'

% do zadania zostala przyjeta funkcje f(x)=2x^2 - 4x + 3
% funkcja przybiera postac po przeksztalceniu f(x)=3 + 2(x^2 - 2x)

% oznaczymy sobie funkcje bazowe jako a0 i a1.
% Funkcja przybiera postac f(x)=a0 + a1(x^2 - 2x)

% dane obliczylismy wykorzystujac funkcje kwadratowa

format

long

e

;

xk=[-2 -1 0 1 2 3 4];
yk=[19 9 3 1 3 9 19];

% korzystamy z funkcji napisanej w poprzednim zadaniu a nastepnie
% porównujemy wyniki z funkcja matlaba oraz z przyjetym równaniem

Fk=[ones(size(xk)); xk.*xk - 2*xk];
Fk

A2=Fk *Fk';
A2

b2=Fk * yk';
b2

c2=inv(A2) * b2;
c2

% funkcja matlaba

fun_kw=polyfit(xk,yk,1);

fun_kw
yk_fun_kw=[fun_kw(1,1)+fun_kw(1,2)*(xk.*xk - xk*2)];

blad3=yk_fun_kw - yk;
figure;

plot(xk,yk,

'r'

),xlabel(

'oœ x'

),ylabel(

'os y'

),title(

'Aproksymacja funkcji

f(x)=2x^2-4x+3 '

)

hold

on

plot(xk,yk_fun_kw,

'g--'

)

plot(xk,blad3,

'b'

)

Wykresy przedstawiające wykres funkcji bazowy (linia czerwona), wykres funkcji

uzyskanej poleceniem matlaba (linia przerywana zielona) oraz wykres funkcji błędu (linia
niebieska).

background image

Czwartym zadaniem z było aproksymacja funkcji kwadratowej, która posiada miejsce

zerowe w punkcie z=(1,0). Aproksymacje ma być przeprowadzona dla trzech funkcji bazowych.
Jako funkcji pierwotnej użyliśmy funkcji y=x

2

5x−6 . Wszystkie obliczenia zostały zrobione

w M-pliku.

% zadanie 3: aproksymacja funkcji kwadratowej, która ma miejsce zerowe w
% punkcie p0=(1,0)

% do zadania zosta³a przyjêta funkcja f(x)=x^2 + 5x - 6
% oznaczymy sobie funkcje bazowe (w tym zaaniu wyznaczymy je 3)

% f(x)= a0 + a1x + a2x^2 gdzie a0= -6, a1=5, a2=1

xw=[-8 -7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5];

yw=[xw.*xw + 5*xw - 6];

% korzystamy z naszej funkcji :) i liczymy

Fw=[ones(size(xw)); xw; xw.^xw];
Fw

A3=Fw *Fw';
A3

b3=Fw * yw';
b3

c3=inv(A3) * b3;
c3

% funkcja matlaba

fun_kw2=polyfit(xw,yw,2);

fun_kw2
yw_fun_kw2=[fun_kw2(1,3)+fun_kw2(1,2)*xw + fun_kw2(1,1)*(xw.*xw)];

blad4=yw_fun_kw2 - yw;
figure;

plot(xw,yw,

'r'

),xlabel(

'oœ x'

),ylabel(

'os y'

),title(

'Aproksymacja funkcji

f(x)=x^2+5x-6 '

)

hold

on

plot(xw,yw_fun_kw2,

'g--'

)

plot(-6,0,

'y*'

,1,0,

'y*'

)

% miejsca zerowe funkcji pierwotnej

plot(xw,blad,

'b'

)

Wykresy przedstawiające wykres funkcji bazowy (linia czerwona), wykres funkcji

uzyskanej poleceniem matlaba (linia przerywana zielona),wykres funkcji błędu (linia niebieska)
oraz zostały zaznaczone miejsca zerowe jako żółte gwiazdki.

background image

W czwartym zadaniu widać, że wykresy funkcji pierwotnej i funkcji uzyskanej przez

aproksymacje dla trzech funkcji bazowych pokrywają się natomiast wykres błędu jest na poziomie
0. Porównując to do wyników z zadania 3, gdzie przy aproksymacji korzystaliśmy z dwóch funkcji
bazowych wynika, że aby uzyskać maksymalną zgodność funkcji pierwotnej i funkcji
aproksymowanej powinniśmy używać do aproksymacji danych możliwie największą liczbę funkcji
bazowych. Analizując początkowe zadania (funkcje kwadratowe oraz pierwiastek) widać, że
wielomiany należy aproksymować dla liczby węzłów n nie mniejszej od stopnia wielomianu –
widać to na przykładzie aproksymacji dwóch funkcji kwadratowych. Liczby węzłów n nie można
także podnosić do nieskończoności. Aproksymacja funkcji pierwiastka dowodzi, że liczbę węzłów
należy określać w pewnym przedziale – większym od stopnia wielomianu i mniejszym od jego
pewnej wielokrotności, którą najlepiej określić empirycznie.

Porównując metody aproksymacji używane w zadaniach lepszy wynik uzyskiwaliśmy dla

funkcji napisanej w oparciu o aproksymacje średniokwadratową. Funkcje Matlaba polyfit i polyval
dawały wykresy o dużym błędzie niedokładności w stosunku do wykresu funkcji pierwotnej.


Wyszukiwarka

Podobne podstrony:
WYDZIA~1, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!!LABORKI - sprawozdania
spr-122, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!!LABORKI - sprawozdania,
SPRAWOZDANIE NR 4 - Michał, pwr-eit, FIZYKA, LABORATORIUM[moje], Sprawozdania
Fizyka cw 123 wyniki, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!!LABORKI -
półprzewodnikowe złącze p-n, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!!LAB
Lab 8 - Polarymetr, sprawozdanie Magdy 74, GRUPA 10
Lab 4 - Elektroliza, Sprawozdanie 4 (Elektroliza), Wydział
TiSP - dok, Lab TiSP - Sprawozdanie, PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA
TiSP - dok, Lab TiSP - Sprawozdanie, PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA
lab 01 sprawozdanie
LAB113, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!!LABORKI - sprawozdania,
laborka37, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!!LABORKI - sprawozdani
41konspekt, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!!LABORKI - sprawozdan
Wyniki do ćwiczenia 82 dla dave, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!
LAB 0 P, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!!LABORKI - sprawozdania,
lab73moja, Labolatoria fizyka-sprawozdania, !!!LABORKI - sprawozdania, Lab, !!!LABORKI - sprawozdani

więcej podobnych podstron