File: dassl-2.m

package info (click to toggle)
octave2.1 1%3A2.1.73-13
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 37,028 kB
  • ctags: 20,874
  • sloc: cpp: 106,508; fortran: 46,978; ansic: 5,720; sh: 4,800; makefile: 3,186; yacc: 3,132; lex: 2,892; lisp: 1,715; perl: 778; awk: 174; exp: 134
file content (36 lines) | stat: -rw-r--r-- 676 bytes parent folder | download | duplicates (3)
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
## dassl-2.m
##
## Test dassl() function
##
## Author: David Billinghurst (David.Billinghurst@riotinto.com.au)
##         Comalco Research and Technology
##         20 May 1998
##
## Based on SLATEC quick check for DASSL by Linda Petzold
##
## Problem
##
##   x1' + 10*x1 = 0,   x1(0) = 1
##   x1  + x2    = 1,   x2(0) = 0
## 
##
## Solution
##
##  x1(t) = exp(-10*t)
##  x2(t) = 1 - x(1)

x0 = [1; 0];
xdot0 = [-10; 10];
t = (0:0.2:1)';

tol = 500 * dassl_options ("relative tolerance");

function res = f (x, xdot, t)
  res = [xdot(1)+10*x(1); x(1)+x(2)-1];
endfunction

[x, xdot] = dassl ("f", x0, xdot0, t);

y = [exp(-10*t), 1-exp(-10*t)];

all (all (abs (x - y) < tol))