12. laborgyakorlat, házik megoldásai

Contents

clear all, close all

1. feladat

L=1.5;
g=9.80665;
f=@(t,teta)[teta(2);-g/L*sin(teta(1))];
[t,teta]=ode45(f,[0,5],[1,0]);
plot(t,teta(:,1)) % Innét látjuk, hogy kb. 0.5 másodperctől 3.5 másodpercig
                  % tart egy periódus. Számoljuk ki pontosabban!
kiteres=@(ido)interp1(t,teta(:,1),ido); % Szakaszonként lineáris
                                       % interpolációt használunk.
lengesido=fzero(kiteres,3.5)-fzero(kiteres,0.5);
disp(['A lengésidő ',num2str(lengesido),' másodperc.'])
lengesido_keplet=2*pi*sqrt(L/g);
disp(['A képlet ',num2str(lengesido_keplet),' másodpercet ad.'])
A lengésidő 2.6191 másodperc.
A képlet 2.4573 másodpercet ad.

2. feladat

c=0.2028;
m=80;
L=500;
g=9.80665;
f=@(t,y)[y(2);g-c/m*y(2).^2];
[t,y]=ode45(f,[0,15],[0,0]);
plot(t,y(:,1))
ido=interp1(y(:,1),t,500); % Szakaszonként lineáris interpolációt használunk
disp(['Az 500m-es zuhanáshoz szükséges idő: ',num2str(ido),' másodperc.'])
Az 500m-es zuhanáshoz szükséges idő: 12.3054 másodperc.

3. feladat

L=30;
E=1.3e8;
I=0.05;
F=@(z)200*z/(5+z)*exp(-2*z/30);
f=@(z,y)[y(2);F(z)/2/E/I*(L-z).^2];
[z,y]=ode45(f,[0,L],[0,0]);
plot(y(:,1),z)
axis equal