Advertisement
Guest User

Untitled

a guest
May 18th, 2012
2,889
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 1.27 KB | None | 0 0
  1. function [x y u w] = Apollo(x0, y0, u0, w0, f, t, n)
  2.     h = t / n;
  3.     x = [ x0 ]; y = [ y0 ]; u = [ u0 ]; w = [ w0 ];
  4.    
  5.     m1 = 1 / 81.45;
  6.     m2 = 1 - m1;
  7.    
  8.     r1 = @(x, y) ((x + m1)^2 + y^2) ^ (3/2);
  9.     r2 = @(x, y) ((x - m2)^ 2 + y^2) ^ (3/2);
  10.    
  11.     f1 = @(x, y, u, w) 2*w + x - f*u - m2*(x+m1)/r1(x,y) - m1*(x-m2)/r2(x,y);
  12.     f2 = @(x, y, u, w) -2*u + y - f*w - m2*y/r1(x,y) - m1*y/r2(x,y);
  13.    
  14.     for i = 1 : n
  15.         kx1 = h * u(i);
  16.         ky1 = h * w(i);
  17.         ku1 = h * f1(x(i), y(i), u(i), w(i));
  18.         kw1 = h * f2(x(i), y(i), u(i), w(i));
  19.        
  20.         kx2 = h * (u(i) + ku1/2);
  21.         ky2 = h * (w(i) + kw1/2);
  22.         ku2 = h * f1(x(i)+kx1/2, y(i)+ky1/2, u(i)+ku1/2, w(i)+kw1/2);
  23.         kw2 = h * f2(x(i)+kx1/2, y(i)+ky1/2, u(i)+ku1/2, w(i)+kw1/2);
  24.        
  25.         kx3 = h * (u(i) + ku2/2);
  26.         ky3 = h * (w(i) + kw2/2);
  27.         ku3 = h * f1(x(i)+kx2/2, y(i)+ky2/2, u(i)+ku2/2, w(i)+kw2/2);
  28.         kw3 = h * f2(x(i)+kx2/2, y(i)+ky2/2, u(i)+ku2/2, w(i)+kw2/2);
  29.        
  30.         kx4 = h * (u(i) + ku3);
  31.         ky4 = h * (w(i) + kw3);
  32.         ku4 = h * f1(x(i)+kx3, y(i)+ky3, u(i)+ku3, w(i)+kw3);
  33.         kw4 = h * f2(x(i)+kx3, y(i)+ky3, u(i)+ku3, w(i)+kw3);
  34.        
  35.         x(i+1) = x(i) + (kx1 + 2*kx2 + 2*kx3 + kx4) / 6;
  36.         y(i+1) = y(i) + (ky1 + 2*ky2 + 2*ky3 + ky4) / 6;
  37.         u(i+1) = u(i) + (ku1 + 2*ku2 + 2*ku3 + ku4) / 6;
  38.         w(i+1) = w(i) + (kw1 + 2*kw2 + 2*kw3 + kw4) / 6;
  39.     end
  40. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement