1 / 32

Matlab Przykłady metod obliczeniowych Obliczenia symboliczne

MOiPP. Wykład 4. Matlab Przykłady metod obliczeniowych Obliczenia symboliczne. Sortowanie bąbelkowe. Porównywanie kolejnych par elementów sąsiadujących i zamiana miejscami w przypadku niew ł a ś ciwej kolejno ś ci. 1 2 3 4 ..... N. N-1 porównań. Wykonujemy N przebiegów.

Télécharger la présentation

Matlab Przykłady metod obliczeniowych Obliczenia symboliczne

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MOiPP Wykład 4 • Matlab • Przykłady metod obliczeniowych • Obliczenia symboliczne

  2. Sortowanie bąbelkowe Porównywanie kolejnych par elementów sąsiadujących i zamianamiejscami w przypadku niewłaściwej kolejności 1 2 3 4 ..... N N-1 porównań Wykonujemy N przebiegów Sortowanie bąbelkowe skrócone Przebiegów wykonujemy N-1 W każdym kolejnym przebiegu liczba analizowanych par jest zmniejszana o 1, a

  3. 1 PRZEBIEG 96 12 22 76 64 23 74 11 2 PRZEBIEG 12 22 76 64 23 74 11 96

  4. M-plik - sortowanie "bąbelkowe" clc clear N=5; G=rand(1,N) %stadardowa funkcja sortująca G1=sort(G) %sortowanie bąbelkowe for 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 posortowaniu disp(G) zamiana miejscami gdy elementy w niewłaściwej kolejności

  5. Obliczenia symboliczne w Matlabie Niezbędny jest tu dodatkowy (komercyjny) tzw. toolbox o nazwie SymbolicTool

  6. Obliczenia symboliczne wymagają zadeklarowania zmiennych symbolicznych– abstrakcyjnych zmiennych, które nie posiadają wartości liczbowej • Służy do tego polecenie syms: • symszmienna1 zmienna2 itd

  7. Symboliczne rozwiązywanie równań – funkcja solve() • Przykład: • syms x a • f=a - x^2; • z =solve(f, x) • z = • a^(1/2) • -a^(1/2)

  8. Symboliczne operacje macierzowe syms a b c d e f g h A=[a b; c d] B=[e f ; g h] il_m=A*B il_e=A.*B A = [ a, b] [ c, d] B = [ e, f] [ g, h] il_m = [ a*e+b*g, a*f+b*h] [ c*e+d*g, c*f+d*h] il_e = [ a*e, b*f] [ c*g, d*h] iloczyn macierzowy Cauchy'ego iloczyn elementowy Hadamarda (po współrzędnych) ilustracja iloczynów macierzy kwadratowych

  9. Wstawienie danych do wyrażeń symbolicznych - funkcja subs( ) Przykł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 a=3; b=4; c=1; % Przypisanie wartości liczbowych a b c w = subs(y) % Obliczenie wartości liczbowej dla y Rezultat: y = -1/2*(b-(b^2-4*a*c)^(1/2))/a -1/2*(b+(b^2-4*a*c)^(1/2))/a w = -0.3333 -1.0000

  10. Obliczenia granicciągów i funkcji - funkcja limit( ) 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 zmiennejb,

  11. Uwagi: • zmienna jest opcjonalna, jeśli wyrażenie zawiera jedną zmienną. • b opcjonalne, jego pominięcie oznacza granicę dla zmienna0. • 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. Przykład Obliczenie granicy ciągu: syms n w= limit((1-3*n)/(1+n), inf) Rezultat: w = -3 Uwaga: inf jest symbolem ∞ (nieskończoność)

  13. Przykład Obliczenie granicy lewo i prawostronnej funkcji tg(x) w punkcie pi/2 symsx a=limit(tan(x),x, pi/2,'left') b=limit(tan(x),x, pi/2,'right') a= Inf b= -Inf

  14. Obliczanie pochodnych funkcji - funkcja diff( ) • Argumentami funkcji są: • funkcja, względem której pochodna będzie liczona, • zmienna, względem której pochodna jest liczona (opcjonalnie) • rząd pochodnej (opcjonalnie) diff(F,[zmienna],[N])

  15. Przykład: • Obliczenie pochodnej funkcji f(x)=x2 symsx a=diff(x^2) Rezultat • a = • 2*x

  16. Przykład: Obliczenie pochodnej funkcji f(x, y, z) według każdej zmiennej (pochodne cząstkowe):

  17. syms x y z f=(x*y*z)^x+(1/(x*y))^2 diff(f) diff(f,x) diff(f,y) diff(f,z) ans = (x*y*z)^x*(log(x*y*z)+1)-2/x^3/y^2 ans = (x*y*z)^x*(log(x*y*z)+1)-2/x^3/y^2 ans = (x*y*z)^x*x/y-2/x^2/y^3 ans = (x*y*z)^x*x/z

  18. Przykład: Obliczenie pochodnej funkcji f (x, y, z ) syms x diff(f,x,2) ans = (x*y*z)^x*(log(x*y*z)+1)^2+(x*y*z)^x/x+6/x^4/y^2

  19. 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

  20. Przykład: • Obliczenie całki nieoznaczonej funkcji f(a,b)=a+b syms a x int(a+x) int(a+x, a) %Sprawdzenie diff(f) • ans = • a*x+1/2*x^2 • ans = • 1/2*a^2+a*x • ans = • a+x Rezultat:

  21. Obliczenie całki oznaczonej: syms x int(x^2,1,3) • ans = • 26/3 Obliczenie całki oznaczonej funkcji sin x w przedziale (0, π) • int(sin(x),0,pi) • ans = • 2

  22. Rozwiązywanie równań różniczkowych • funkcja dsolve() . Funkcja oblicza symbolicznie rozwiązania równań różniczkowych zwyczajnych. Równania są określane przez symboliczne wyrażenia zawierające literę D do oznaczenia stopnia. Symbole D2, D3... DN, odnoszą się do drugiej, trzeciej,..., n-tej pochodnej. D2y jest zatem odpowiednikiem symbolicznym Zmienna niezależna domyślna t.

  23. Nazwy zmiennych symbolicznych nie powinny zatem zawierać D. Zmienną niezależną można zmienić i podać jako ostatni argument. Warunki początkowe mogą być określone przez dodatkowe równania. Jeśli nie określono warunków początkowych, rozwiązania zawierają stałe całkowania: C1, C2, itp. Rozwiązanie dsolve jest podobne do solve. Oznacza to, że można wywołać dsolve z liczbą zmiennych wyjściowych równą liczbie zmiennych zależnych od lub umieścić w strukturze, której pola zawierają rozwiązania równań różniczkowych.

  24. Przykład Rozwiązać równanie: dsolve('Dy=1+y^2') zmienna t domyślna • ans = • tan(t+C1) • dsolve('Dy=1+y^2','x') zmienna x ustalona • ans = • tan(x+C1) dsolve('Dx = -a*x') ans = C1*exp(-a*t)

  25. Po wstawieniu warunków początkowych: y = dsolve('Dy=1+y^2','y(0)=1') • y = • tan(t+1/4*pi) Uwaga: y jest w obszarze roboczym MATLAB, ale t nie jest, a zatem polecenie diff(y,t) zwraca błąd. Aby umieścić t w obszarze roboczym należy: syms t pochodna=diff(y,t) pochodna= 1+tan(t+1/4*pi)^2

  26. Przykład 2 Równania nieliniowe mogą mieć wiele rozwiązań, nawet wtedy, gdy podane są warunki początkowe: x = dsolve('(Dx)^2+x^2=1','x(0)=0') x = [ sin(t)] [ -sin(t)]

  27. Przykład 3 Równanie różniczkowe drugiego stopnia z dwoma warunkami początkowymi: y = dsolve('D2y=cos(2*x)-y','y(0)=1','Dy(0)=0', 'x') simplify(y) %uproszczenie y = 4/3*cos(x)-1/3*cos(2*x) ans = 4/3*cos(x)-2/3*cos(x)^2+1/3

  28. Przykład 4 warunki początkowe u = dsolve('D3u=u','u(0)=1','Du(0)=-1','D2u(0) = pi','x') • D3u reprezentuje d3u/dx3 • D2u(0) odpowiada u"(0) u = 1/3*pi*exp(x)-1/3*(pi+1)*3^(1/2)*exp(-1/2*x)*sin(1/2*3^(1/2)*x)+ (1-1/3*pi)*exp(-1/2*x)*cos(1/2*3^(1/2)*x)

  29. Układ równań różniczkowych Funkcja dsolve rozwiązuje także układ równań różniczkowych zwyczajnych kilku zmiennych, z warunkami początkowymi lub bez

  30. Przykład • Dwa równania liniowe, pierwszego rzędu: S = dsolve('Df = 3*f+4*g', 'Dg = -4*f+3*g') • S = • f: [1x1 sym] • g: [1x1 sym] • Rozwiązania obliczane są zwracane w strukturze S. • Można określić wartości f i g, wpisując: • f = S.f • g = S.g • f = • exp(3*t)*(C1*sin(4*t)+C2*cos(4*t)) • g = • exp(3*t)*(C1*cos(4*t)-C2*sin(4*t))

  31. Jeśli chcemy uzyskać f i g bezpośrednio, oraz uwzględnić także warunki początkowe, wpisujemy: • [f,g] = dsolve('Df=3*f+4*g, Dg =-4*f+3*g', 'f(0) = 0, g(0) = 1') • f = • exp(3*t)*sin(4*t) • g = • exp(3*t)*cos(4*t)

  32. Jeszcze jeden przykład składni w SymbolicMathToolbox. y(0) = 1 y = dsolve('Dy+4*y = exp(-t)', 'y(0) =1') • spr=diff(y,t)+4*y%sprawdzenie rozwiązania • spr =simplify(spr) • t=0%sprawdzenie warunku początkowego • wp=subs(y) • y = • (1/3*exp(3*t)+2/3)*exp(-4*t) • spr = • exp(-4*t)*exp(3*t) • spr = • exp(-t) • t = • 0 • wp = • 1

More Related