File: num_ode45.html

package info (click to toggle)
freemat 4.2%2Bdfsg1-4
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 141,800 kB
  • ctags: 14,082
  • sloc: ansic: 126,788; cpp: 62,046; python: 2,080; perl: 1,255; sh: 1,146; yacc: 1,019; lex: 239; makefile: 100
file content (138 lines) | stat: -rw-r--r-- 5,791 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>FreeMat: ODE45 Numerical Solution of ODEs</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">FreeMat
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.1 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li class="current"><a href="pages.html"><span>Related&#160;Pages</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('num_ode45.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="headertitle">
<div class="title">ODE45 Numerical Solution of ODEs </div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p>Section: <a class="el" href="sec_num.html">Numerical Methods</a> </p>
<h1><a class="anchor" id="Usage"></a>
Usage</h1>
<p>function [t,y] = ode45(f,tspan,y0,options,varargin) function SOL = ode45(f,tspan,y0,options,varargin)</p>
<p>ode45 is a solver for ordinary differential equations and initial value problems. To solve the ODE </p>
<pre class="fragment">      y'(t) =  f(t,y)
      y(0)  =  y0
</pre><p> over the interval tspan=[t0 t1], you can use ode45. For example, to solve the ode </p>
<pre class="fragment"> y'   =  y
 y(0) =  1
</pre><p>whose exact solution is y(t)=exp(t), over the interval t0=0, t1=3, do</p>
<pre class="fragment">--&gt;       [t,y]=ode45(@(t,y) y,[0 3],1)
t = 

 Columns 1 to 7

         0    0.0030    0.0180    0.0930    0.3930    0.6930    0.9930 

 Columns 8 to 14

    1.2930    1.5930    1.8930    2.1930    2.4930    2.7930    3.0000 

y = 
    1.0000 
    1.0030 
    1.0182 
    1.0975 
    1.4814 
    1.9997 
    2.6993 
    3.6437 
    4.9185 
    6.6392 
    8.9620 
   12.0975 
   16.3299 
   20.0854 
</pre><p>If you want a dense output (i.e., an output that also contains an interpolating spline), use instead</p>
<pre class="fragment">--&gt;       SOL=ode45(@(t,y) y,[0 3],1)

SOL = 
    x: 1x14 double array
    y: 1x14 double array
    xe: 
    ye: 
    ie: 
    solver: generic_ode_solver
    interpolant: 1x1 functionpointer array
    idata: 1x1 struct array
</pre><p>You can view the result using </p>
<pre class="fragment">      plot(0:0.01:3,deval(SOL,0:0.01:3))
</pre><p> You will notice that this function is available for "every" value of t, while </p>
<pre class="fragment"> plot(t,y,'o-')
</pre><p>is only available at a few points.</p>
<p>The optional argument 'options' is a structure. It may contain any of the following fields:</p>
<p>'AbsTol' - Absolute tolerance, default is 1e-6. 'RelTol' - Relative tolerance, default is 1e-3. 'MaxStep' - Maximum step size, default is (tspan(2)-tspan(1))/10 'InitialStep' - Initial step size, default is maxstep/100 'Stepper' - To override the default Fehlberg integrator 'Events' - To provide an event function 'Projection' - To provide a projection function</p>
<p>The varargin is ignored by this function, but is passed to all your callbacks, i.e., f, the event function and the projection function.</p>
<p>==Event Function==</p>
<p>The event function can be used to detect situations where the integrator should stop, possibly because the right-hand-side has changed, because of a collision, etc...</p>
<p>An event function should look like</p>
<p>function [val,isterminal,direction]=event(t,y,...)</p>
<p>The return values are:</p>
<p>val - the value of the event function. isterminal - whether or not this event should cause termination of the integrator. direction - 1=upcrossings only matter, -1=downcrossings only, 0=both.</p>
<p>== Projection function ==</p>
<p>For geometric integration, you can provide a projection function which will be called after each time step. The projection function has the following signature: </p>
<pre class="fragment">function yn=project(t,yn,...);
</pre><p>If the output yn is very different from the input yn, the quality of interpolation may decrease. </p>
</div></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="index.html">FreeMat Documentation</a></li><li class="navelem"><a class="el" href="sec_num.html">Numerical Methods</a></li>
    <li class="footer">Generated on Thu Jul 25 2013 17:17:45 for FreeMat by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.1.1 </li>
  </ul>
</div>
</body>
</html>