Mercurial > hg > octave-nkf
annotate scripts/general/cumtrapz.m @ 12642:f96b9b9f141b stable
doc: Periodic grammarcheck and spellcheck of documentation.
* func.txi: Correct two misspellings
* cumtrapz.m, dblquad.m, quadgk.m, quadl.m, quadv.m, trapz.m, triplequad.m,
cond.m, gmres.m, bzip2.m, compare_versions.m, getappdata.m, unpack.m, ver.m,
glpk.m, pkg.m, axis.m, uigetdir.m, uigetfile.m, view.m, prctile.m, quantile.m,
unidcdf.m, unidinv.m, isstrprop.m, balance.cc, besselj.cc, cellfun.cc,
colamd.cc, dot.cc, eigs.cc, fftw.cc, matrix_type.cc, pinv.cc, qr.cc, quad.cc,
quadcc.cc, qz.cc, regexp.cc, schur.cc, time.cc (gmtime), typecast.cc
urlwrite.cc bitfcns.cc (bitshift), data.cc (rem, norm, merge) debug.cc
(dbstatus), dirfns.cc (glob), file-io.cc (freport), load-path.cc (genpath),
load-save.cc (save), mappers.cc (islower, isupper, tolower, toupper)
oct-hist.cc (edit_history), ov-fcn-inline.cc (vectorize), ov.cc (subsref),
syscalls.cc (stat), variables.cc (whos, clear): Improve docstrings.
Removed trailing whitespace characters on line.
author | Rik <octave@nomad.inbox5.com> |
---|---|
date | Sun, 01 May 2011 11:39:50 -0700 |
parents | 16cca721117b |
children | d8aff843a9e9 |
rev | line source |
---|---|
11523 | 1 ## Copyright (C) 2000-2011 Kai Habel |
5820 | 2 ## |
3 ## This file is part of Octave. | |
4 ## | |
5 ## Octave is free software; you can redistribute it and/or modify it | |
6 ## under the terms of the GNU General Public License as published by | |
7016 | 7 ## the Free Software Foundation; either version 3 of the License, or (at |
8 ## your option) any later version. | |
5820 | 9 ## |
10 ## Octave is distributed in the hope that it will be useful, but | |
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 ## General Public License for more details. | |
14 ## | |
15 ## You should have received a copy of the GNU General Public License | |
7016 | 16 ## along with Octave; see the file COPYING. If not, see |
17 ## <http://www.gnu.org/licenses/>. | |
5820 | 18 |
19 ## -*- texinfo -*- | |
12612
16cca721117b
doc: Update all documentation for chapter on Numerical Integration
Rik <octave@nomad.inbox5.com>
parents:
12575
diff
changeset
|
20 ## @deftypefn {Function File} {@var{q} =} cumtrapz (@var{y}) |
16cca721117b
doc: Update all documentation for chapter on Numerical Integration
Rik <octave@nomad.inbox5.com>
parents:
12575
diff
changeset
|
21 ## @deftypefnx {Function File} {@var{q} =} cumtrapz (@var{x}, @var{y}) |
16cca721117b
doc: Update all documentation for chapter on Numerical Integration
Rik <octave@nomad.inbox5.com>
parents:
12575
diff
changeset
|
22 ## @deftypefnx {Function File} {@var{q} =} cumtrapz (@dots{}, @var{dim}) |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
23 ## |
12612
16cca721117b
doc: Update all documentation for chapter on Numerical Integration
Rik <octave@nomad.inbox5.com>
parents:
12575
diff
changeset
|
24 ## Cumulative numerical integration of points @var{y} using the trapezoidal |
16cca721117b
doc: Update all documentation for chapter on Numerical Integration
Rik <octave@nomad.inbox5.com>
parents:
12575
diff
changeset
|
25 ## method. |
16cca721117b
doc: Update all documentation for chapter on Numerical Integration
Rik <octave@nomad.inbox5.com>
parents:
12575
diff
changeset
|
26 ## @w{@code{cumtrapz (@var{y})}} computes the cumulative integral of @var{y} |
16cca721117b
doc: Update all documentation for chapter on Numerical Integration
Rik <octave@nomad.inbox5.com>
parents:
12575
diff
changeset
|
27 ## along the first non-singleton dimension. Where @code{trapz} reports |
16cca721117b
doc: Update all documentation for chapter on Numerical Integration
Rik <octave@nomad.inbox5.com>
parents:
12575
diff
changeset
|
28 ## only the overall integral sum, @code{cumtrapz} reports the current partial |
16cca721117b
doc: Update all documentation for chapter on Numerical Integration
Rik <octave@nomad.inbox5.com>
parents:
12575
diff
changeset
|
29 ## sum value at each point of @var{y}. When the argument @var{x} is omitted |
12642
f96b9b9f141b
doc: Periodic grammarcheck and spellcheck of documentation.
Rik <octave@nomad.inbox5.com>
parents:
12612
diff
changeset
|
30 ## an equally spaced @var{x} vector with unit spacing (1) is assumed. |
12612
16cca721117b
doc: Update all documentation for chapter on Numerical Integration
Rik <octave@nomad.inbox5.com>
parents:
12575
diff
changeset
|
31 ## @code{cumtrapz (@var{x}, @var{y})} evaluates the integral with respect to |
16cca721117b
doc: Update all documentation for chapter on Numerical Integration
Rik <octave@nomad.inbox5.com>
parents:
12575
diff
changeset
|
32 ## the spacing in @var{x} and the values in @var{y}. This is useful if the |
16cca721117b
doc: Update all documentation for chapter on Numerical Integration
Rik <octave@nomad.inbox5.com>
parents:
12575
diff
changeset
|
33 ## points in @var{y} have been sampled unevenly. If the optional @var{dim} |
16cca721117b
doc: Update all documentation for chapter on Numerical Integration
Rik <octave@nomad.inbox5.com>
parents:
12575
diff
changeset
|
34 ## argument is given, operate along this dimension. |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
35 ## |
12612
16cca721117b
doc: Update all documentation for chapter on Numerical Integration
Rik <octave@nomad.inbox5.com>
parents:
12575
diff
changeset
|
36 ## If @var{x} is not specified then unit spacing will be used. To scale |
16cca721117b
doc: Update all documentation for chapter on Numerical Integration
Rik <octave@nomad.inbox5.com>
parents:
12575
diff
changeset
|
37 ## the integral to the correct value you must multiply by the actual spacing |
16cca721117b
doc: Update all documentation for chapter on Numerical Integration
Rik <octave@nomad.inbox5.com>
parents:
12575
diff
changeset
|
38 ## value (deltaX). |
12575
d0b799dafede
Grammarcheck files for 3.4.1 release.
Rik <octave@nomad.inbox5.com>
parents:
11587
diff
changeset
|
39 ## @seealso{trapz, cumsum} |
5820 | 40 ## @end deftypefn |
41 | |
10549 | 42 ## Author: Kai Habel <kai.habel@gmx.de> |
5820 | 43 ## |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
44 ## also: June 2000 Paul Kienzle (fixes,suggestions) |
5820 | 45 ## 2006-05-12 David Bateman - Modified for NDArrays |
46 | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
47 function z = cumtrapz (x, y, dim) |
5820 | 48 |
49 if (nargin < 1) || (nargin > 3) | |
6046 | 50 print_usage (); |
5820 | 51 endif |
52 | |
53 nd = ndims (x); | |
54 sz = size (x); | |
55 | |
56 have_x = false; | |
57 have_dim = false; | |
58 if (nargin == 3) | |
59 have_x = true; | |
60 have_dim = true; | |
10690
35adf2a71f3f
Use common code block to find first non-singleton dimension.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
61 elseif (nargin == 2) |
6157 | 62 if (! size_equal (x, y) && isscalar (y)) |
5820 | 63 dim = y; |
64 have_dim = true; | |
65 else | |
66 have_x = true; | |
67 endif | |
68 endif | |
69 | |
70 if (! have_dim) | |
10690
35adf2a71f3f
Use common code block to find first non-singleton dimension.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
71 ## Find the first non-singleton dimension. |
35adf2a71f3f
Use common code block to find first non-singleton dimension.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
72 dim = find (sz > 1, 1); |
35adf2a71f3f
Use common code block to find first non-singleton dimension.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
73 if (isempty (dim)) |
5820 | 74 dim = 1; |
75 endif | |
76 else | |
77 dim = floor (dim); | |
10690
35adf2a71f3f
Use common code block to find first non-singleton dimension.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
78 if (! (isscalar (dim) && 1 <= dim && dim <= nd)) |
35adf2a71f3f
Use common code block to find first non-singleton dimension.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
79 error ("cumtrapz: invalid dimension DIM"); |
5820 | 80 endif |
81 endif | |
82 | |
83 n = sz(dim); | |
84 idx1 = cell (); | |
85 for i = 1:nd | |
86 idx1{i} = 1:sz(i); | |
87 endfor | |
88 idx2 = idx1; | |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
89 idx1{dim} = 2 : n; |
5820 | 90 idx2{dim} = 1 : (n - 1); |
91 | |
92 if (! have_x) | |
93 z = 0.5 * cumsum (x(idx1{:}) + x(idx2{:}), dim); | |
94 else | |
6157 | 95 if (! size_equal (x, y)) |
10690
35adf2a71f3f
Use common code block to find first non-singleton dimension.
Rik <octave@nomad.inbox5.com>
parents:
10549
diff
changeset
|
96 error ("cumtrapz: X and Y must have the same shape"); |
5820 | 97 endif |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
98 z = 0.5 * cumsum ((x(idx1{:}) - x(idx2{:})) .* |
10549 | 99 (y(idx1{:}) + y(idx2{:})), dim); |
5820 | 100 endif |
101 | |
102 sz(dim) = 1; | |
103 z = cat (dim, zeros (sz), z); | |
104 | |
105 endfunction | |
106 | |
107 %!shared x1,x2,y | |
108 %! x1 = [0,0,0;2,2,2]; | |
109 %! x2 = [0,2,4;0,2,4]; | |
110 %! y = [1,2,3;4,5,6]; | |
111 %!assert (cumtrapz(y),[0,0,0;2.5,3.5,4.5]) | |
112 %!assert (cumtrapz(x1,y),[0,0,0;5,7,9]) | |
113 %!assert (cumtrapz(y,1),[0,0,0;2.5,3.5,4.5]) | |
114 %!assert (cumtrapz(x1,y,1),[0,0,0;5,7,9]) | |
115 %!assert (cumtrapz(y,2),[0,1.5,4;0,4.5,10]) | |
116 %!assert (cumtrapz(x2,y,2),[0,3,8;0,9,20]) |