metody numeryczne matlab


Metody numeryczne w nauce i technice.
MATLAB
Laboratorium
Laboratorium z metod numerycznych  Informatyka Stosowana I .
Plan zajęć:
Wprowadzenie  informacje wstępne:
1. Wstęp do programowania w środowisku Matlab.
2. Macierze, wektory, układy równań liniowych.
3. Interpolacja i aproksymacja.
4. Przybliżone rozwiązywanie równań nieliniowych.
5. Całkowanie i różniczkowanie numeryczne.
6. Rozwiązywanie równań różniczkowych zwyczajnych.
7. Kolokwium zaliczeniowe.
1.0 Wprowadzenie do metod numerycznych.
Metody numeryczne są działem matematyki, zajmującej się opracowywaniem metod
przybliżonego rozwiązywania zagadnień matematycznych, których rozwiązanie sposobami
analitycznymi (ścisłymi) jest trudne, albo wręcz niemożliwe.
1.1 Oszacowanie dokładności obliczeń i analiza błędów.
Błędy opisu matematycznego analizowanego zjawiska
Błędy początkowe (błędy danych wejściowych)
Błędy obcięcia (skończona liczba działań)
Błędy zaokrągleń (niedokładna reprezentacja liczb rzeczywistych)
Zadania zle uwarunkowane  niewielka względna zmiana danych powoduje duże względne
zmiany jego rozwiązania.
Algorytm jest numerycznie poprawny, jeżeli dla dokładnych danych wejściowych daje
rozwiązania będące rozwiązaniami zadania dla niewiele zaburzonych tych danych.
(nie dotyczy deterministycznych układów chaotycznych:&)
1.2 Podstawowe komendy Matlaba
% - komentarz, objaśnienia
clc - czyści okno poleceń Command Window
clf - czyści okno graficzne Figure
clear x - usuwa zmienną x z pamięci
clear all - usuwa wszystkie zmienne z pamięci
who,whos - wyświetla zdefiniowane zmienne
lenght(x) - zwraca długość wektora
size(M) - zwraca rozmiar macierzy, ilość wierszy i kolumn
t=t1:Dt:t2 - definiuje wektor o poczatku t1, krok Dt, końcu t2.
M - transpozycja macierzy M
A*B - iloczyn macierzy A i B
sum(x) - suma elementów wektora x
prod(x) - iloczyn elementów wektora x
det(A) - wyznacznik macierzy kwadratowej A
2
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
lu - rozkład macierzy na macierze trójkątne
[L,U]-lu(A) - L*U=A
[L,U,P]=lu(A) - L*U=PA
- L  macierz trójkątna dolna
- U  macierz trójkątna górna
- P  macierz permutacji
eye(n) - macierz jednostkowa o wymiarze (n x n)
inv(A) - macierz odwrotna
eig(A) - wektor wartości własnych macierzy kwadratowej A
[V,D]=eig(A) - D - diagonalna macierz wartości własnych A
- V  macierz, której kolumny odpowiadają wektorom własnym
spełniającym A*V=V*D
ones(m,n) - macierz jedynek (m x n)
zeros(m,n) - macierz zer (m x n)
2.0 Macierze, wektory, układy równań liniowych.
M-plik funkcyjny  nazwa funkcji.m
Kod:
fun1.m
----------------------------
function y=fun1(x)
% opis fukcji
y=4*sin(3*x).*exp(-x/2);
============================
p2.m
----------------------------
clear all
t=1:0.2:10;
y=2*sin(2*t-1);
b=fun1(t);
plot(t,b, xr ,t,y), grid on
pause(3)
grid off
Wynik przedstawia się następująco:
3
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
2.1 Macierze i wektory
M1=[1 2 3 W1=[1 2 3]
4 5 6]
M1= W1=
1 2 3 1 2 3
4 5 6
W2=[1 2 3]
M2=[1 2 3;4 5 6;7 8 9] W2=
1
M2= 2
1 2 3 3
4 5 6
7 8 9 W3=1:2:8
W3=
1 3 5 7
2.2 Rozwiązywanie układów równań liniowych
Układ równań liczbowych
a11*x1+a12*x2+& +a1k*xk+& +a1n*xn=b1
a21*x1+a22*x2+& +a2k*xk+& +a2n*xn=b2
ak1*x1+ak2*x2+& +akk*xk+& +akx+xn=bk
an1*x1+an2*x2+& +ank*xk+& +axn*xn=bn
Przykład liczbowy
3x + 7 y + 6z = 6x - 2y + 21
2x - 7 y + 9z - 2 = -4x +11
4x + 2y - z = 4x -15
A * x = B Zapis w Matlabie
det(A) `" 0
x = A-1 * B
x x1 x(1)
Ą# ń# Ą# ń# Ą# ń#
ó#yĄ# ó#x Ą# ó#x(2)Ą#
x = = =
2
ó# Ą# ó# Ą# ó# Ą#
ó# ó# Ą# ó#
Ł#zĄ# Ł#x3 Ś# Ł#x(3)Ą#
Ś# Ś#
4
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
2.3 Rozkład LU
Kod:
% Równanie
A * x = B (1)
% Rozkład LU
P * A = L * U
% Równanie (1) obustronnie mnożymy przez P
P * A *x = P * B
% Stosujemy rozkład LU
L * U *x = P * B
% Wprowadzamy nową zmienną
U * x = y
% Otrzymujemy równanie o macierzy trójkątnej
L * y = P * B
Przykład m2.m
Kod:
A=[1 2 3;2 3 4;3 4 6];
B=[7;8;9];
[L,U,P]=lu(A);
n=length(B);
PB=P *B;
% dla macierzy L
y(1)=PB(1)/L(1,1);
for k=2:n
y(k)=(PB(k)-L(k,1:k-1)*y(1:k-1)) )/L(k,k);
end
% dla macierzy U
x(n)=y(n)/U(n,n);
for k=1:n-1
x(n-k)=(y(n-k)-U(n-k,n-k+1:n)*x(n-k+1:n)) )/U(n-k,n-k);
end
x
2.4 Rozwiązania w Matlabie
Macierz kwadratowa A * x = B
det(A) `" 0
Kod:
x=A-1 * B
x=inv(A) * B
5
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
Inne przypadki: układy nadokreślone i niedookreślone
x=A\B %Matrix left division \ of Galois arrays
x=pinv(A)B %Moore-Penrose pseudoodwrotna macierz
Przykład 1
Rozwiąż równanie Lx  BT=2* Ex
5
Ą# - 7 4
ń#
ó#
A = [-10 20 30]
ó#-1 2 9Ą# B =
Ą#
ó# Ą#
0 5 6Ś#
Ł#
L  jest macierzą trójkątna dolna po permutacji macierzy A
E  jest macierzą jednostkową o wymiarach macierzy A
Kod:
A=[5 -7 4; =3 2 9; 0 5 6];
B=[-10 20 30];
[L,U,P]=lu(A);
E=eye(size(A));
X=(L-2*E)\B
Otrzymujemy wynik:
x=
10.0000
-20.0000
-27.2000
2.5 Zadania
1.
4x+3y+6=14+3x-2y-8;
6y+15+3z=-4x+3;
2x-25+2y=3x+3y-3x;
Oblicz y oraz s = x2+y2+z2
2.
6
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
5
Ą# - 7 4 x1
ń# Ą# ń#
ó# Ą# ó#x Ą#
A = 3 2 9 B = [-10 20 30] x =
2
ó#- Ą# ó# Ą#
ó# Ą# ó# Ą#
9 5 6
3
Ł# Ś# Ł#x Ś#
U  jest macierzą trójkątna górna macierzy A
E  jest macierzą jednostkową o wymiarach macierzy A
D  jest wyznacznikiem macierzy A
Rozwiąż równanie Ux-5BT=d* Ex
Rozwiązania
1.
Kod:
A=[1 3 8;4 6 0;5 -1 -3];
B=[8;-15;25];
x=A\B;
y=x(2)
s=x *x
Wynik:
y= -6.7000
s= 103.9400
2.
Kod:
A=[5 -7 4;-3 2 9;0 5 6];
B=[-10 20 30];
[L,U]=lu(A);
d=det(A);
E=eye(size(A));
x=(U-d*E)\(5*B )
Wynik:
x=
-0.1397
0.2740
0.4109
2.6 Układ nadmiarowy  ilośc równań większa od ilości niewiadomych.
7
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
Dla pomiarów [t1,y1]
t1 0.1 0.3 0.5 0.9 1.2 1.6 2.2 2.8
y1 2.5 2.3 2.7 2.9 2.5 2.0 1.4 1.2
Wyznaczyc współczynniki C1 równania y=f(t)
2
y(t) = C1 + C2 * e-t + C3 * e-3t
Kod:
t=[0.1 0.3 0.5 0.9 1.2 1.6 2.2 2.8]
y=[2.5 2.3 2.7 2.9 2.5 2.0 1.4 1.2]
plot(t,y. o )
% y=C1+C2*exp(-t)+C3*exp(-3*t.^2)
A=[ones(size(t)) exp(-t) exp(-3*t.^2)]
C=A\y
pause %dalej   enter w oknie polecen matlaba
clf
tt=[0:0.01:3] ;
AA=[ones(size(tt)) exp(-tt) exp(-3*tt.^2)];
yy=AA*C;
plot(tt,yy,t,y, o ),grid on, hold on
2.7 Układ niedookreślony  ilość równań mniejsza niż ilość niewiadomych
% R*x=B m5.m
% R=[R1 R2], R=[6 8 7 3 5
% x=[x1 x2 ] 3 5 4 1 3
% R1*x1+R*x2=B 2 5 3 7 2]
% x1*x1=B-R2*x2 [n,m]=size(R)
R1=R(:,1:n)
R2=R(:,n+:m)
B=[2 1 4]
x2=[1 1]
x1=R1\)B-R2*x2)
x=[x1 x2 ]
blad=B-R*x
3.0 Interpolacja i aproksymacja.
Interpolacja
Zadanie znalezienie funkcji F(x) przechodzącej przez zadane punkty (x,y) nazywamy
I N T E R P O L A C J  (po łacinie inter  między, polus  węzeł)
Punkty (x,y) nazywamy węzłami interpolacji.
Istnieje funkcja:
8
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
y = f (x), x "[x0 xn ]
Należy wyznaczyć funkcję F(x), taką aby:
F(x) = y
3.1 Metoda Funkcji bazowych
F(x) jest liniową kombinacją n=1 funkcji bazowych
0 (x),1(x) K n (x),
n
F(x) = i (x)
"a
i
i=0
Ć
Wprowadzając macierz bazową
Ć(x) = [0(x) 1(x) K n(x)]
i macierz współczynników A
T
A = [a0 a1 K an]
F(x) = Ć(x) " A
F(x0 ) 0 (x0 ) 1(x1) K n (x0 ) a0 y0
Ą# ń# Ą# ń# Ą# ń# Ą# ń#
ó#F(x ) Ą# ó# (x1) 1(x1) K n (x1) Ą# ó#a Ą# ó#y Ą#
1 0 1 1
ó# Ą# ó# Ą# ó# Ą# ó# Ą#
= " =
ó# Ą# ó# Ą# ó# Ą# ó# Ą#
M LL M M
ó# Ą# ó# Ą# ó# Ą# ó# Ą#
)Ś# (xn ) 1(xn ) K n (xn )Ś# Ł#an Ś# Ł#yn Ś#
Ł#F(xn Ł#0
Ć " A = Y
F(x) = Ć(x) "Ć-1 "Y
Jeżeli funkcje bazowe są wielomianami to interpolacja wielomianowa np. interpolacja
n (x) = xn
wielomianami Langrange`a, jednomianami
3.2 Wielomiany
n
p(x) = pn-i xn-i i " N
"
i-0
p(x) = 4x5 + 6x4 - 3x2 + 7x + 2
9
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
Funkcje MATLABA
p= [4 6 0 -3 7 2] % zapis wielomianu o współczynnikach p
y=polyval(p,x) % oblicza wartość wielomianu dla x
p=polyfit(x,y,n) % znajduje współczynniki wielomianu n-tego stopnia
aproksymującego dane (xi yi)
Kod:
xi=[ 2 4 6 8 9];
yi=[-5 0 2 -1 7];
plot(xi,yi, o ),grid on,pause(2)
n=length(xi);
p=polyfit(xi,yi,n-1);
x=1:0.01:9.2;
y=polyval(p,x);
plot(xi,yi, o ,x,y),grid on, pause(2)
pp=polyfit(xi,yi,8);
yy=polyval(pp,x);
plot(x1,yi, o ,x,y,x,yy, r ),grid on
axis([1 10 -10 12]) %dopasowanie osi wykresu
Interpolacyjne funkcje MATLABA
Matlab posiada rozbudowane funkcje interpolacyjne dedykowane do odpowiednich danych:
" Funkcje dla danych jednowymiarowych
interp1
" Funkcje dla danych dwuwymiarowych
inrerp2
" Funkcje dla danych wielowymiarowych
interp3, intern
Kod:
y=interp1(xi,yi,x, metoda )
%wykonuje interpolację w punktach określonych wektorami x dla zadanych węzłów (xi yi).
Elementy wektora xi muszą tworzyć ciąg rosnący.
metoda  wybór metody interpolacji
linear  interpolacja funkcją łamaną
spline  interpolacja funkcjami sklejanymi
cubic  interpolacja wielomianami 3-go stopnia
nearest  interpolacja wartościa najbliższych punktów
10
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
Kod:
xi=[ 2 4 6 8 9];
yi=[-5 0 2 -1 6];
plot(xi,yi, o ),grid on, pause(2)
x=1:0.01:9.1;
y1=interp1(xi,yi,x, linear );
plot(x,y1,xi,yi, o ),grid on, pause(2)
y2=interp1(xi,yi, o , spline );
plot(x,y2,xi,yi, o ),grid on, pause(2)
y3=interp1(xi,yi,x, cubic );
plot(x,y3,xi,yi, o ),grid on, pause(2)
y4=interp1(xi,yi,x, nearest );
plot(x,y4,xi,yi, o ),grid on, pause(2)
plot(x,y1,x,y2,x,y3,x,y4,xi,yi, o )
Wynik:
3.3 Aproksymacja
Aproksymacja
Zadaniem znalezienie funkcji F(x) z żądaniem, aby jak najbardziej zbliżała się do funkcji f(x) w
pewnym określonym przedziale (a,b) nazywamy A P R O K S Y M A C J .
Kryterium Aproksymacj metodą najmniejszych kwadratów jest minimalizacja całki:
b
Q = f (x) - F(x))2 dx
+"(
a
Dla przypadku funkcji dyskretnej, minimalizacja sumy:
11
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
a
2
Q =
"[y - F(xi )]
i
i=1
Wyznaczanie współczynników prostej regresji
(xi yi ) i = 1..n y = a " xi + b "y = y - yi
n n n
2
Q(a,b) =
""y = "( y - yi )2 = "(a " xi + b - yi )2
i=1 i=1 i=1
n
"Q(a,b)
= " xi + b - yi )" xi = 0
"2(a
"a
i=1
n n n
"Q(a,b) # ś#
= " xi + b - yi ) = 2ś#a + n " b - yi ź# = 0
"2(a "xi "
"b
i=1 # i=1 i=1 #
n n
__ __
1 1
b = yi - a xi b = y- a " x
" "
n n
i=1 i=1
# ś#
n n n
__ __
ś# ź#
a xi 2 + y- a " x " xi - xi " yi = 0
" " "
ś# ź#
i=1 ś# ź# i=1 i=1
# #
n n n n
__ __
# ś#
2
aś# - x xi ź# + y" xi - xi " yi = 0
"xi " " "
# i=1 i=1 # i=1 i=1
n n
__
" yi - y"
"xi "xi
i=1 i=1
a =
n n
__
2
- x"
"xi "xi
i=1 i=1
n
__ __
ś# ź# ś# ź#
"# xi - x ś# " # yi - y ś#
# # # #
i=1
a =
2
n
__
ś# ź#
"# xi - x ś#
# #
i=1
Kod:
xi=0:0.5:10;
n=length(xi);
y1=2*xi+3;
y2=3*(rand(1,n)-rand(1,n));
yi=y1+y2;
plot(xi,yi, * ),pause(2)
xs=sum(xi)/n; % wartość średnia x
ys=sum(yi)/n; % wartość średnia y
a=(xi*yi -n*xs*ys)/(xi*xi -n*xs^2);
b=ys-a*xs;
x=0:0.01:10;
y=a*x+b;
plot(xi,yi, * ,x,y),grid on
parametry_prostej=[a b]
12
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
Wynik:
parametry_prostej =
1.9143
3.9445
3.4 Zadania
Zadanie 1
Dokonano następujących pomiarów:
x -5 -3 0 2 5 6 8
y 10 40 80 90 130 145 160
1. Wyznacz prostą regresji.
2. Oblicz y(1) i y(7).
Kod:
x=[ -5 -3 0 2 5 6 8];
y=[10 40 80 90 130 145 160];
c=polyfit(x,y,1)
y1_7=polyval(c,[1,7])
Wynik:
y= 11.2889x + 70.0444
y(1)= 81.3333
y(7)=149.0667
13
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
Zadanie 2.
Wyznacz współczynniki wielomianu 4 stopnia aporoksymującego punkty pomiarowe(x,y), a
następnie oblicz wartość y(5).
x -2 0 1 3 6 8
y 1 3 0 -1 4 7
Kod:
x=[-2 0 1 3 6 8];
y=[1 3 0 -1 4 7];
c=polyfit(x,y,4) %wyznaczanie współczynników
y5=polyval(x,5) %obliczanie y(5)
xx=-2.5:0.1:9;
yy=polyval(c,xx);
plot(x,y, o ,xx,yy,5,y5, *r ),grid on
Wynik:
c= -0.0187 0.2.447 -0.5070 -1.4437 2.4623
y5= 1.4386
4.0 Przybliżone rozwiązywanie równań nieliniowych.
Twierdzenie Bolzano-Cauchy`ego
Jeżeli f(x) jest ciągła w przedziale [a,b] i f(a)" f(b)<0 to w przedziale (a,b) znajduje się co
najmniej jeden pierwiastek równania f(x)=0
Twierdzenie
14
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
Jeżeli w przedziale [a,b] spełnione są założenia tw. Bolzano-Cauchy`ego i dodatkowo
sgn(f (x))=const dla x " [a,b], to przedział ten jest przedziałem izolacji pierwiastka
równania f(x)=0
4.1 Metoda bisekcji:
xk -1 + x2
xk =
2
j = k - 3 (" j = k - 2k > 3
f (xk -1) " f (x1) < 0
Błąd metody:
x2 - x1
 = xk - x0 <
2k
4.2 Metoda cięciw
xk - x1
xk +1 = x1 - f (x1)
f (xk ) - f (x1)
xk - x1
xk +1 = x - f (xk )
f (xk ) - f (x1)
15
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
4.3 Metoda stycznych (Newtona)
f (xk )
xk +1 = xk - k e" 1
f '(xk )
f '(xk ) - f "(xk ) < 0 x1 = a
f '(xk ) " f "(xk ) < 0 x1 = b
4.4 Metoda iteracji dla równania x=F(x)
Twierdzenie
Jeżeli w przedziale [a,b] izolacji pierwiastka równania x=F(x) pochodna funkcji F (x) spelnia
"
warunek F'(x) d" M < 1 to proces iteracji jest zbieżny, przy czym x0 [a,b].
4.5 Wyprowadzanie metody
f (x) = 0
a " f (x) = 0
a " f (x) + x = x
F(x) = a " f (x) + x
x = F(x)
xk +1 = F(xk )
Warunki zapewniające zbieżność
F'(x) < 1
F(x) = a " f (x) +1
a " f (x) +1 < 1 a
4.6 Metoda iteracji
y = -x2 + 4x + 3 - x
Kod:
Plik funkcyjny f7.m: [f(x)]
function y=f7(x)
y=-x.^2+4*x+3-sqrt(abs(x));
16
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
Plik fukncyjny f8.m: [F(x)]
function y=f8(x)
global a
Y=a*f7(x)+x;
Plik skryptowy:
clear all,clc,clf
global a
a=0.3;
fplot('[f7(x),x,f8(x)]',[0 5 -0.5 6])
grid on
hold on
x(1)=1;
b=1;
k=1;
while b>0.001
x(k+1)=f8(x(k));
b=abs(f7(x(k+1)));
k=k+1;
if k>10, break, end
end
n=length(x);
zo=x(n)
plot(zo,0,'ok',x,f8(x),'ok')
Wynik:
4.7 Polecenia MATLABA
17
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
xo = fzero( plik_funkcyjny ,x0)
% oblicza miejsce zerowe funkcji podanej w m-pliku_funkcjnym
% x0 punkt startowy
r=roots(p)
% oblicza pierwiastki wielomianu o współczynnikach zadanych wektorem p
fplot( plik_funkcyjny ,limits)
% wykreśla funkcję podana w m-pliku_funkcyjnym w przedziale określonym przez
limits
limits jest wektorem określającym oś x  [ xmin xmax], lub osie x i y  [xmin xmax ymin
ymax].
4.8 Zadania
Zadanie 1
Wyznacz miejsca zerowe funkcji f(x)=0 w przedziale [0,9]
x x
x 0.2
2
f (x) = 2 " cos#Ą - 2ś# " e + " e10
ś# ź#
3
# # 7
Kod:
Plik funkcyjny:
function t=fun2(x)
y=2*cos(pi*x/3-2).*exp(-x/2)-0.2/sqrt(7).*exp(-x/10);
Plik skryptowy:
fplot( fun2 ,[-1 10 -2 2]), hold on
p1=fzero( fun2 ,2);
p2=fzero( fun2 ,6);
p3=fzero( fun2 ,8);
p=[p1 p2 p3]
plot(p,zeros(size(p)), ok ), grid on
Wynik:
18
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
Zadanie 2
Znalezć pierwiastki wielomianów:
a) p1(x)=2x3+6x2-20x-30
b) p2(x)=-1.5x5+2x4+20x3-100x2+80x+300
Kod:
p1=[2 6 -20 -30];
p2=[-1.5 2 20 -100 80 300];
r1=roots(p1)
r2=roots(p2)
x=-5:0.1:4;
y1=polyval(p1,x);
y2=polyval(p2,x);
subplot(2,1,1),plot(x,y1,r1,0,'o'), grid
subplot(2,1,2),plot(x,y2,r2,0,'o'), grid
Wynik:
19
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
5.0 Całkowanie i różniczkowanie numeryczne.
Dy=diff(y) %zwraca wektor różnic sąsiednich elementów wektora y
y = [y1 y2 y3 K yn ],
Dy = ["y1 "y2 K"yn-1]
"yk = yk +1 - yk dla k = 1Kn = 1
Kod
x=0:0.1:7;
y=sin(x);
n=length(x)
yprim=diff(y)./fidd(x); %pochodna
pot(x,y,x(1:n-1),yprim), grid
Kod f1.m
fumction y=f1(x)
y=2*x+5*cos(3*x).*exp(-x/2);
Kod
20
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
x=0:0.1:7;
y=f1(x);
n=length(x)
yprim=diff(y)./diff(x); %pochodna
plot(x,y,x(1:n-1),yprim),grid
legend( funkcja , pochodna );
5.1 Polecenia Matlaba
Dla wielomianów
P=[1 4 7 0 3 1 6]
P1=polyder(P)
Dla funkcji wymiernej
L=[-2 0 4 0 20 0]
M=[ 1 0 4 & ]
[L1,M1]=polyder(L,M)
5.2 Przykłady
Wykreślić funkcję i jej pochodną dla x z przedziały -4 do 4
x3 -1
W (x) =
x5 + 2x2 + 8
Rozwiązanie
h=0.05;
x=-4:h:4;
L=[1 0 -1];M=[1 0 2 0 8];
[L1,M1]=polder(L,M)
y=polyvel(L,x)./polyval(M,x);
yprim=polyval(L1,x)./polyval(M1,x);
plot(x,y,x,yprim, - ),grid
title( Funkcja wymierna i jej pochodna )
legend( funkcja , pochodna )
5.3 Całkowanie numeryczne
21
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
Wzory do numerycznego całkowania funkcji jednej zmiennej nazywane są
kwadraturami.
Funkcji wielu zmiennych  kubaturami
Kwadratury interpolacyjne i aproksymacyjne:
Kwadratury Newtona-Cotesa
Kwadratury Gaussa
Kwadratury Lobatto
Metoda prostokątów
n-1 n-1
F H" h f (xk ) = h yk
""
k =1 k =1
Metoda trapezów
n-1 n-1
f (xk ) + f (xk +1)
h # ś#
F H" h = ś# y1 + 2 yk + yn ź#
""
2 2
k =1 # k =2 #
Metoda parabol
n / 2
h
F H" ) + 4 f (x2k ) + f (x2k +1))
"( f (x2k -1
3
k =1
Metoda Prostokątów
22
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
5.4 Polecenia Matlaba
h
F = f (x)dx
+"
a
F=quad( funkcja ,a,b)
% Simpson`s
F=quad8(funkcja a,b)
%Newton-Cotes(dawna)
felp quad
Quadv, quadl, dblquad, triplequad
5.5 Zadania
Oblicz całkę oznaczoną z funkcji f(x) w granicach a=1 b=10 metodą prostokątów,
trapezów I wbudowaną Matlaka
x
2
f (x) = 2x + 5cos(3x) * e
23
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
Rozwiązanie
h=0.01;
x=1:h:10;
n=length(x)
fplot( f1 ,[1 10]), grid
y=f1(x);
a=x(1);
b=x(n);
F(1)=h*sum(y(1:n-1)); %prostokątów
F(2)=h*(y(1)+2*sum(y(2:n-1))+y(n))/2; %trapezów
F(3)=quad( f1 ,a,b); %Simpson`s
Wynik=F
Oblicz całkę metodą prostokątów, trapezów i wbudowaną w Matlaba oraz wyznacz błąd
obliczeń numerycznych
Ą
F =
+"sin(x)dx
0
Rozwiązanie
h=0.1;
x=0:h:pi;
n=length(x)
fplot( sin ,[0 3*pi]), grid
y=sin(x);
a=x(1);
b=x(n);
format short
F1=h*sum(y:n-1)); %prostokątów
F2=h*(y(1)+2*sum(y(2:n-1))+y(n))/2; %trapezów
F3=quad( sin ,a,b); %Simpson`s
Wynik=[F1,F2,F3]
Blad=2-Wynik
Wynik obliczeń
Ą
F =
Wyniki= +"sin(x)dx = 2
0
1,9954
1,9975
1,9991
24
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
Błąd=
0,0046 metoda prostokątów
0,0025 metoda trapezów
0,0009 metoda Matlab
Oblicz pole figury leżącej w II-cwiartce układu współrzędnych ograniczonej wielomianem
W(x)=-x4+3x+4 oraz osiami OX i OY. Podaj pierwiastki wielomianu W(x), naszkicuj
wykres W(x) dla x z przedziału [-1.5 2]
Rozwiązanie
f2-inline( -x.^4+3*x+4 , x )
fplot(f2,[-1.5 2]), grid on
p2=[-1 0 0 3 4]
r2=roots(p2)
F2=quad(f2,r2(4),0)
z1=fzero(f2,-1);
z2=fzero(f2,2);
z=[z1;z2];
6.0 Równania różniczkowe zwyczajne (ordinary Differentia Equation ODE)
Równanie n-tego rzędu
x(n) (t) = f (t, x, x(1) , x(2) ,...x(n-1))
Równanie pierwszego rzędu
x(1) (t) = x'= f (t, x)
" Zagadnienia brzegowe (Boundary Valne Problem BVP)
" Równania różniczkowe cząstkowe (Partial Differentia Equation PDE)
6.1 Metody numeryczne
Numeryczne rozwiązywanie układów równań różniczkowych polega na poszukiwaniu
rozwiązania, startując z punktu, w którym jest ono znane (warunek początkowy). Jeśli znamy
rozwiązanie w punktach t1 do tk to dla kolejnego tk+1 wyznaczamy y(tk+1) stosując odpowiednią
aproksymację.
Prosta metoda Eulera
"yk +1 dy(x)
= f (xk , yk ) = f (x, y)
"xk+1 dx
25
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
"yk +1 = yk +1 - yk y(x0 ) = y0
"xk +1 = xk +1 - xk = "x = h = const
y1 = y0
yk +1 = yk + F(xk , yk ) * "x
6.2 Rozwiązać numerycznie równanie w przedziale 0,3
dy
= -a * y + b
dx
Rozwiązanie analityczne
b b
y(x) = + (y0 - ) * e-ax
a a
Dane:
a=2, b=6, y(0)=y0=-1
Kod:
clear all, clf
f=inline( -2*y+6 , x , y );
x(1)=0; % xo
y(1)=-1; % yo
xk=3;
dx=0.01; %krok
n=floor((xk-x(1))/dx); %zaokraglenie
for k=1:n
y(k+1)=y(k)+f(x(k),y(k))*dx;
x(k+1)=x(k)+dx;
end
x1=min(x);x(2)=max(x);y1=min(y);y2=max(y);m=0.2;
yd=3+exp(-2*x)*(-3+y(1)); % rozw. dokładne
b=(y-yd)/(y2-y1)*100; % blad w procentach
b1=min(b);b3=max(b);
subplot(2,1,1)
plot(x,y,x,yd),grid on, title( rozwiazania )
axis([x1 x2 y1-m y2+m])
subplot(2,1,2)
plot(x,b),grid on,title( blad wzgledny w % )
axis([x1 x2 b1-m b2+m])
26
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
Wynik:
6.3 Funkcje ODE w Matlabie
[T,Y] = odexx( F , przedzial, y0)
xx  liczba okreslajaca metode
powyższa instrukcja całkuje układ równań różniczkowych postacy yn=F(t,y)
w przedzale od t_pocz do t-koniec
przedzial = [t_pocz t_koniec]
z warunkami początkowymi podanymi w wektorze y0
 F jest nazwą ODE pliku funkcyjnego.
Function F(t,y) musi zawracać kolumnowy wektor.
[T Y] Każdy wiersz w macierzy rozwiązania Y odpowiada argumentowi t zwracanemu w
kolumnowym wektorze T.
Układy równań dobrze uwarunkowanych
ode45 - Runie-Kutta rzędu (4,5)
ode23 - Runie-Kutta rzędu (2,3)
ode113  Adams-Bashforth-Moulton
Układy równań zle uwarunkowanych (sztywnych)
ode15s - Gear`s
ode23s - Rosenbrock
ode23t - trapez
ode23tb
27
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
Przykład:
Rozwiązać numerycznie układ równań różniczkowych
dy
= 2 y2 y1(0) = 1
dt
dy1
= - y1 - 0.5 y2 y2 (0) = 0
dt
w przedziale t [0,15], przy zadanych warunkach początkowych. Wykreślić przebiegi czasowe i
trajektorię. Podać wartość y1 i y2 dla t=1 i t=5
0 2 y1 1
dy Ą# ń# Ą# ń# Ą# ń#
= * y y = y(0) =
ó# ó#y Ą# ó#0Ą#
dt
Ł#-1 - 0,5Ą# Ł# 2 Ś# Ł# Ś#
Ś#
Pliki funkcyjny równanie różniczkowego row1.m
Kod:
function dy=row1(t,y)
dy=zeros(2,1);
dy(1)=2*y(2);
dy(2)=-y(1)-0.5*y(2);
Plik skryptowy rr1.m
Kod:
[t,y]=ode45( row1 ,[0 14],[1;0]);
subplot(2,1,1)
plot(t,y(:,1),t,y(:,2)),grid on
title( przebiegi czasowe )
subplot(2,1,2)
plot(y(:,1),y(:,2),grid on
title( trajektoria )
y_p=interp1(t,y,[1,5], linear )
Wynik:
28
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
y_p =
0.2760 -0.5477
0.2550 -0.1284
6.4 Równanie różniczkowe n-tego rzędu
n n-1
# ś#
d y dy d y
ś# ź#
= f y, ,L,
n n-1
ś#t, dt ź#
dt dt
# #
podstawiamy
n-1
dy d y
y1 = y y2 = L yn =
n-1
dt dt
otrzymujemy układ równań pierwszego rzędu
dy1
ż#
= y2
#
dt
#
2
#dy = y3
#
dt
#
#
M
#
#d n y = f (t, y1, y2,K, yn)
#
# dtn
Przykład:
Rozwiąż równanie w przedziale 0 & 10
29
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
(1) n -4
y + y * y - y * e = cos( t)
n
y(0) = -1, y' (0) = 0 y (0) = 0
0
y1 = y y = y'1 y1 = y
2
d
y1 = y
2
dt
d
y = y3
2
dt
d
- 4
y3 = - y1 * y3 + y1 * e + cos( t)
dt
6.5 Równanie Van der Pola
yn + (y2 -1) * y'+ y = 0
Kod:
function dy=row_vdp(t,y)
global m
dy=[y(2);-y(1)+m*(1-y(1)^2)*y(2)];
Kod:
clear all
global m
m=2;
[t,y]=ode45( row_vdp ,[0 20],[2:0];
plot(t,y(:,1)),grid on
Przykładowe zadanie:
Rozwiąż równanie różniczkowe
Kod:
function dx=de(t,x)
dx=[x(2);((2/t^2-1)*x(1))-x(2)/t];
Kod:
[t,x]=ode45( de ,[0.01 15],[1 0]);
plot(t,x(:,1));grid on
x_5=interp1(t,x(:,1),5, linear )
30
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007
Laboratorium z metod numerycznych  Informatyka Stosowana I .
Wynik:
31
Przepisał: Blick Materiały dostarczył: qWest Pomagał: L3Vy
PWSZ Tarnów 2007


Wyszukiwarka