Matlab cd .
description
Transcript of Matlab cd .
1
Matlab cd.
Wykład 7
MOiPP
2
Obliczenia kinematyczne - symbolicznie
Znane wzory
Stąd wynika:
3
Jeśli a=const, ruch jednostajnie przyspieszony
clc;clear;syms a tv=int(a,t,0,t)s=int(v,t,0,t)%lub alternatywnies2=int(int(a,t,0,t),t,0,t)a=3; %jednostka [m/s2]v=subs(v)s=subs(s)subplot(2,1,1)ezplot(v,[0 10]); title('prędkość')subplot(2,1,2)ezplot(s,[0 10]); title('droga')t=10; %obliczamy drogę po 10 sek.s10=subs(s)
v = a*t s = 1/2*a*t^2s2 = 1/2*a*t^2s10 =
150
4
0 2 4 6 8 10
0
10
20
30
t
prędkość
0 2 4 6 8 10
0
50
100
150
t
droga
5
clc;clear;syms A B ta=A*exp(-B*t)v=int(a,t,0,t)s=int(v,t,0,t)A=3;B=0.2;a=subs(a)subplot(3,1,1)ezplot(a,[0 10]); title('przyspieszenie')v=subs(v);s=subs(s);subplot(3,1,2)ezplot(v,[0 10]); title('prędkość')subplot(3,1,3)ezplot(s,[0 10]); title('droga')t=10; %obliczamy drogę po 10 seks10=subs(s)
Jeśli przyspieszenie dane funkcją, np.: a=f(t)=A*e-Bt
a =A*exp(-B*t)
v =-A*(-1+exp(-B*t))/B
s = A*(-1+B*t+exp(-B*t))/B^2 a = 3*exp(-1/5*t) s10 = 85.1501
6
Wykresy dla A=3 m/s2 B=0.2
0 2 4 6 8 10
1
2
3
t
przyspieszenie
0 2 4 6 8 10
0
5
10
t
prędkość
0 2 4 6 8 10
0
20
40
60
80
t
droga
7
Zadanie: Prędkość początkowa auta: v0=100 m/s,Przyspieszenie jest funkcją a(t)= -0.2*tPo jakim czasie auto się zatrzyma?
Teraz rozwiązujemy równanie różniczkowe:
clc, clearsyms t%rozw. równania różniczkowegov=dsolve('Dv=-0.2*t','v(0)=100')% szukamy miejsca zerowe dla vtk=subs(solve(v))ezplot(v, [0 tk(2)])hold on% oś xezplot(0*t,[0 tk(2)])title('v(t)')
Rozwiązanie:
tk=31.6228 sekund
0 5 10 15 20 25 30
0
10
20
30
40
50
60
70
80
90
100
x
v(t)
8
Pojazd startuje w t0=0 z prędkością v0=0 i przyspieszeniem a=40 m/s^2. W aucie działa tempomat – jeśli prędkość przekroczy 42 m/s to przyspieszenie staje się ujemne a=-40 m/s^2, gdy prędkość spada poniżej 38 m/s prędkość staje się dodatnia a=40 m/s^2.Wykonac symulacje i wykres prędkości w czasie 10 sekund
9
clc ,clearsyms a t t0 v0v=v0+int(a,t,t0,t)v0=0;t0=0;a=40;for x=1:1:100 %100 punktów t=0.1*x; %czas co 1 s do 10 s vakt(x)=subs(v); %podstawienie dla obliczenia v aktualnej if vakt(x)>42 && a>0 %warunek a=-40; v0=vakt; elseif vakt(x)<38 && a<0 a=40; end; v0=vakt(x); %obliczenie v0 dla następnego punku czasowego t0=t; %obliczenie t0 dla następnego punku czasowego T(x)=t; %element macierzy dla osi czasuendplot(T,vakt) %wykres
Realizacja
10
0 2 4 6 8 100
5
10
15
20
25
30
35
40
45
11
Cykloida – droga punktu położonego na toczącym się kole
12
=a wt jeśli w=1 to a=t
stąd
13
x=r (t-c sin t)y=r (1-c cos t)
gdzie parametr c ilustruje położenie punktu:jeśli c=1 to punkt znajduje się na obwodzie kołajeśli c<1 to punkt znajduje się wewnątrz kołajeśli c>1 to punkt znajduje się poza kołem
x=r (t-sin t)y=r (1-cos t)
Można wyprowadzić ogólniejsze wzory:
14
clc,clearsyms t r cx=r*(t-c*sin(t))y=r*(1-c*cos(t))t=0:0.1:4*pi;x=subs(x);y=subs(y);r=1;c=1; %punkt na obwodzie kołax1=subs(x);y1=subs(y);y0=0*t;%oś xr=1;c=0.5; %punkt w połowie obwodux2=subs(x);y2=subs(y);r=1;c=1.5; %punkt poza kołemx3=subs(x);y3=subs(y);plot(x1,y0,'k',x1,y1,'b',x2,y2,'g',x3,y3,'r')
15
-2 0 2 4 6 8 10 12 14-0.5
0
0.5
1
1.5
2
2.5
16
Helisa – równania parametryczne
x = r sin tx = r cos tz = b t
r=1,b=1t=0:0.01:6*pix=r*sin(t);y=r*cos(t);z=b*t;plot3(x,y,z)
.. a jak obliczyć jej długość?
-1-0.5
00.5
1
-1
-0.5
0
0.5
10
5
10
15
20
25
30
17
Analogia do poznanego wzoru na długość krzywej płaskiej
clc, clear, syms t r b ax=r*sin(t);y=r*cos(t);z=b*t;a=6*pi;L=int(sqrt(diff(x,t)^2+diff(y,t)^2+diff(z,t)^2),t,0,a)r=1;b=1;L=subs(L)
dx dy dz
18
Siła tnąca dla utwierdzonego jednostronnie pręta
% Funkcja oblicza wartość siły tnącej w punkcie x pręta% dla sił skupionych podanych w tablicy P% oraz w odległościach umieszczonych w tablicy d% numeracja punktów od odległości największej do najmniejszej function S = silatnaca(x,P,d)S=0;n = length(P);i=1;while x<d(i) S = S + P(i); % dodaj kolejną siłę if i==n break %przerwanie pętli gdy ostatnia siła end i=i+1 % weź następną siłęend
19
clc, clearP=[ 1 -1 -2 ]d=[ 3 2 1 ]i=1;for r=0:0.01:4 F(i)=silatnaca(r,P,d); x(i)=r; i=i+1;endplot(x,F)
0 0.5 1 1.5 2 2.5 3 3.5 4-2
-1.5
-1
-0.5
0
0.5
1
Wykorzystanie zdefiniowanej funkcji
20
Podsumowanie wiedzy
21
1. Edycja m-plików i ich uruchamianie2. Inicjacja zmiennych – nadawanie im wartości3. Proste obliczenia z wykorzystaniem funkcji matematycznych4. Zmienne zespolone
Macierze1. Tworzenie macierzy jedno- i dwuwymiarowych2. Operacje macierzowe
• macierz odwrotna• mnożenie macierzowo i elementowo• podnoszenie do potęgi macierzowe i elementowe• wyznacznik macierzy
3. Wykorzystanie macierzy• rozwiązywanie układu równań liniowych• rozwiązywanie równania n-tego stopnia (roots)• wektoryzacja danych dla wykresów
22
Wykresy funkcji• wykresy 2D – funkcje plot i fplot• wykres funkcji symbolicznej – ezplot• zarządzanie zakresami zmiennej niezależnej i
zależnej
Proste obliczenia kinematyczne ruchu jednostajnego i jednostajnie przyspieszonego,
• wektoryzacja czasu,• wykresy drogi, prędkości, przyspieszenia.
Aproksymacja – przybliżanie danych dyskretnych parabolą n-tego stopnia
23
Instrukcje strukturalne w Matlabie
• Instrukcja warunkowa – cel i struktura, badanie kilku warunków, koniunkcja i alternatywa warunków
• Instrukcje iteracyjne – pętle• sterowanie przebiegiem pętli liczonej for• pętle zagnieżdżane (np. dla tablic dwuwymiarowych)• zastosowania pętli w algorytmach wyszukiwania,
sumowania i zliczania elementów• pętla warunkowa while
24
Obliczenia symboliczne
• Inicjacja zmiennych symbolicznych (syms)• Rozwiązywanie równań nieliniowych (solve)• Podstawienie danych liczbowych do wyrażeń
symbolicznych (subs)• Wykresy funkcji symbolicznych (ezplot)• Symboliczne obliczenia pochodnych (pierwszego i
drugiego stopnia, pochodne cząstkowe)• Całkowanie symboliczne (całki oznaczone i
nieoznaczone)• Równania różniczkowe (dsolve)
25
Wykorzystanie operacji symbolicznychBadanie funkcji f– wykres, miejsca zerowe, minima, maksima, punkty przegięcia
• miejsce zerowe (solve(f))• ekstremum – pochodna 1 rzędu ma miejsce zerowe
• minimum –pochodna 2 rzędu dodatnia • maksimum –pochodna 2 rzędu ujemna
• punkt przegięcia –pochodna 2 rzędu ma miejsca zerowe
Wykorzystanie równań różniczkowych w zadaniach kinematycznych
26
clc, clearsyms x f=x^3-5*x^2+5*x+1zera=solve(f); zera=subs(zera)subplot(3,1,1),ezplot(f,[-1,4])df=diff(f)extrema=solve(df);extrema=subs(extrema)subplot(3,1,2),ezplot(df,[-1,4])d2f=diff(df)pp=solve(d2f);%punkt przegięciapp=subs(pp)subplot(3,1,3),ezplot(d2f,[-1,4])disp('Badamy wartość d2f w punktach ext')disp('Jak dodatnie to minimum, ujemne to maximum')for k=1:length(extrema)
x=extrema(k)if subs(d2f)<0 disp('Max') else disp('Min') end
end
27
-1 -0.5 0 0.5 1 1.5 2 2.5 3 3.5 4
-5
0
5
x
x3-5 x2+5 x+1
-1 -0.5 0 0.5 1 1.5 2 2.5 3 3.5 4-505
1015
x
3 x2-10 x+5
-1 -0.5 0 0.5 1 1.5 2 2.5 3 3.5 4
-100
10
x
6 x-10
pp jest tam, gdzie d2f=0
pp x=1.6667
zera = 3.4812 -0.1701 1.6889
x=2.7208 minimum
x=0.6126 maksimum
Wniosek:
pp różne od zera(3)
WYNIKI
28
Aplikacje sprzężeń zwrotnych
29
Pojazd rozpoczyna jazdę od prędkości zerowej ze stałym przyspieszeniem a.W pojeździe działa tempomat o następującej zasadzie: - po osiągnięciu prędkości vmax przyspieszenie pojazdu wynosi –a, - po osiągnięciu prędkości vmin przyspieszenie pojazdu wynosi a,
Zadanie
30
Rozwiązanie symboliczne
clcclearsyms t av=dsolve('Dv=a','v(t0)=v0')ax=6;vmax=62;vmin=58;v0=0;t0=0;a=ax;for tk=1:1000 t=0.1*tk; v1= subs(v); V(tk)=v1; T(tk)=t; if v1>vmax a=-ax; elseif v1<vmin a=ax; end v0=v1; t0=t;endplot(T,V);
0 20 40 60 80 1000
10
20
30
40
50
60
70
3131
Rozwiązanie analityczne
clcclearsyms t aax=6;vmax=62;vmin=58;v0=0;t0=0;a=ax;for tk=0:1000 t=0.1*tk; v1=a*(t-t0)+v0 V(tk+1)=v1; T(tk+1)=t; if v1>vmax a=-ax; elseif v1<vmin a=ax; end v0=v1; t0=t;endplot(T,V);
0 20 40 60 80 1000
10
20
30
40
50
60
70
32
clcclearsyms t aax=6;vmax=62;vmin=58;v0=0;t0=0;a=ax;for tk=0:1000 t=0.1*tk; v1=a*(t-t0)+v0; V(tk+1)=v1; T(tk+1)=t; plot(T(tk+1),V(tk+1),'Marker','o','MarkerFaceColor','y','MarkerEdgeColor','k','MarkerSize',4); hold on pause(0.01) if v1>vmax a=-ax; elseif v1<vmin a=ax; end v0=v1; t0=t;end
Animacja
Wykonać w m-pliku symulację jazdy samochodem, wykorzystując następujące dane:
• samochód posiada bak pojemności 50 litrów, pełny na starcie,
• samochód zużywa 8l/100km,
• jeśli w baku jest mniej niż 1 litr benzyny samochód jedzie na stację benzynową i tankuje do pełna,
• całkowity dystans przejechany to 10 000 km
Dodatkowo: obliczyć ile będzie tankowań i ile benzyny zostanie w baku po przejechaniu całego dystansu.
Zadanie
33
clc, clear,stan_baku=50;dystans=10000;tankowan=0;for k=1:1:dystans %pętla co 1 km stan_baku=stan_baku-0.08; %zmniejszenie stanu baku D(k)=k; %gromadzimy dane w tablicy do wykresu S(k)=stan_baku; %gromadzimy dane do wykresu if stan_baku<=1 disp('Tankowanie'); stan_baku=50; tankowan=tankowan+1; %zliczamy tankowania endenddisp('Koniec jazdy')disp(stan_baku)disp(tankowan)%wykresy stanu benzynyplot(D,S)
340 2000 4000 6000 8000 10000
0
5
10
15
20
25
30
35
40
45
50