1 / 8

MATLAB EXAMPLES Initial-value problems

MATLAB EXAMPLES Initial-value problems. 58:110 Computer-Aided Engineering Spring 2005. Department of Mechanical and industrial engineering January 2005. Some useful functions. IVP.

elu
Download Presentation

MATLAB EXAMPLES Initial-value problems

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MATLAB EXAMPLESInitial-value problems 58:110 Computer-Aided Engineering Spring 2005 Department of Mechanical and industrial engineering January 2005

  2. Some useful functions

  3. IVP The initial value problems for 1st order differential equation are defined by the following standard form: • Example: The exact solution is: In the following slides, we will try to solve this problem by Euler and Runge-Kutta methods in MATLAB. The ODE function was defined as M-file (ex1_odefun.m): % IVP function for EX1 function xdot=ex1_odefun(t,x) xdot=x+1;

  4. IVP –Euler method Use Euler method to solve the IVP example, step size sets to 0.01. Write the M-file as follows (ivp-euler.ex1.m): % IVP solution - Euler method % example 1: x'=x+1, x(0)=0, solve x(1) % the range of t [a,b] a=0.0; b=1.0; % the initial value of x x=0.0; %the number of steps n=100; %set the matrix x0=zeros(n,1); % set the step size h=(b-a)/100; %set the initial value of t t=a; for k=1:n % Record the values of x in each step x=x+h*ex1_odefun(t,x); x0(k)=x; t=t+h; end %the final result of x x0(100) • Run this M-file: >> ivp_euler_ex1 • ans = • 1.7048

  5. IVP –Runge-Kutta method To use Runge-Kutta method, here we only try ode23 and ode45 (step size =0.1): >> tspan=linspace(0,1,11); >> x0=[0;0]; >> [t,x]=ode23(@ex1_odefun,tspan,x0); >> x(11) ans = 1.7182 >> [t,x]=ode45(@ex1_odefun,tspan,x0); >> x(11) ans = 1.7183 The results show the higher order solver ode45 got more accurate result than ode23 and Euler method.

  6. IVP - Plot To show the accuracy of different methods, we need plot the solution together, the following M-file is for plotting the results of exact, Euler and 4th Runge-Kutta methods (ivp-plot_ex1.m): % IVP solution - plot % example 1 x'=x+1 % the range of t [a,b] a=0.0; b=1.0; % the initial value of x x=0.0; %the number of steps n=10; %set the matrix x1=zeros(n,1); %the step size h=(b-a)/10; %set the initial value of t t=a; %Euler method - Iterations for k=1:n+1 % Record the values of x in each step x1(k)=x; x=x+h*ex1_odefun(t,x); t=t+h; end %plot the results t=linspace(0,1,11); %Runge-Kutta method rx0=[0;0]; [t,x2]=ode45(@ex1_odefun,t,rx0); %exact solution x0=exp(t)-1; plot(t,x0,t,x1,'.',t,x2,'o') xlabel('t') ylabel('x')

  7. IVP - Plot • The following figures show the results by different step size h. The solid line is the exact solution, the solid dots represent the result of Euler method, the circles represents the results of 4th order Runge-Kutta method. h = 0.1 h = 0.01

  8. IVP-Summary Compare the results of different methods (all keep 4 digits after the radix point) in the following table (x(1)):

More Related