Sortowanie Obliczenia symboliczne - Symbolic ToolBox

26
Sortowanie Obliczenia symboliczne - Symbolic ToolBox MOiPP 1 Wykład 4 Matlab

description

MOiPP. Wykład 4. Matlab. Sortowanie Obliczenia symboliczne - Symbolic ToolBox. Sortowanie bąbelkowe. Porównywanie kolejnych par elementów sąsiadujących i zamiana miejscami w przypadku niew ł a ś ciwej kolejno ś ci. 1234.....N. N-1 porównań. Wykonujemy N przebiegów. - PowerPoint PPT Presentation

Transcript of Sortowanie Obliczenia symboliczne - Symbolic ToolBox

Page 1: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

1

SortowanieObliczenia symboliczne - Symbolic ToolBox

MOiPP

Wykład 4

Matlab

Page 2: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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

Page 3: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

3

96 12 22 76 64 23 74 11

9622 76 64 23 74 1112

2 PRZEBIEG

1 PRZEBIEG

Page 4: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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"

Page 5: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

Symbolic ToolBox

Dodatkowy zestaw narzędziowy do MatlabaWymaga odrębnej licencji

Page 6: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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

Page 7: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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:

Page 8: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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)

Page 9: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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( )

Page 10: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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( )

Page 11: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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')

Page 12: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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

Page 13: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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

Page 14: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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])

Page 15: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

15

syms x df=diff(x^2) df =

2*x

Przykład:

Obliczenie pochodnej funkcjif(x)=x2

Page 16: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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:

Page 17: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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))

Page 18: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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

Page 19: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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

Page 20: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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

Page 21: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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

)

Page 22: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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)

Page 23: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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

Page 24: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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

Page 25: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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.

Page 26: Sortowanie Obliczenia symboliczne -  Symbolic ToolBox

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