Ćwiczenie 6. Metody obliczeniowe cd.
Zastosowania obliczeń symbolicznych
W 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
Znalezć wzór na prędkość w ruchu jednostajnie przyśpieszonym w przedziale [t0, t] z przyśpieszeniem a oraz
warunkiem poczÄ…tkowym v(t0)=v0.
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 a v0 t0 t
syms
syms
syms
v = v0 + int a,t,t0,t
int
int
int
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 'równanie1', 'równanie2',& 'zmienna1', 'zmienna2',&
dsolve
dsolve
dsolve
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 a t0 t v0 v
syms
syms
syms
Wywołanie funkcji dsolve zapis równania różniczkowego w postaci symbolicznej .
dsolve 'Dv=a ', 'v t0 =v0 ', 't'
dsolve
dsolve
dsolve
Metoda obliczeń symbolicznych w Matlab-ie:
% program rozwiązania równania różniczkowego dv/dt=a, v t0 =v0
syms a t0 t v0 v
syms
syms
syms
v = dsolve 'Dv = a','v t0 = v0' %zmienna t jest domyślna
dsolve
dsolve
dsolve
Ćwiczenie
Obliczyć symbolicznie wzór na drogę w ruchu jednostajnie przyśpieszonym z przyśpieszeniem a oraz
warunkiem początkowym s(t0)=s0 przy wykorzystaniu wzoru symbolicznego na prędkość
v = v + a* t t
0 0
Metoda obliczeń:
1
Prędkość jest pochodną drogi s względem czasu t.
= , =
Po scałkowaniu otrzymujemy:
= +
Metoda 1. Obliczenia symbolicznego wzoru na drogę, z wykorzystaniem wzoru symbolicznego na prędkość v
oraz funkcji całkującej int:
syms a v0 t0 t s0
syms
syms
syms
v = v0 + a* t-t0
s = s0 + int v, t, t0, t
int
int
int
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 a v0 t0 t s0
syms
syms
syms
v = v0 + int a, t, t0, t
int
int
int
s = s0 + int v, t, t0, t
int
int
int
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 'równanie1', 'równanie2',& , 'rownanieN', 'zmienna1', 'zmienna2',& , 'zmiennaN'
solve
solve
solve
Ćwiczenie
Obliczyć symbolicznie przyśpieszenie z równania: v=v0+a*(t-t0)
Metoda obliczeń w Matlab-ie:
syms a t0 v0 t v
syms
syms
syms
2
% obliczenie wzoru symbolicznego na niewiadomÄ… a
a = solve
solve('v = a*(t-t0)+v0','a')
solve
solve
% podstawienie danych liczbowych pod zmienne symboliczne
v0=0; t0=0; t=5; v=20;
% podstawienie danych liczbowych do wzoru
a1=subs
subs(a)
subs
subs
Wynik obliczeń:
a =
(-v+v0)/(-t+t0)
a1 =
4
Ćwiczenie
Znalezć 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:
Ax2+Bx+C=A(x-x )(x-x )
1 2
gdzie x1,x2 są pierwiastkami równania
Ponieważ
x =0, x =a (pierwiastki naszego równania kwadratowego)
1 2
w naszym przypadku równanie paraboli przyjmie postać:
f (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('A*a/2*(a/2-a)=1', 'A')
solve
solve
Metoda obliczeń w Matlab-ie:
syms A a x
syms
syms
syms
A=solve
solve('A*a/2*(a/2-a)=1', 'A')
solve
solve
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ą v0 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:
= 0, ( ) ( )
0 = cos " , 0 = 0
= - , ( ) ( )
0 = sin " , 0 = 0
Droga punktu materialnego jest określona wzorem :
= + ,
prędkość wzorem : = , zaś przyśpieszenie wzorem: = .
3
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 to macierz jedynek
ones
ones
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 diff(xu1,t)^2+diff
int(sqrt(diff diff(yu1,t)^2),t,0,t) %całka oznaczona
int diff diff
int diff diff
t=0:0.01:2;
st=subs
subs(s);
subs
subs
subplot(3,1,3)
plot(t,st)
title('s(t)')
Poniżej otrzymane wykresy:
4
Położenie y(x)
4
2
0
-2
-4
-6
0 5 10 15
Składowe prędkosci vx(t) vy(t)
10
5
0
-5
-10
-15
0 0.5 1 1.5 2
s(t)
20
15
10
5
0
0 0.5 1 1.5 2
Zadanie
KorzystajÄ…c ze wzoru
= +
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]
5
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!!!
6
Wyszukiwarka
Podobne podstrony:
cw06?ldy teoriainstrukcja cw06ELEKTRONIKA cw06statystyka cw06cw06LF E CW0624) TSiP 10 ćw06cw06 cisnienie przeplywC16 2005 cw06se cw06Cw06LB1 CW06 x 15 03 2006 PA PL FCw06 Excel2003 3C16 2005 cw06cw06 vbawięcej podobnych podstron