MOiPP
This presentation is the property of its rightful owner.
Sponsored Links
1 / 32

Matlab Przykłady metod obliczeniowych Obliczenia symboliczne PowerPoint PPT Presentation


  • 96 Views
  • Uploaded on
  • Presentation posted in: General

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. 1234.....N. N-1 porównań. Wykonujemy N przebiegów.

Download Presentation

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

MOiPP

Wykład 4

  • Matlab

  • Przykłady metod obliczeniowych

  • Obliczenia symboliczne


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

Sortowanie bąbelkowe

Porównywanie kolejnych par elementów sąsiadujących i zamianamiejscami w przypadku niewłaściwej kolejności

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


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

1 PRZEBIEG

96

12

22

76

64

23

74

11

2 PRZEBIEG

12

22

76

64

23

74

11

96


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

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


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

Obliczenia symboliczne w Matlabie

Niezbędny jest tu dodatkowy (komercyjny) tzw. toolbox o nazwie SymbolicTool


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

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


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

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)


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

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


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

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


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

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,


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

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


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

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


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

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


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

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


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

  • Przykład:

  • Obliczenie pochodnej funkcjif(x)=x2

symsx

a=diff(x^2)

Rezultat

  • a =

  • 2*x


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

  • Przykład:

Obliczenie pochodnej funkcji f(x, y, z)

według każdej zmiennej (pochodne cząstkowe):


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

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


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

  • 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


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

  • 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


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

  • 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:


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

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


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

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


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

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.


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

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)


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

  • 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


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

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


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

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


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

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)


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

  • 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


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

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


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

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)


Matlab przyk ady metod obliczeniowych obliczenia symboliczne

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


  • Login