sortowanie obliczenia symboliczne - symbolic toolbox
Post on 10-Feb-2016
105 Views
Preview:
DESCRIPTION
TRANSCRIPT
1
SortowanieObliczenia symboliczne - Symbolic ToolBox
MOiPP
Wykład 4
Matlab
Porównywanie kolejnych par elementów sąsiadujących i zamiana miejscami w przypadku niewłaściwej kolejności
Sortowanie bąbelkowe
1 2 3 4 ..... N
N-1 porównań Wykonujemy N przebiegów
Sortowanie bąbelkowe skróconePrzebiegów wykonujemy N-1 W każdym kolejnym przebiegu liczba analizowanych par jest zmniejszana o 1, a
3
96 12 22 76 64 23 74 11
9622 76 64 23 74 1112
2 PRZEBIEG
1 PRZEBIEG
4
clcclearN=5;G=rand(1,N)%stadardowa funkcja sortującaG1=sort(G)%sortowanie bąbelkowefor k=1:N-1 for m=1:N-k if G(m)>G(m+1) pom=G(m); G(m)=G(m+1); G(m+1)=pom; end end disp(G) %pokazuje kolejne wypływające "bąbelki"end%ostatecznie po posortowaniudisp(G)
zamiana miejscami gdy elementy w niewłaściwej kolejności
M-plik - sortowanie "bąbelkowe"
Symbolic ToolBox
Dodatkowy zestaw narzędziowy do MatlabaWymaga odrębnej licencji
6
wymagają zadeklarowania zmiennych symbolicznych – abstrakcyjnych zmiennych nie posiadających wartości.
syms zmienna1 zmienna2 itd
Służy do tego polecenie syms:
Obliczenia symboliczne
7
Symboliczne rozwiązywanie równań – funkcja solve()
syms x af=a - x^2 f =
a - x^2r=solve(f, x) r= a^(1/2) -a^(1/2)
Przykład:
8
syms a b c dA=[a b; c d] A = [ a, b]
[ c, d]B=[e f ; g h] B = [ e, f]
[ g, h]
Symboliczne operacje macierzowe
il_m=A*B il_m = [ a*e+b*g, a*f+b*h]
[ c*e+d*g, c*f+d*h]il_e=A.*B il_e = [ a*e, b*f]
[ c*g, d*h]
ilustracja iloczynów macierzy kwadratowych
macierzowy Cauchy'ego
elementowy Hadamarda (po współrzędnych)
9
Podstawienie wartości do wyrażenia symbolicznegoPrzykład:
syms a b c x % definicja 4 zmiennych symbolicznych y = solve(a*x^2+b*x+c) % rozwiązanie równania względem x y = -1/2*(b-(b^2-4*a*c)^(1/2))/a -1/2*(b+(b^2-4*a*c)^(1/2))/aa=3; b=4; c=1; % Przypisanie wartości liczbowych a b c w = subs(y) % Obliczenie wartości liczbowej dla y w = -0.3333 -1.0000
Obliczenia na wyrażeniach symbolicznych - funkcja subs( )
10
Do obliczania granic na podstawie wyrażenia symbolicznego służy funkcja limit.
Jej składnia może być następująca:
limit(F,[zmienna],[b])
wyznaczenie granicy dla wyrażenia symbolicznego F, względem wskazanej zmiennej,
granica dla zmiennejb,
Obliczenia granic ciągów i funkcji - funkcja limit( )
11
Uwagi:
•zmienna jest opcjonalna, jeśli wyrażenie zawiera jedną zmienną. •b opcjonalne, jego pominięcie oznacza granicę dla zmienna0.
wyznaczenie granicy lewostronnej dla wyrażenia symbolicznego F, w punkcie b,
limit(F, zmienna, b, 'left')
wyznaczenie granicy prawostronnej dla wyrażenia symbolicznego F, w punkcie b.
limit(F, zmienna, b, 'right')
12
Obliczenie granicy ciągu:
syms n g=limit((1-3*n)/(1+n), inf) g = -3
Uwaga: inf jest symbolem ∞ (nieskończoność)
Przykład
13
Przykład
Obliczenie granicy funkcji:
syms x g=limit(tan(x),x, pi/2,'left') g =
Infg=limit(tan(x),x, pi/2,'right') g =
-Inf
14
Argumentami funkcji są: • funkcja, której pochodna będzie liczona,• zmienna, względem której pochodna jest liczona
(opcjonalnie) • rząd pochodnej (opcjonalnie)
Obliczanie pochodnych funkcji - funkcja diff( )
diff (F,[zmienna],[N])
15
syms x df=diff(x^2) df =
2*x
Przykład:
Obliczenie pochodnej funkcjif(x)=x2
16
syms x y zf=(x*y*z)^x+(1/(x*y))^2dfx=diff(f) dfx =
(x*y*z)^x*(log(x*y*z)+1)-2/x^3/y^2 dfx=diff(f,x) dfx =
(x*y*z)^x*(log(x*y*z)+1)-2/x^3/y^2 dfy=diff(f,y) dfy =
(x*y*z)^x*x/y-2/x^2/y^3 dfz=diff(f,z) dfz =
(x*y*z)^x*x/z
Obliczenie pochodnej funkcji f(x, y, z) według każdej zmiennej (pochodne cząstkowe):
Przykład:
17
u= (x*y*z)^x*(log(x*y*z)+1)^2+(x*y*z)^x/x+6/x^4/y^2
Obliczenie drugiej pochodnej funkcji:
Przykład:
f (x, y, z )
syms x y zf=(x*y*z)^x+(1/(x*y))^2u=diff(f,x,2)
Można też tak: u=diff(diff(f,x))
18
Całkowanie funkcji - funkcja
int( )
Jej argumentem jest funkcja symboliczna
opcjonalnie także zmienna całkowania oraz granice całkowania (dla całek oznaczonych).
int(F,[zmienna], {a , b})
Uwaga: domyślnie zmienną symboliczną jest x
opcjonalnie
19
syms a x c=int(a+x) % domyślna zmienna to x
c = a*x+1/2*x^2
c=int(a+x, a) % teraz zmienna to acs =
1/2*a^2+a*x
Sprawdzenie:s=diff(f)
s = a+x
Przykład: Obliczenie całki nieoznaczonej funkcji f(a,b)=a+b
20
Obliczenie całki oznaczonej:
syms x
c=int(x^2,1,3)
syms xc=int(sin(x),0,pi)
Obliczenie całki oznaczonej funkcji sin(x) w przedziale (0, π)
c= 26/3
c = 2
21
Wykresy funkcji symbolicznych
ezplot( f, [xmin xmax ymin ymax])
clcsyms xf=x^2ezplot(f,[-10 10])hold ondf=diff(f)ezplot(df,[-10 10])hold onf0=0*xezplot(f0,[-10 10])
-10 -5 0 5 10
-20
-15
-10
-5
0
5
10
15
20
x
0
f(x)
, df(x
)
22
ezplot( f )
Domyślne przedziały: x (-2, 2), y (-2, 2)
ezplot( 'x-y', [ -5 5 -5 5] )
Mogą być też funkcje uwikłane dwóch zmiennych:
-5 0 5-5
-4
-3
-2
-1
0
1
2
3
4
5
x
y
x-y = 0
ezplot( 'x-y ')
-6 -4 -2 0 2 4 6-6
-4
-2
0
2
4
6
x
y
x-y = 0
domyślny przedział: x (-2, 2)
23
clcsyms x yf=y-sin(x)df=y-diff (f)ezplot (f,[0 2*pi -1 1])hold onezplot (df,[0 2*pi -1 1])
Przykład
0 1 2 3 4 5 6-1
-0.8
-0.6
-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
x
y
y-cos(x) = 0
24
clcsyms x ymyfun=@(x,y,k)(x^k - y^k - 1)ezplot(myfun(x,y,2),[0 5])hold onh=ezplot(myfun(x,y,1/2),[0 5])set(h,'Color','r')title('x^k - y^k - 1')
Parametryzacja funkcji z wykorzystaniem funkcji anonimowej
0 1 2 3 4 50
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
x
y
xk - yk - 1
25
ZadanieUtworzyć własną funkcję w osobnym m-pliku, której zadaniem jest obliczanie pola powierzchni pomiędzy dwiema parabolami o równaniach:
y1=Ax2-B y2=-Cx2+D
gdzie:• A,B,C,D>0 • pole liczymy w granicach punktów przecięcia obydwu paraboli.Wykorzystać zdefiniowaną funkcję do obliczeń dla założonych dowolnych wartości A, B, C, D.
26
function wynik=polepara(A,B,C,D)syms x y a b c df1=a*x^2-b-y;f2=-c*x^2+d-y;m=solve(f1,f2); %punkty przecięciaa=A;b=B;c=C;d=D;x1=subs(mzerowe.x(1)) %granica dolna całkowaniax2=subs(mzerowe.x(2)) %granica górna całkowaniaF1=A*x^2-BF2=-C*x^2+Dwynik=int(F1-F2,x,x1,x2)
clcr=polepara (1, 2, 1, 2)
polepara.m
test.m
Rozwiązanie
top related