Ćw.6

Transkrypt

Ćw.6
Ć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
Znaleźć wzór na prędkość w ruchu jednostajnie przyspieszonym w przedziale [t0, t] z przyspieszeniem 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 przyspieszenie jest pochodną prędkości v względem czasu t.
= ,
=
Po scałkowaniu otrzymujemy:
=
+
Metoda obliczeń symbolicznych w Matlab-ie:
symsav0t0t
syms
v=v0+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 '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.
Przyspieszenie jest pochodną prędkości v względem czasu t.
= ,
=
Określenie zmiennych symbolicznych:
symsat0tv0v
syms
Wywołanie funkcji dsolve zapis równania różniczkowego w postaci symbolicznej .
dsolve 'Dv=a','v t0 =v0','t' Metoda obliczeń symbolicznych w Matlab-ie:
%programrozwiązaniarównaniaróżniczkowegodv/dt=a,v t0 =v0
symsat0tv0v
syms
v=dsolve
dsolve 'Dv=a','v t0 =v0' %zmiennatjestdomyślna
Ćwiczenie
Obliczyć symbolicznie wzór na drogę w ruchu jednostajnie przyspieszonym z przyspieszeniem a oraz
warunkiem początkowym s(t0)=s0 przy wykorzystaniu wzoru symbolicznego na prędkość.
v=v0+a* t–t0 Metoda obliczeń:
1
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:
symsav0t0ts0
syms
v=v0+a* t-t0 s=s0+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 przyspieszonym:
s1=1/2*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:
%Obliczeniedrogi
symsav0t0ts0
syms
v=v0+int
int a,t,t0,t s=s0+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] –zustalonymprzedziałemzmiennejniezależnej.
Symboliczne rozwiązywanie równania (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' Ćwiczenie
Obliczyć symbolicznie przyspieszenie z równania: v=v0+a*(t-t0)
Metoda obliczeń w Matlab-ie:
symsat0v0tv
syms
2
% obliczenie wzoru symbolicznego na niewiadomą a
a = solve('v
solve = 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(a)
subs
Wynik obliczeń:
a=
(-v+v0)/(-t+t0)
a1 =
4
Zadanie
2
2
Znaleźć rozwiązania układu równań: x -y=4; y -x=0. Zilustrować rozwiązania na wykresach.
Ć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:
Ax2+Bx+C=A(x-x1)(x-x2)
gdzie x1,x2 są pierwiastkami równania
Ponieważ
x1=0, x2=a (pierwiastki naszego równania kwadratowego)
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
Metoda obliczeń w Matlab-ie:
syms A a x
A=solve
solve('A*a/2*(a/2-a)=1',
'A')
solve
Zadanie
a) Utworzyć wykres powyższej paraboli.
b) Założyć a=6. Rozwiązać powyższe zadanie przy pomocy funkcji aproksymacji polyfit, 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
przyspieszenie punktu materialnego. Tor punktu jest określony równaniami:
I
J
J
(0) =
= 0,
cos ∝ ,
J(0) = 0
I
I
K
I
= −M,
K
(0) =
sin ∝ ,
K(0) = 0
3
Droga punktu materialnego jest określona wzorem :
prędkość wzorem :
I
I
QR
QT
2 = N OP S + P S
QU
Q
Q
,
= Q , zaś przyspieszenie wzorem:
Rozwiązanie w Matlabie:
QV
= Q .
clear,clc
symsat0tv0vgalfa0
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=60;
g=9.81;
%-------------------------położeniey x %wstawieniedanychdowzorow
xu1=subs x1 yu1=subs y1 %-----------------------wektorydlapunktowczasu
t=0:0.1:10;
xp1=subs xu1 ;
yp1=subs yu1 ;
subplot 3,1,1 plot xp1,yp1,xp1,0*xp1 %dorysowanaośx,poziomziemi
title 'Położeniey x ' %---------------------------składoweprędkościvx t vy t symst%wracamydoczasusymbolicznego
vx=diff xu1 ;
vy=diff yu1 ;
t=0:0.1:10;%wektorpunktowczasu
vx=subs vx ;%wstawieniedanych
vx1=ones 1,length t *vx;
%vx1jeststałewczasie-onestomacierzjedynekodługościtakiejjaktt
vy1=subs vy ;%wektorvydlapunktowczasu
subplot 3,1,2 plot t,vx1,t,vy1 title 'Składoweprędkoscivx t vy t ' %----------------------------------wyznaczenies t symst%wracamydoczasusymbolicznego
st=int sqrt diff x1,t ^2+diff y1,t ^2 ,t,0,t ;
s=subs st %wstawieniedanychalfa0iv0dowzoru
t=0:0.1:10;
st=subs s ;
subplot 3,1,3 plot t,st title 's t ' 4
Poniżej otrzymane wykresy:
Położenie y(x)
100
50
0
-50
-100
0
100
200
300
400
500
6
8
10
6
8
10
Składowe prędkosci vx(t) vy(t)
50
0
-50
-100
0
2
4
s(t)
600
400
200
0
0
2
4
Zadania do rozwiązania dla powyższego przykładu:
1. Jak zmienią się wykresy gdy wysokość początkowa będzie 20 m.
2. Jaki wówczas będzie zasięg (wartość końcowego x) po zderzeniu ciała z ziemią (y=0).
3. Jaki będzie czas do osiągnięcia ziemi.
4. Jaka będzie droga przebyta do osiągnięcia ziemi.
Zadanie
Korzystając ze wzoru
` =
i
j
ab + c
de h
g df
df
obliczyć długość krzywej funkcji sin(x) w przedziale [0, π]
Zadania dodatkowe do samodzielnej analizy
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
%dwieparabole
figure 1 fplot '4* 5+x .* 5-x /10^2',[-55] 5
hold on
fplot('4*(10+x).*(10-x)/20^2',[-10 10])
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