Tutorial_MATLAB_06(1).pdf
(
211 KB
)
Pobierz
Laboratorium POK
Materiały do Laboratorium Informatyki
Rok akademicki: 2006/07
Semestr: letni
MATLAB – cz. 6 – Obliczenia
symboliczne
Środowisko MATLAB’a oferuje szereg bibliotek funkcji (tzn. toolbox’ów). Jednym z nich
jest toolbox „Symbolic Math” służący do przeprowadzana obliczeń symbolicznych. Toolbox
ten może być niedostępnych we wszystkich wersjach MATLAB’a.
Pierwszym krokiem jest zdefiniowanie zmiennych symbolicznych w następujący sposób:
x = sym('x')
x =
x
a = sym('alpha')
a =
alpha
Polecenia te tworzą dwie zmienne symboliczne:
- zmienną x, która wypisywana na ekran jest pod nazwą x,
- zmienną a, która wypisywana na ekran jest pod nazwą alpha.
Jak widać, jeśli zmienna jest zmienną symboliczną to wynik wypisywany jest bez wcięcia
(tzn. wartość zmiennej a, czyli ‘alpha’, pojawia się na ekranie dokładnie pod „a =”). Dla
porównania, wpisanie zwykłej wartości liczbowej do zmiennej, jak np.:
b = 8
b =
8
Powoduje wyświetlenie wyniku (8) z wcięciem (jak wyżej).
Przykłady prostego użycia:
sym(2)/sym(5)
ans =
2/5
Wynikiem jest „2/5”. Widzimy, że nie jest obliczana wartość wyrażenia
5
2
, a jedynie jego
postać. Ponadto:
Opracowali: dr inż. Witold Nocoń na podstawie MATLAB help.
Materiały do Laboratorium Informatyki
Rok akademicki: 2006/07
Semestr: letni
sym(2)/sym(5) + sym(1)/sym(3)
ans =
11/15
W tym wypadku następuje sprowadzenie do wspólnego mianownika.
x = sym('x')
a = sym('alpha')
rho = sym('(1 + sqrt(5))/2')
a więc definiujemy
ρ
1+
5
, co daje wynik:
2
rho =
(1 + sqrt(5))/2
Policzmy teraz wyrażenie:
f
= ρ
−
−
1
f = rho^2 - rho – 1
otrzymujemy:
f =
(1/2+1/2*5^(1/2))^2-3/2-1/2*5^(1/2)
Otrzymujemy dosyć skomplikowane wyrażenie. Możemy je uprościć wykorzystując funkcję
simplify
:
simplify(f)
ans =
0
Widzimy, że w tym przypadku wyrażenie to redukuje się do zera.
Więcej możliwości:
Załóżmy, że chcemy badać funkcję kwadratową. aby możliwe było dokonywanie operacji
symbolicznych (różniczkowanie, całkowanie itp.), musimy zdefiniować tą funkcję w
następujący sposób:
a = sym('a')
b = sym('b')
c = sym('c')
x = sym('x')
Opracowali: dr inż. Witold Nocoń na podstawie MATLAB help.
2
ρ
Materiały do Laboratorium Informatyki
Rok akademicki: 2006/07
Semestr: letni
lub prościej:
syms a b c x
a następnie zdefiniować funkcję:
f = sym('a*x^2 + b*x + c')
Funkcja
findsym
pozwala na znalezienie zmiennych symbolicznych znajdujących się w
wyrażeniu, a więc:
findsym(f)
ans =
a, b, c, x
Aby podstawić wartości liczbowe do zmiennych symbolicznych, posługujemy się funkcję
subs
. Np.:
syms x
f = 2*x^2 - 3*x + 1
subs(f,2)
ans =
3
a więc do wyrażenia f wstawiono x=2 i obliczono wynik. Jeśli w wyrażeniu występuje więcej
zmiennych symbolicznych, należy podać nazwę zmienne której wartość wstawiamy, np:
syms x y
f = x^2*y + 5*x*sqrt(y)
g = subs(f, x, 3)
a więc w wyrażeniu f, podstawiamy x=3, ciągle pozostaje zmienna symboliczna y, więc nie
można obliczyć wartości liczbowej wyrażenia f. otrzymujemy więc następujący wynik:
ans =
9*y+15*y^(1/2)
Podstawiając natomiast y=2, czyli:
subs(g,2)
otrzymujemy:
ans =
39.2132
Opracowali: dr inż. Witold Nocoń na podstawie MATLAB help.
Materiały do Laboratorium Informatyki
Rok akademicki: 2006/07
Semestr: letni
Operacje na wyrażeniach symbolicznych:
1) Obliczanie pochodnej:
syms x
f = sin(5*x)
diff(f)
ans =
5*cos(5*x)
- obliczona pochodna funkcji f
diff(f,2)
ans =
-25*sin(5*x)
- obliczona druga pochodna funkcji f
2) Pochodna cząstkowa (pochodna funkcji posiadającej więcej zmiennych):
syms s t
f = sin(s*t)
diff(f,t)
- obliczanie pochodnej „f po t” czyli
∂
t
ans =
cos(s*t)*s
diff(f,s)
- obliczanie pochodnej „f po t” czyli
∂
f
∂
s
ans =
cos(s*t)*t
diff(f,t,2)
- obliczanie drugiej pochodnej „f po t” czyli
∂
2
f
∂
t
2
ans =
-sin(s*t)*s^2
3) Obliczanie granic
syms h n x
limit( (cos(x+h) - cos(x))/h,h,0 )
ans =
-sin(x)
Jak nietrudno zauważyć policzyliśmy pochodną funkcji cos(x), licząc granicę ilorazu
różnicowego, czyli:
Opracowali: dr inż. Witold Nocoń na podstawie MATLAB help.
f
∂
Materiały do Laboratorium Informatyki
Rok akademicki: 2006/07
Semestr: letni
f
'
()
=
lim
⎜
⎝
f
( ) ( )
⎠
+
h
−
f
x
⎞
h
h
0
→
3) Całkowanie:
Jeśli:
f =
sin(s*t)
to
int(f)
daje następujący wynik:
ans =
-1/s*cos(s*t)
Jest to więc całka funkcji f.
Aby obliczyć całkę oznaczoną, należy określić przedział:
int(sin(2*x),0,pi/2)
2
Liczymy więc całkę:
∫
sin
dx
()
x
, co daje wynik:
0
ans =
1
4) Algebra liniowa:
syms t;
G = [cos(t) sin(t); -sin(t) cos(t)]
G =
[ cos(t), sin(t)]
[ -sin(t), cos(t)]
Możemy obliczyć macierz A=G*G:
A=G*G
A =
[ cos(t)^2-sin(t)^2, 2*cos(t)*sin(t)]
[ -2*cos(t)*sin(t), cos(t)^2-sin(t)^2]
Opracowali: dr inż. Witold Nocoń na podstawie MATLAB help.
x
x
⎛
2
Plik z chomika:
JacekSzulc
Inne pliki z tego folderu:
Matlab - obiczenia numeryczne i ich zastosowanie.pdf
(175326 KB)
Intuitive Probability and Random Processes Using MatLab - Steven M. Kay.pdf
(58839 KB)
Digital Image Processing Using Matlab - Gonzalez Woods & Eddins.pdf
(39303 KB)
Matlab an Introduction with Application (A. Gilat).pdf
(59873 KB)
Digital Signal Processing - Computer Based Approach - Sanjit K. Mitra.pdf
(33609 KB)
Inne foldery tego chomika:
_VIDEO Analiza Matematyczna 1 [Politechnika Wrocławska]
Afera Epsteina
Afera podsłuchowa
Analiza matematyczna 1
Angielski
Zgłoś jeśli
naruszono regulamin