Cześć! Za zadanie mam rozwiązać dokładnie i numerycznie symulację rzutu ukośnego. Podane dane:
Przyspieszenie grawitacyjne Wenus: 8,87m/s^2, Prędkość początkowa Vo=10m/s, kąt rzutu: 45 stopni.
Za rozwiązanie dokładne mam przyjąć następujące wzory:
Rozwiązanie dokładne:
x=xo+Vosin(alpha)t
Vx=Vosin(alpha)t
y=yo+Vocos(alpha)t-1/2gt^2
Vy=Vocos(alpha)-gt
Rozwiązanie numeryczne:
yi+1=yi+f(xi,yi)h
Może znacie te wzory, nie wiem, napisałem je w razie czego.
To co udało mi się napisać:
g=8.87;
vo=10;
a=pi/4;
xo=0;
yo=0;
y=1:1:21;
x=1:1:21;
t=0:0.1:2;
for i=1:21
x(i)=xo+vo*sin(a)*t(i);
y(i)=yo+vo*cos(a)*t(i)-(1/2)*g*t(i)*t(i);
endfor
plot (x,y);
hold on;
for i=1:1:20;
f=tan(a)-g*x(i)/(vo*cos(a))^2;
y(i+1)=y(i)+f*0.65;
endfor
plot(x,y);
hold off;
-Jest zapisane jako kod w matlabie, jednak w tym przypadku komendy nie różnią się znacząco z Octave'm.
Jeżeli chodzi o rozwiązanie dokładne to wszystko działa, wykres jest taki jaki być powinien. Największy problem jest odnośnie rozwiązania numerycznego. Kiedy zmniejszam kroki od 0.5, 0.1 czy 0.01 wykres powinien być coraz dokładniejszy a jest zupełnie na odwrót. Czy widzicie może jaki szczegół pominąłem? Bo nie jestem w stanie się niczego dopatrzeć :/