Matlab Euler & #39; s method, Matlab eulermethod

Source: Internet
Author: User

Matlab Euler's method, Matlab eulermethod

% matlab script to test efficiency of% Euler's method, classical Runge-Kutta, and ode45% on Arenstorf orbit problemclose allclear all% these are variables we would like the right-hand function to "see"% without actually passing them as argumentsglobal mu muHat% set normalized massesmu = 0.012277471;muHat = 1 - mu;% set time span of integrationt0 = 0;tf = 17.1;% set initial conditionsu1 = 0.994;u2 = 0;u1Dot = 0;u2Dot = -2.00158510637908252240537862224;% pack into vector y0y0 = [u1 u2 u1Dot u2Dot]';% set the name of the function to compute the right-hand sidef = 'arenstorf';disp(['The ' f ' problem'])disp(' ')% begin with Euler's methoddisp('Experiments with Euler''s method.')% "logical" variable to end given phase (Euler, Runge-Kutta)iMore = 1;while (iMore == 1),    % prompt user for number of steps    nSteps = input('Please enter the number of steps to take: ');    % set up array to store solution    y = zeros(length(y0),nSteps+1);    h = (tf-t0)/nSteps;    t = linspace(t0,tf,nSteps+1);    y(:,1) = y0;    tic    for i=1:nSteps,        y(:,i+1) = y(:,i) + h*feval(f,t(i),y(:,i));    end    toc    plot(y(1,:),y(2,:))    iMore = input('Do you wish to repeat with Euler''s method? (1=yes,0=no) ');    disp(' ')end    close all% now investigate classical Runge-Kutta disp('Experiments with classical Runge-Kutta method.')iMore = 1;while (iMore == 1),    % prompt user for number of steps    nSteps = input('Please enter the number of steps to take: ');    % set up array to store solution    y = zeros(length(y0),nSteps+1);    h = (tf-t0)/nSteps;    t = linspace(t0,tf,nSteps+1);    y(:,1) = y0;    tic    for i=1:nSteps,        K1 = feval(f,t(i),y(:,i));        K2 = feval(f,t(i)+h/2,y(:,i)+h*K1/2);        K3 = feval(f,t(i)+h/2,y(:,i)+h*K2/2);        K4 = feval(f,t(i+1),y(:,i)+h*K3);        y(:,i+1) = y(:,i) + h*(K1+2*(K2+K3)+K4)/6;    end    toc    plot(y(1,:),y(2,:))    iMore = input('Do you wish to repeat with classical RK? (1=yes,0=no) ');    disp(' ')endclose all% finally use ode45disp('Solving problem with ode45 ... ')% try with and without options in call to ode45options = odeset('RelTol',1e-4);tic[t,y] = ode45(f,[t0 tf],y0,options);tocplot(y(:,1),y(:,2))% from Wikipedia about the Arenstorf orbit% Richard F. Arenstorf is an American mathematician who discovered a% stable orbit between the Earth and the Moon, called an Arenstorf% Orbit, which was the basis of the orbit used by the Apollo Program% for going to the Moon.% The Arenstorf Orbit% While the orbit of a satellite around the Sun was empirically% discovered by Kepler and theoretically proven by Newton to be an% ellipse, at the time when the United States was interested in going% to the Moon, there was no such solution known for the shape of a% satellite orbiting regularly around two objects, such as a% spacecraft going between the Earth and the Moon. This is a special% case of the infamous Three Body Problem, for which a general% analytical solution is not known because of its complexity of% solving the effect of three bodies which all pull on each other% while moving, a total of six interactions. However the case of an% Earth-Moon satellite can be simplified to four interactions, because% although the three objects gravitationally all pull on each other,% the effect of the spacecraft's gravity upon the motion of the vastly% more massive Earth and Moon is practically non-existent. Arenstorf% found a stable orbit for a spacecraft orbiting between the Earth and% Moon, shaped like an '8' with the Earth or Moon located inside each% loop of the '8'. This orbit is the basis of a path going to the Moon% from the Earth, such as the United States Apollo program. For a% permanent presence on the Moon, it would be the path of what% Arenstorf calls a 'Space Bus', a ferry which could regularly orbit% supplies and people between the Earth and Moon without directly% expending fuel. By staying on the Arenstorf orbit, lunar astronauts% automatically return back to Earth. Before leaving NASA at the first% Moon Landing, Arenstorf mapped out an emergency rescue orbit, which% was used in the Apollo 13 incident, in which a catastrophic% malfunction forced aborting the Moon landing, but the astronauts% ultimately returned safely to Earth without a major course% adjustment.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.