Octave Screen Shot
-
octave:2> mkoctfile oregonator.cc
oregonator.cc
Creating library oregonator.lib and object oregonator.exp
octave:3> system ('dir oregonator.oct');
Volume in drive D has no label.
Volume Serial Number is ACCF-78A8
Directory of D:\usr\Tatsu\program\Octave\test
2008/11/25 12:24 10,240 oregonator.oct
1 File(s) 10,240 bytes
0 Dir(s) 35,543,801,856 bytes free
octave:4> testOrego2
ans = 0.23438
octave:5> mkoctfile oregonator.cc
oregonator.cc
LINK : fatal error LNK1104: cannot open file 'oregonator.oct'
octave:6> clear oregonator
octave:7> mkoctfile oregonator.cc
oregonator.cc
Creating library oregonator.lib and object oregonator.exp
octave:8> system ('dir oregonator.oct');
Volume in drive D has no label.
Volume Serial Number is ACCF-78A8
Directory of D:\usr\Tatsu\program\Octave\test
2008/11/25 12:27 10,240 oregonator.oct
1 File(s) 10,240 bytes
0 Dir(s) 35,543,801,856 bytes free
- *Please do not forget clear the function before the second, third, .... building
from octave memory.
(In the above example, 'clear oregonator' is required. )
Source of testOrego2.m
## The test of `oregonator'.
x0 = [ 4; 1.1; 4 ];
% t = [0, logspace (-1, log10(303), 150), logspace (log10(304), log10(500), 150)];
t=linspace(0,500,1000);
ts=cputime();
y = lsode ('oregonator', x0, t);
cputime()-ts
plot (t,y);
Source of oregonator.cc from the Octave Manual.
#include <octave/oct.h>
DEFUN_DLD (oregonator, args, ,
"The `oregonator'.")
{
ColumnVector dx (3);
ColumnVector x (args(0).vector_value ());
dx(0) = 77.27 * (x(1) - x(0)*x(1) + x(0) - 8.375e-06*pow (x(0), 2));
dx(1) = (x(2) - x(0)*x(1) - x(1)) / 77.27;
dx(2) = 0.161*(x(0) - x(2));
return octave_value (dx);
}