⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rk4ode2.mht

📁 it is a very essential matlab code.
💻 MHT
字号:
From: <Saved by Windows Internet Explorer 7>
Subject: 
Date: Tue, 12 May 2009 09:54:42 -0700
MIME-Version: 1.0
Content-Type: text/html;
	charset="Windows-1252"
Content-Transfer-Encoding: 7bit
Content-Location: http://www.mece.ualberta.ca/Courses/mec390/390code/rk4ode2.m
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3350

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=windows-1252">
<META content="MSHTML 6.00.6000.16825" name=GENERATOR></HEAD>
<BODY><PRE>function [t,x,v] = rk4ode2(func, a, b, x0, xd0, h);
% Solution of 2nd order ODE using Runge-Kutta 4th order
% with constant step size.  ODE solved is converted to
% two 1st order equations.  The RHS of the system is
%      dv/dt = func(t, x, v)
%      dx/dt = v
% See for example rhs_smd.m for forced spring-mass-damper
%
% USAGE:  [t, x, v] = rk4ode2(func,a,b,x0,xd0,h)
%
% input  func = name of external function to evaluate the RHS
%                  of the ODE (eg 'rhs_smd')
%        a, b = limits of integration
%        x0   = initial condition (position)
%        xd0  = initial condition (velocity)
%        h    = stepsize
%
% output [t, x, v]  = solution vectors

t = [a];
x = [x0];
v = [xd0];
i = 1;

while t(i) &lt; b

   k1x = v(i);
   k1v = feval(func, t(i)    , x(i)         , v(i)         );

   k2x = v(i)+k1v*h/2;
   k2v = feval(func, t(i)+h/2, x(i)+k1x*h/2 , v(i)+k1v*h/2 );

   k3x = v(i)+k2v*h/2;
   k3v = feval(func, t(i)+h/2, x(i)+k2x*h/2 , v(i)+k2v*h/2 );

   k4x = v(i)+k3v*h;
   k4v = feval(func, t(i)+h  , x(i)+k3x*h   , v(i)+k3v*h   );

   i = i+1;
   t(i) = t(i-1) + h;

   x(i) = x(i-1) + (k1x + 2*k2x + 2*k3x + k4x)*h/6;
   v(i) = v(i-1) + (k1v + 2*k2v + 2*k3v + k4v)*h/6;

end

</PRE></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -