Rzut ukośny w polu grawitacyjnym z programem OCTAVE

0

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ć :/

1

Czy na osi x nie powinien być czas? Aktualnie na osi x masz drogę przebytą w kierunku poziomym.

http://rextester.com/AFO94089

g=8.87;
vo=10;
a=pi/4;
xo=0;
yo=0;
t=0:0.1:2;
t2=0:0.01:2;

x = xo + t;
y = yo + vo * cos(a) * t - (1 / 2) * g * t .^ 2;

x2 = xo + t2;
y2 = yo + vo * cos(a) * t2 - (1 / 2) * g * t2 .^ 2;

plot (x,y, '-o',  x2, y2, '+');
0

Bardzo dziękuję ale to nie jest do końca to o co mi chodziło, bo jest to rozwiązanie dokładne i coraz bardziej dokładne ale nie numeryczne, a o takie mi chodzi(metoda Eulera)

0

A czemu w linijce y(i+1)=y(i)+f*0.65; sztywno mnożysz razy 0,65? Nie powinien tam być okres próbkowania, czyli ten twój zmienny Ts? Przy okazji, na pewno funkcja f jest taka jak być powinna? Nie powinna brana pod uwagę być tylko składowa y? W końcu jak rozdzielimy w tym rzucie prędkość na dwie składowe, tak jak to zrobiłeś, to pochodna jest tylko z tego (chociaż nie jestem pewien, dawno tego nie robiłem)

1 użytkowników online, w tym zalogowanych: 0, gości: 1