Matlab cd .

34
Matlab cd. Wykład 7 MOiPP 1

description

MOiPP. Wykład 7. Matlab cd. Obliczenia kinematyczne - symbolicznie. Znane wzory. Stąd wynika:. Jeśli a=const , ruch jednostajnie przyspieszony. dla przypadku: s0=0, v0=0. clc;clear ; syms a t v= int (a,t,0,t) s= int (v,t,0,t) %lub alternatywnie s2= in t ( int (a,t,0,t),t,0,t) - PowerPoint PPT Presentation

Transcript of Matlab cd .

Page 1: Matlab cd .

1

Matlab cd.

Wykład 7

MOiPP

Page 2: Matlab cd .

2

Obliczenia kinematyczne - symbolicznie

Znane wzory

Stąd wynika:

Page 3: Matlab cd .

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

Page 4: Matlab cd .

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

Page 5: Matlab cd .

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

Page 6: Matlab cd .

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

Page 7: Matlab cd .

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)

Page 8: Matlab cd .

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

Page 9: Matlab cd .

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

Page 10: Matlab cd .

10

0 2 4 6 8 100

5

10

15

20

25

30

35

40

45

Page 11: Matlab cd .

11

Cykloida – droga punktu położonego na toczącym się kole

Page 12: Matlab cd .

12

=a wt jeśli w=1 to a=t

stąd

Page 13: Matlab cd .

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:

Page 14: Matlab cd .

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

Page 15: Matlab cd .

15

-2 0 2 4 6 8 10 12 14-0.5

0

0.5

1

1.5

2

2.5

Page 16: Matlab cd .

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

Page 17: Matlab cd .

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

Page 18: Matlab cd .

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

Page 19: Matlab cd .

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

Page 20: Matlab cd .

20

Podsumowanie wiedzy

Page 21: Matlab cd .

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

Page 22: Matlab cd .

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

Page 23: Matlab cd .

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

Page 24: Matlab cd .

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)

Page 25: Matlab cd .

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

Page 26: Matlab cd .

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

Page 27: Matlab cd .

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

Page 28: Matlab cd .

28

Aplikacje sprzężeń zwrotnych

Page 29: Matlab cd .

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

Page 30: Matlab cd .

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

Page 31: Matlab cd .

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

Page 32: Matlab cd .

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

Page 33: Matlab cd .

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

Page 34: Matlab cd .

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