annotate liboctave/base-de.h @ 3511:d92134062783

[project @ 2000-02-01 22:06:28 by jwe]
author jwe
date Tue, 01 Feb 2000 22:10:24 +0000
parents 81a6b40c0769
children addebffd4961
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
1 /*
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
2
2847
8b262e771614 [project @ 1997-03-27 16:18:26 by jwe]
jwe
parents: 1993
diff changeset
3 Copyright (C) 1996, 1997 John W. Eaton
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
4
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
5 This file is part of Octave.
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
6
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
7 Octave is free software; you can redistribute it and/or modify it
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
8 under the terms of the GNU General Public License as published by the
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
9 Free Software Foundation; either version 2, or (at your option) any
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
10 later version.
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
11
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
12 Octave is distributed in the hope that it will be useful, but WITHOUT
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
15 for more details.
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
16
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
18 along with Octave; see the file COPYING. If not, write to the Free
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
19 Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
20
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
21 */
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
22
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
23 #if !defined (octave_base_de_h)
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
24 #define octave_base_de_h 1
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
25
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
26 #include "dColVector.h"
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
27 #include "dMatrix.h"
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
28
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1843
diff changeset
29 class
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1843
diff changeset
30 base_diff_eqn
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
31 {
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
32 public:
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
33
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1843
diff changeset
34 base_diff_eqn (void) : x (), t (0.0) { }
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
35
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1843
diff changeset
36 base_diff_eqn (const ColumnVector& xx, double tt) : x (xx), t (tt) { }
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
37
1879
1b43d3c06c04 [project @ 1996-02-05 16:24:56 by jwe]
jwe
parents: 1843
diff changeset
38 base_diff_eqn (const base_diff_eqn& a) : x (a.x), t (a.t) { }
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
39
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
40 virtual ~base_diff_eqn (void) { }
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
41
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
42 base_diff_eqn& operator = (const base_diff_eqn& a)
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
43 {
1958
9ca852da0017 [project @ 1996-02-15 04:46:20 by jwe]
jwe
parents: 1879
diff changeset
44 if (this != &a)
9ca852da0017 [project @ 1996-02-15 04:46:20 by jwe]
jwe
parents: 1879
diff changeset
45 {
9ca852da0017 [project @ 1996-02-15 04:46:20 by jwe]
jwe
parents: 1879
diff changeset
46 x = a.x;
9ca852da0017 [project @ 1996-02-15 04:46:20 by jwe]
jwe
parents: 1879
diff changeset
47 t = a.t;
9ca852da0017 [project @ 1996-02-15 04:46:20 by jwe]
jwe
parents: 1879
diff changeset
48 }
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
49 return *this;
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
50 }
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
51
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
52 // Derived classes must provide functions to actually do the
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
53 // integration.
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
54
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
55 // Return the vector of states at output time t.
3508
5fcfe05d76e1 [project @ 2000-02-01 21:38:03 by jwe]
jwe
parents: 2847
diff changeset
56 virtual ColumnVector do_integrate (double tt) = 0;
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
57
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
58 // Return a matrix of states at each output time specified by t.
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
59 // The rows of the result matrix should each correspond to a new
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
60 // output time.
3508
5fcfe05d76e1 [project @ 2000-02-01 21:38:03 by jwe]
jwe
parents: 2847
diff changeset
61 virtual Matrix do_integrate (const ColumnVector& tt) = 0;
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
62
3511
d92134062783 [project @ 2000-02-01 22:06:28 by jwe]
jwe
parents: 3510
diff changeset
63 virtual Matrix do_integrate (const ColumnVector& tt,
d92134062783 [project @ 2000-02-01 22:06:28 by jwe]
jwe
parents: 3510
diff changeset
64 const ColumnVector& ttcrit) = 0;
d92134062783 [project @ 2000-02-01 22:06:28 by jwe]
jwe
parents: 3510
diff changeset
65
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
66 // There must also be a way for us to force the integration to
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
67 // restart.
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
68 virtual void force_restart (void) = 0;
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
69
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
70 // Lots of ways to call the single function and optionally set and
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
71 // get additional information.
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
72
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
73 // Integrate to t from current point.
3508
5fcfe05d76e1 [project @ 2000-02-01 21:38:03 by jwe]
jwe
parents: 2847
diff changeset
74 virtual ColumnVector integrate (double tt)
5fcfe05d76e1 [project @ 2000-02-01 21:38:03 by jwe]
jwe
parents: 2847
diff changeset
75 { return do_integrate (tt); }
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
76
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
77 // Set new x0, t0 and integrate to t.
3508
5fcfe05d76e1 [project @ 2000-02-01 21:38:03 by jwe]
jwe
parents: 2847
diff changeset
78 virtual ColumnVector integrate (const ColumnVector& x0, double t0, double tt)
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
79 {
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
80 initialize (x0, t0);
3508
5fcfe05d76e1 [project @ 2000-02-01 21:38:03 by jwe]
jwe
parents: 2847
diff changeset
81 return do_integrate (tt);
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
82 }
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
83
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
84 // Integrate from current point and return output at all points
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
85 // specified by t.
3510
81a6b40c0769 [project @ 2000-02-01 21:57:05 by jwe]
jwe
parents: 3508
diff changeset
86 virtual Matrix integrate (const ColumnVector& tt)
3508
5fcfe05d76e1 [project @ 2000-02-01 21:38:03 by jwe]
jwe
parents: 2847
diff changeset
87 { return do_integrate (tt); }
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
88
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
89 // Set new x0, t0 and integrate to return output at all points
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
90 // specified by t.
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
91 virtual Matrix integrate (const ColumnVector& x0, double t0,
3511
d92134062783 [project @ 2000-02-01 22:06:28 by jwe]
jwe
parents: 3510
diff changeset
92 const ColumnVector& tt)
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
93 {
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
94 initialize (x0, t0);
3508
5fcfe05d76e1 [project @ 2000-02-01 21:38:03 by jwe]
jwe
parents: 2847
diff changeset
95 return do_integrate (tt);
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
96 }
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
97
3511
d92134062783 [project @ 2000-02-01 22:06:28 by jwe]
jwe
parents: 3510
diff changeset
98 // Integrate from current point and return output at all points
d92134062783 [project @ 2000-02-01 22:06:28 by jwe]
jwe
parents: 3510
diff changeset
99 // specified by t.
d92134062783 [project @ 2000-02-01 22:06:28 by jwe]
jwe
parents: 3510
diff changeset
100 virtual Matrix integrate (const ColumnVector& tt,
d92134062783 [project @ 2000-02-01 22:06:28 by jwe]
jwe
parents: 3510
diff changeset
101 const ColumnVector& ttcrit)
d92134062783 [project @ 2000-02-01 22:06:28 by jwe]
jwe
parents: 3510
diff changeset
102 { return do_integrate (tt, ttcrit); }
d92134062783 [project @ 2000-02-01 22:06:28 by jwe]
jwe
parents: 3510
diff changeset
103
d92134062783 [project @ 2000-02-01 22:06:28 by jwe]
jwe
parents: 3510
diff changeset
104 // Set new x0, t0 and integrate to return output at all points
d92134062783 [project @ 2000-02-01 22:06:28 by jwe]
jwe
parents: 3510
diff changeset
105 // specified by t.
d92134062783 [project @ 2000-02-01 22:06:28 by jwe]
jwe
parents: 3510
diff changeset
106 virtual Matrix integrate (const ColumnVector& x0, double t0,
d92134062783 [project @ 2000-02-01 22:06:28 by jwe]
jwe
parents: 3510
diff changeset
107 const ColumnVector& tt,
d92134062783 [project @ 2000-02-01 22:06:28 by jwe]
jwe
parents: 3510
diff changeset
108 const ColumnVector& ttcrit)
d92134062783 [project @ 2000-02-01 22:06:28 by jwe]
jwe
parents: 3510
diff changeset
109 {
d92134062783 [project @ 2000-02-01 22:06:28 by jwe]
jwe
parents: 3510
diff changeset
110 initialize (x0, t0);
d92134062783 [project @ 2000-02-01 22:06:28 by jwe]
jwe
parents: 3510
diff changeset
111 return do_integrate (tt, ttcrit);
d92134062783 [project @ 2000-02-01 22:06:28 by jwe]
jwe
parents: 3510
diff changeset
112 }
d92134062783 [project @ 2000-02-01 22:06:28 by jwe]
jwe
parents: 3510
diff changeset
113
1843
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
114 virtual void initialize (const ColumnVector& x0, double t0)
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
115 {
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
116 x = x0;
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
117 t = t0;
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
118 force_restart ();
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
119 }
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
120
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
121 int size (void) const { return x.capacity (); }
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
122
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
123 ColumnVector state (void) const { return x; }
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
124
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
125 double time (void) const { return t; }
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
126
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
127 protected:
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
128
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
129 ColumnVector x;
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
130 double t;
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
131 };
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
132
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
133 #endif
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
134
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
135 /*
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
136 ;;; Local Variables: ***
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
137 ;;; mode: C++ ***
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
138 ;;; End: ***
88c5728ae7ae [project @ 1996-02-03 11:44:20 by jwe]
jwe
parents:
diff changeset
139 */