background image

 

Ćwiczenie 6. Metody obliczeniowe cd.

 

Zastosowania obliczeń symbolicznych 

Symbolic Math Toolbox do całkowania wyrażeń symbolicznych wykorzystuje się następujące funkcje: 

  

int(S) – oblicza całkę nieoznaczoną wyrażenia symbolicznego S

  

int(S,v) - oblicza całkę nieoznaczoną dla S , ze względu na zmienną v

  

int(S,a,b) – zwraca całkę oznaczoną dla S, w granicach od a do b

int(S,v,a,b) – jw.., dla ustalonej zmiennej v. 

Ćwiczenie 

Znaleźć  wzór  na  prędkość  w  ruchu  jednostajnie  przyśpieszonym  w  przedziale  [t

0

,  t]  z przyśpieszeniem  a  oraz 

warunkiem początkowym v(t

0

)=v

0

Zadanie to możemy rozwiązać na 2 sposoby: 
Sposób 1. Wykorzystanie funkcji int 

Korzystamy z tego, że przyśpieszenie jest pochodną prędkości v względem czasu t. 

= ,

Po scałkowaniu otrzymujemy: 

=

+

 

Metoda obliczeń symbolicznych w Matlab-ie

syms

syms

syms

syms a v0 t0 t

v = v0 + int

int

int

int a,t,t0,t

 

Wynik obliczeń symbolicznych: 

v = v0 + a* t-t0 

Sposób 2. Wykorzystanie funkcji dsolve 

Funkcja dsolve rozwiązuje symbolicznie  zwykłe równania różniczkowe. 

dsolve

dsolve

dsolve

dsolve 'równanie1', 'równanie2',… 'zmienna1', 'zmienna2',… 

Warunki początkowe są określane przez równania podobne do 'y(a)=b' lub 'Dy(a)=b' gdzie y jest zmienną  

zależną, zaś a i b są stałymi. 

Przyśpieszenie jest pochodną prędkości v względem czasu t

= ,

Określenie zmiennych symbolicznych: 

syms

syms

syms

syms a t0 t v0 v

Wywołanie funkcji dsolve zapis równania różniczkowego w postaci symbolicznej . 

dsolve

dsolve

dsolve

dsolve 'Dv=a ', 'v t0 =v0 ', 't' 

Metoda obliczeń symbolicznych w Matlab-ie

% program rozwiązania równania różniczkowego dv/dt=a, v t0 =v0

syms

syms

syms

syms a t0 t v0 v

v = dsolve

dsolve

dsolve

dsolve 'Dv = a','v t0  = v0'  %zmienna t jest domyślna

Ćwiczenie 

Obliczyć  symbolicznie  wzór  na  drogę  w  ruchu  jednostajnie  przyśpieszonym  z przyśpieszeniem  a  oraz 

warunkiem początkowym s(t

0

)=s

0

 przy wykorzystaniu wzoru symbolicznego na prędkość 

v = v

0

+ a* t – t

0

Metoda obliczeń: 

background image

 

Prędkość jest pochodną drogi s względem czasu t. 

2

= , 2

= 2 

Po scałkowaniu otrzymujemy: 

2 = 2 +

 

Metoda 1. Obliczenia symbolicznego wzoru na drogę, z wykorzystaniem wzoru symbolicznego na prędkość v 

oraz funkcji całkującej int

syms

syms

syms

syms a v0 t0 t s0

v = v0 + a* t-t0 

s = s0 + int

int

int

int v, t, t0, t

 

 

Wynik obliczeń symbolicznych: 

s =

s0 + ½*a* t^2 – t0^2  – a*t0* t-t0  + v0* t-t0 

Podstawianie do wzoru wartości liczbowych: 

Wartości liczbowe znajdujemy korzystając  z funkcji subs, mającej składnię: 

subs(wyrażenie,{lista zmiennych},{lista_wartości}) 

Pierwszy sposób: 

Podstawiamy za zmienne symboliczne wartości liczbowe:  

t0=0, v0=0, s0=0

Korzystamy z funkcji subs, która podstawia do wzoru symbolicznego wartości liczbowe: 

s1=subs s 

otrzymujemy znany wzór na drogę w ruchu jednostajnie przyśpieszonym: 

s1 = ½*a*t^2

Drugi sposób: 

s2 = subs s,{a,t0,v0,s0},{4,0,0,0} 

Otrzymujemy wzór na drogę: s2=2*t^2 
Metoda 2: Obliczenia symboliczne z dwukrotnym wykorzystaniem funkcji całkowania int

% Obliczenie drogi

syms

syms

syms

syms a v0 t0 t s0

v = v0 + int

int

int

int a, t, t0, t 

s = s0 + int

int

int

int v, t, t0, t 

Zadanie 

Po  podstawieniu  dowolnych  konkretnych  wartości  t0,  s0,  v0  i  a  narysować  wykresy  v(t)  i  s(t)  korzystając  z 

poznanej funkcji ezplot o postaci: 

ezplot(f)   - zakres zmiennej niezależnej domyślny, 
ezplot

f,[min,max]  – z ustalonym przedziałem zmiennej niezależnej.

Rozwiązywanie symboliczne układu równań przy użyciu funkcji solve 

Funkcja solve ma następującą składnię: 

solve

solve

solve

solve 'równanie1', 'równanie2',…, 'rownanieN', 'zmienna1', 'zmienna2',…, 'zmiennaN' 

Ćwiczenie 

Obliczyć symbolicznie przyśpieszenie z równania: v=v0+a*(t-t0) 

Metoda obliczeń w Matlab-ie: 

syms

syms

syms

syms a t0 v0 t v

background image

 

% obliczenie wzoru symbolicznego  na niewiadomą  a 

a = solve

solve

solve

solve('v = a*(t-t0)+v0','a')  

% podstawienie danych liczbowych pod zmienne symboliczne 

v0=0; t0=0; t=5; v=20;  

% podstawienie danych liczbowych do wzoru 

a1=subs

subs

subs

subs(a)  

Wynik obliczeń: 

a = 

 (-v+v0)/(-t+t0) 

 a1 = 

     4 

Ćwiczenie 

Znaleźć symboliczne równanie paraboli przechodzącej przez 3 punkty, która ma miejsca zerowe na końcach 

przedziału (0,a), zaś w połowie przedziału przyjmuje wartość 1. 

Korzystamy z tego, że parabola jest wykresem równania kwadratowego i z rozkładu równania kwadratowego  

na czynniki: 

Ax

2

+Bx+C=A(x-x

1

)(x-x

2

gdzie x

1

,x

2

 są pierwiastkami równania 

Ponieważ 

x

1

=0, x

2

=a   (pierwiastki naszego równania kwadratowego) 

w naszym przypadku równanie paraboli przyjmie postać: 

(x)=A*x*(x-a)

 

W połowie przedziału x=a/2 

Z warunków zadania wynika, że 

f

 (a/2)=1, czyli otrzymujemy równanie z jedną niewiadomą A: 

 A*a/2*(a/2-a)=1 

Rozwiązujemy go symbolicznie przy pomocy funkcji solve 

A=solve

solve

solve

solve('A*a/2*(a/2-a)=1', 'A') 

Metoda obliczeń w Matlab-ie: 

syms

syms

syms

syms 

A

 

a

 

A=solve

solve

solve

solve(

'A*a/2*(a/2-a)=1'

'A'

)

 

Zadanie 

a)

 

Utworzyć wykres powyższej paraboli. 

b)

 

Założyć a=6. Rozwiązać powyższe zadanie przy pomocy aproksymacji wielomianem 2-go stopnia. 

Ćwiczenie 

1.

 

Obliczyć  symbolicznie  tor  punktu  materialnego  poruszającego  z  prędkością  początkową  v

0

  pod  kątem 

 ∝  

do  poziomu  pod  wpływem  siły  ciężkości  mg  bez  uwzględnienia  oporu  powietrza  oraz  prędkość  i 

przyśpieszenie punktu materialnego. Tor punktu jest określony równaniami: 

I

J

I

= 0,

J

(0) =  cos ∝ ,

J(0) =  0 

I

K

I

= −M,

K

(0) =  sin ∝ ,

K(0) =  0 

Droga punktu materialnego jest określona wzorem : 

 

2 = N OP

QR

Q

S

I

+ P

QT

Q

S

I

,  

prędkość wzorem : 

QU
Q

,

 zaś przyśpieszenie wzorem: 

QV

Q

background image

 

Rozwiązanie w Matlabie

clear

 

syms 

a

 

t0

 

t

 

v0

 

v

 

g

 

alfa0

 

x1 = dsolve(

'D2x = 0'

,

'Dx(0) = v0*cos(alfa0)'

,

'x(0)=0'

,

't'

)

 

y1 = dsolve(

'D2y = -g'

,

'Dy(0) = v0*sin(alfa0)'

,

'y(0)=0'

,

't'

)

 

alfa0=pi/4;

 

v0=1;

 

g=9.81;

 

%-------------------------położenie y(x)

 

%wstawienie danych do wzorów

 

xu1=subs(x1)

 

yu1=subs(y1)

 

%macierze dla punktów czasu

 

t=0:0.01:3;

 

xp1=subs(xu1)

 

yp1=subs(yu1)

 

subplot(3,1,1)

 

plot(xp1,yp1)

 

title(

'Położenie y(x)'

)

 

%---------------------------składowe prędkości vx(t) i vy(t)

 

syms 

t

 

vx=diff(xu1)

 

vy=diff(yu1)

 

t=0:0.01:3;

 

vx=subs(vx)

%wstawienie danych

 

vx1=ones(1,length(t))*vx;  

%bo nie zależy od czasu- ones

ones

ones

ones to macierz jedynek

 

vy1=subs(vy); 

%macierz dla punktów czasu

 

subplot(3,1,2)

 

plot(t,vx1,t,vy1)

 

title(

'Składowe prędkosci  vx(t) vy(t)'

)

 

% ----------------------------------wyznaczenie s(t)

 

syms 

t

 

s=int

int

int

int(sqrt(diff

diff

diff

diff(xu1,t)^2+diff

diff

diff

diff(yu1,t)^2),t,0,t) %całka oznaczona 

t=0:0.01:2; 

st=subs

subs

subs

subs(s); 

subplot(3,1,3) 

plot(t,st) 

title('s(t)') 

Poniżej otrzymane wykresy: 

background image

 

 

Zadanie 

Korzystając ze wzoru 

_ =

`a + bcd

cef

g

h

i

ce 

obliczyć długość krzywej funkcji sin(x) w przedziale [0, 

π

Zadania dodatkowe do samodzielnej analizy 

1.

 

Obliczyć  masę  zaspy  śniegu  na  dachu  o  powierzchni  prostokątnej  o  wymiarach  10m×20m,  która  w 

środku dachu ma wysokość h=0,5 m.

 

Przyjąć, że przekroje poprzeczne i podłużne zaspy mają kształt paraboliczny. 

Masa właściwa śniegu waha się od 0,2 do 0,9 masy właściwej wody. 

Przyjąć, że powierzchnia zaspy wyraża się wzorem: 

z x,y =h*p x *q y 

gdzie p(x), q(y) są parabolami o wartościach 0 na brzegu dachu i wartości 1 w środku przekroju., zaś h jest 

wysokością zaspy na środku dachu. 

Rozwiązanie: 

clear

figure 1 

%parabole

fplot

'4* 5+x .* 5-x /10^2'

,[-5 5]

hold

on

fplot

'4* 10+x .* 10-x /20^2'

,[-10 10] 

0

5

10

15

-6

-4

-2

0

2

4

Poło

ż

enie y(x)

0

0.5

1

1.5

2

-15

-10

-5

0

5

10

Składowe pr

ę

dkosci  vx(t) vy(t)

0

0.5

1

1.5

2

0

5

10

15

20

s(t)

background image

 

a=10

 

b=20

 

h=0.5 

figure(2)

 

[x,y]=meshgrid(-a/2:0.5:a/2, -b/2:0.5:b/2);

 

z = 16*h.*(a/2+x).*(a/2-x)/a^2.*(b/2+y).*(b/2-y)/b^2;

 

mesh(x,y,z)  

%wykres 3D zaspy

 

syms 

y

 

x

 

h

 

a

 

b

 

z = 16*h.*x.*(a-x)/a^2.*y.*(b-y)/b^2;

 

p=int(int(z,x,0,a),y,0,b) 

%całka podwójna

 

Mmax=0.9*p 

% masa w tonach!!!