annotate extra/integration/ncrule.m @ 0:6b33357c7561 octave-forge

Initial revision
author pkienzle
date Wed, 10 Oct 2001 19:54:49 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
1 function [bp,wf]=ncrule(m)
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
2 %usage: [bp,wf]=ncrule(m);
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
3 % This function returns the Newton-Coates base points and weight factors
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
4 % up to an 8 point Newton-Coates formula.
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
5 %
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
6 % m -- number of Newton-Coates points (integrates an mth order
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
7 % polynomial exactly (or an (m+1)th order for even m))
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
8
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
9 % By Bryce Gardner, Purdue University, Spring 1993.
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
10
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
11 if ( m == 1 )
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
12 bp=[-1;1];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
13 wf=[1;1];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
14 elseif ( m == 2 )
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
15 bp=[-1;0;1];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
16 wf=[1;4;1]/3;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
17 elseif ( m == 3 )
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
18 bp=[-1;-1/3;1/3;1];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
19 wf=[1;3;3;1]/4;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
20 elseif ( m == 4 )
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
21 bp=[-1;-1/2;0;1/2;1];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
22 wf=[7;32;12;32;7]/45;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
23 elseif ( m == 5 )
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
24 bp=[-1;-3/5;-1/5;1/5;3/5;1];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
25 wf=[19;75;50;50;75;19]/144;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
26 elseif ( m == 6 )
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
27 bp=[-1;-2/3;-1/3;0;1/3;2/3;1];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
28 wf=[41;216;27;272;27;216;41]/420;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
29 elseif ( m == 7 )
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
30 bp=[-1;-5/7;-3/7;-1/7;1/7;3/7;5/7;1];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
31 wf=[751;3577;1323;2989;2989;1323;3577;751]/8640;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
32 else
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
33 if ( m != 8 )
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
34 disp('Dont know formula higher than n=8. Returning as if n=8.');
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
35 endif
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
36 bp=[-1;-3/4;-1/2;-1/4;0;1/4;1/2;3/4;1];
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
37 wf=[989;5888;-928;10496;-4540;10496;-928;5888;989]/14175;
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
38 endif
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
39
6b33357c7561 Initial revision
pkienzle
parents:
diff changeset
40 endfunction