Metody sprawko 2

LABORATORIUM

METODY NUMERYCZNE

Aproksymacja średniokwadratowa

Prowadzący: dr inż. Tomasz Kozłowski

Autor: Przemysław Wojciechowski

Treść zadania:

Dla funkcji f(x) = 2cos(3x) w punktach{1,2,5} wyprowadź ręcznie współczynniki funkcji: f(x) = ax2 + bx + c stosując metodę aproksymacji średnio kwadratowej i porównaj
z wyliczeniami numerycznymi stosując odpowiednie skrypty Matlaba. Następnie wyznacz postać wielomianu interpolacyjnego metodą Newtona używając skrypty Matlaba. Wykreśl
za pomocą komendy plot błędy lokalne E1(x) = abs(y(x)−f(x)) oraz
E2(x) = abs(y(x)−P2(x)) i skomentuj rezultat. Wykreśl podane punkty {xi,y(xi)} przebieg funkcji y(x), f(x) oraz przebieg wyznaczonego wielomianu interpolacyjnego używając komenty plot. Wydruki wykresów (wraz z kodem) dołącz do sprawozdania

Wstęp teoretyczny:

Interpolacja polega na znajdowaniu krzywej przechodzącej przez wszystkie węzły. Zdarzają się jednak sytuacje, w których dane te mogą być obarczone błędem, np. gdy są one odczytywane z pomiarów. W takim wypadku bardziej interesujące jest zachowanie ogólnego charakteru krzywej, która te punkty przybliża niż przeprowadzanie jej przez wszystkie węzły. Do tego zadania wykorzystywana jest aproksymacja metod¡ najmniejszych kwadratów.
W aproksymacji metodą najmniejszych kwadratów mamy z góry zadaną bazę funkcji
za pomocą których chcemy przybliżyć funkcję poszukiwaną postaci:


F(x) =  c1f1(x) +  c2f2(x) +  . . .  +  cnfn(x)

dla zadanego zbioru punktów (xj,  yj), j = 1,  . . . , m. Jak wynika z tego wzoru, poszukiwana funkcja F(x) jest liniową kombinacją funkcji bazowych fi(x), i = 1,  . . . ,  n. Funkcje bazowe mogą być dowolne, dopóki są liniowo niezależne. Niewiadomymi w tak postawionym zadaniu są współczynniki ci. Ponieważ, w ogólnym przypadku, tak zadana funkcja poszukiwana nie będzie pokrywała się ze wszystkimi węzłami. W zależności od doboru współczynników ci może lepiej przybliżać pewne węzły a gorzej inne. Należy zatem dobrać odpowiednie kryterium porównawcze. Możemy obliczyć pionową odległość funkcji
od każdego z węzłów:


rj = yj − F(xj)

Ale ponieważ tak zapisane rj może być zarówno dodatnie jak i ujemne, to proste zsumowanie tych wartości nie nadaje się do porównywania różnych krzywych. Lepszym wyborem jest użycie rj2 wtedy:


$$p = \sum_{j = 1}^{m}r_{j}^{2}$$

jest wartością, której minimum będzie określało krzywą najlepiej dopasowaną do węzłów.

Dopasowanie metod¡ najmniejszych kwadratów dla dowolnej bazy funkcji

W ogólnym przypadku doboru bazy funkcji fi(x), i = 1,  . . . ,  n będziemy mieli:


y = F(x)=c1f1(x) +  c2f2(x) +  . . .  +  cnfn(x)

Niewiadomymi będą tu współczynniki ci. Celem jest znalezienie takich współczynników ci, …,  cn, które minimalizują kwadraty pionowych odległości funkcji F(x) od węzłów (xj, yj), j = 1,  . . . , m. Dla tak postawionego zadania możemy zapisać układ równań:


c1f1(x1) +  c2f2(x1) +  . . .  +  cnfn(x1) = y1


c1f1(x2) +  c2f2(x2) +  . . .  +  cnfn(x2) = y2


. . .


c1f1(xn) +  c2f2(xn) +  . . .  +  cnfn(xn) = yn

lub w postaci macierzowej:


Ac = y

gdzie:


$$\left\lbrack \begin{matrix} f_{1}(x_{1}) & f_{2}(x_{1}) & \ldots \\ \ldots & \ldots & \ldots \\ f_{1}(x_{m}) & f_{2}(x_{m}) & \ldots \\ \end{matrix}\text{\ \ \ \ }\begin{matrix} f_{n}(x_{1}) \\ \ldots \\ f_{n}(x_{m}) \\ \end{matrix} \right\rbrack \bullet \begin{bmatrix} c_{1} \\ \ldots \\ c_{n} \\ \end{bmatrix} = \begin{bmatrix} y_{1} \\ \ldots \\ y_{m} \\ \end{bmatrix}$$

Dochodzimy do podobnej postaci układu jak w poprzednim podrozdziale różniącym się tylko definicją macierzy A. Naszym zadaniem jest zminimalizowanie wartości ρ = ||y−Ac||22. Postępując w przedstawiony wcześniej sposób otrzymujemy równania normalne postaci:


(ATA)c = ATy

Wyznaczając wektor c z tego równania otrzymujemy nieznane współczynniki.

Definicja iloczynu skalarnego 

Iloczyn skalarny dwóch wektorów  i  jest to liczba równa iloczynowi modułów (długości) tych wektorów i cosinusa kąta między nimi w przypadku, gdy są to wektory niezerowe i równa zeru, gdy jeden lub drugi wektor jest wektorem zerowym. Iloczyn skalarny oznaczamy następująco:


$$\left( \overset{\overline{}}{a},\overset{\overline{}}{b} \right) = \overset{\overline{}}{a} \bullet \overset{\overline{}}{b} \bullet cos(\overset{\overline{}}{a},\overset{\overline{}}{b})$$

Przykład obliczeniowy:

Tab.1 Tabela z wartościami punktów


i
0 1 2

x
1
2

5

y(x)
2
1,99

1,93

Wzór wielomianu:


Q(x) = cφ0(x) + bφ1(x) + aφ2(x)

gdzie:
φ0(x) = 1, φ1(x) = x, φ2(x) = x2

Rozpisując macierz otrzymujemy:


$$\begin{bmatrix} \left( \varphi_{0},\varphi_{0} \right) & \left( \varphi_{0}{,\varphi}_{1} \right) & \left( {\varphi_{0},\varphi}_{2} \right) \\ \left( \varphi_{1},\varphi_{0} \right) & \left( \varphi_{1},\varphi_{1} \right) & \left( \varphi_{1}{,\varphi}_{2} \right) \\ \left( \varphi_{2},\varphi_{0} \right) & \left( \varphi_{2},\varphi_{1} \right) & \left( \varphi_{2},\varphi_{2} \right) \\ \end{bmatrix} \bullet \begin{bmatrix} a \\ b \\ c \\ \end{bmatrix} = \begin{bmatrix} \left( f,\varphi_{0} \right) \\ \left( f,\varphi_{1} \right) \\ \left( f,\varphi_{2} \right) \\ \end{bmatrix}$$

Obliczam elementy macierzy:


$$\left( f,\varphi_{0} \right) = \sum_{i = 0}^{2}{f\left( x_{i} \right) \bullet}\varphi_{0}\left( x_{i} \right) = 2 \bullet 1 + 1,99 \bullet 1 + 1,93 \bullet 1 = 5,92$$


$$\left( f,\varphi_{1} \right) = \sum_{i = 0}^{2}{f\left( x_{i} \right) \bullet}\varphi_{1}\left( x_{i} \right)2 \bullet 1 + 1,99 \bullet 2 + 1,93 \bullet 5 = 15,63$$


$$\left( f,\varphi_{2} \right) = \sum_{i = 0}^{2}{f\left( x_{i} \right) \bullet}\varphi_{2}\left( x_{i} \right) = 2 \bullet 1^{2} + 1,99 \bullet 2^{2} + 1,93 \bullet 5^{2} = 58,21$$


$$\left( \varphi_{0},\varphi_{0} \right) = \sum_{i = 0}^{2}{\varphi_{0}\left( x_{i} \right) \bullet}\varphi_{0}\left( x_{i} \right) = 3$$


$$\left( \varphi_{0},\varphi_{1} \right) = \sum_{i = 0}^{2}{\varphi_{1}\left( x_{i} \right) \bullet}\varphi_{0}\left( x_{i} \right) = 8$$


$$\left( \varphi_{0},\varphi_{2} \right) = \sum_{i = 0}^{2}{\varphi_{2}\left( x_{i} \right) \bullet}\varphi_{0}\left( x_{i} \right) = 30$$


$$\left( \varphi_{1},\varphi_{1} \right) = \sum_{i = 0}^{2}{\varphi_{1}\left( x_{i} \right) \bullet}\varphi_{1}\left( x_{i} \right) = 30$$


$$\left( \varphi_{1},\varphi_{2} \right) = \sum_{i = 0}^{2}{\varphi_{2}\left( x_{i} \right) \bullet}\varphi_{1}\left( x_{i} \right) = 134$$


$$\left( \varphi_{2},\varphi_{2} \right) = \sum_{i = 0}^{2}{\varphi_{2}\left( x_{i} \right) \bullet}\varphi_{2}\left( x_{i} \right) = 642$$

Po podstawieniu:


$$\begin{bmatrix} 3 & 8 & 30 \\ 8 & 30 & 134 \\ 30 & 134 & 642 \\ \end{bmatrix} \bullet \begin{bmatrix} a \\ b \\ c \\ \end{bmatrix} = \begin{bmatrix} 5,92 \\ 15,63 \\ 58,21 \\ \end{bmatrix}$$

Wielomian interpolacyjny będzie miał następującą postać:


Q(x)=1,27x2+7,9x8,7

Kod źródłowy:

clc; clear all; close all; format compact

%% Dane

xi=[1 2 5];

q=inline('2*cos(3*xi)');

yi=q(xi);

%% Aproksymacja średnio kwadratowa

n=length(xi);

ai=polyfit(xi,yi,n-1);

a=min(xi); b=max(xi);

x=linspace(a,b,1000000);

Ap=polyval(ai,x);

disp(sprintf('Wspolczynniki aproksymacji średniokwadratowej'))

ai

E1=abs(q(x)-Ap);

%% Newton

[cn,DD] = newtonp(xi,yi);

P2 = polyval(cn,x);

disp(sprintf('Wspolczynniki wielomianu Newtona'))

cn

E2=abs(q(x)-P2);

%% Rysownie wykresu

grid on

plot(xi,yi,'mo',x,q(x),'-k',x,Ap,'.g',x,E1,'xb',x,P2,'m',x,E2,'ok')

legend('punkty zadane','funkcja bazowa','aproksymacja średnio kwadratowa','błąd aprok.','wielomian Newtona','błąd w. Newtona')

Skrypt obliczenia wielomianu Newtona:

function [cn,DD] = newtonp(x,y)

N = length(x) - 1;

DD = zeros(N+1,N+1);

DD(1:N+1,1)=y';

for k=2:N+1

for m=1:N+2-k

DD(m,k) = (DD(m+1,k-1) - DD(m,k-1))/(x(m+k-1)-x(m));

end

end

r = DD(1,:);

cn = r(N+1);

for k=N:-1:1

cn = [cn r(k)] - [0 cn*x(k)];

end

end

Wyniki obliczeń:

Tab.2 Wyniki obliczeń

Wielomian interpolacyjny wyliczony ręcznie metodą aproksymacji średniokwadratowej
Q(x) = −1, 27x2 + 7, 9x − 8, 7
Wielomian interpolacyjny wyliczony w programie Matlab
M3(x) = −1, 2617x2 + 7, 6855x − 8, 4038

Wnioski:

Wyliczone wielomiany interpolacyjne są bardzo do siebie zbliżone. Różnice między nimi mogą wynikać z błędów przybliżeń zastosowanych w metodzie obliczania metodą aproksymacji średniokwadratowej obliczanej ręcznie, w celu ułatwienia obliczeń.


Wyszukiwarka

Podobne podstrony:
metody sprawko 2 2 1
Metody sprawko calka, Automatyka i robotyka air pwr, VI SEMESTR, Metody numeryczne
Metody sprawko 3
metody sprawko2, Automatyka i robotyka air pwr, VI SEMESTR, Metody numeryczne
metody sprawko4, Automatyka i robotyka air pwr, VI SEMESTR, Metody numeryczne
metody sprawko3, Automatyka i robotyka air pwr, VI SEMESTR, Metody numeryczne
moje sprawka, Metody sprawko 3, LABORATORIUM METOD I ALGORYTMÓW STEROWANIA CYFROWEGO
Metody sprawko 1
Metody sprawko 3k
nieodporny sprawozdanie, Pwr, Metody i algorytmy sterowania cyfrowego, sprawka
Wybrane metody analizy jakościowej. Reakcje analityczne wybranych anionów, sprawka z chemi utp rok I
sprawko tran, Nowoczesne metody analizy żywności
Błędy w obliczeniach numerycznych - stare, Informatyka WEEIA 2010-2015, Semestr IV, Metody numeryczn
sprawko oczkowawezlowa, aaa, studia 22.10.2014, całe sttudia, III semestr, metody numeryczne lab
Metody numeryczne, Sprawko, Rafał Kudelski Gr
gauss sprawko, Automatyka i robotyka air pwr, VI SEMESTR, Metody numeryczne
Metody numeryczne, sprawko numeryczne, WYDZIAŁ: IMIR
sprawko moo1, Automatyka i Robotyka, Semestr III, Metody Obliczeniowe Optymalizacji, Gotowce, labki

więcej podobnych podstron