annotate scripts/general/integral3.m @ 25054:6652d3823428 stable

maint: Update copyright dates in all source files.
author John W. Eaton <jwe@octave.org>
date Fri, 30 Mar 2018 09:19:05 -0400
parents 194eb4bd202b
children 07c2c42f457e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25054
6652d3823428 maint: Update copyright dates in all source files.
John W. Eaton <jwe@octave.org>
parents: 24534
diff changeset
1 ## Copyright (C) 2017-2018 David Bateman
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
2 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
3 ## This file is part of Octave.
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
4 ##
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24158
diff changeset
5 ## Octave is free software: you can redistribute it and/or modify it
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
6 ## under the terms of the GNU General Public License as published by
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24158
diff changeset
7 ## the Free Software Foundation, either version 3 of the License, or
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
8 ## (at your option) any later version.
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
9 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
13 ## GNU General Public License for more details.
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
14 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
15 ## You should have received a copy of the GNU General Public License
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24158
diff changeset
17 ## <https://www.gnu.org/licenses/>.
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
18
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
19 ## -*- texinfo -*-
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
20 ## @deftypefn {} {@var{q} =} integral3 (@var{f}, @var{xa}, @var{xb}, @var{ya}, @var{yb}, @var{za}, @var{zb})
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
21 ## @deftypefnx {} {@var{q} =} integral3 (@var{f}, @var{xa}, @var{xb}, @var{ya}, @var{yb}, @var{za}, @var{zb}, @var{prop}, @var{val}, @dots{})
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
22 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
23 ## Numerically evaluate the three-dimensional integral of @var{f} using
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
24 ## adaptive quadrature over the three-dimensional domain defined by
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
25 ## @var{xa}, @var{xb}, @var{ya}, @var{yb}, @var{za}, @var{zb} (scalars may
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
26 ## be finite or infinite). Additionally, @var{ya} and @var{yb} may be
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
27 ## scalar functions of @var{x} and @var{za}, and @var{zb} maybe be scalar
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
28 ## functions of @var{x} and @var{y}, allowing for integration over
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
29 ## non-rectangular domains.
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
30 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
31 ## @var{f} is a function handle, inline function, or string containing the name
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
32 ## of the function to evaluate. The function @var{f} must be of the form
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
33 ## @math{z = f(x,y)} where @var{x} is a vector and @var{y} is a scalar. It
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
34 ## should return a vector of the same length and orientation as @var{x}.
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
35 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
36 ## Additional optional parameters can be specified using
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
37 ## @qcode{"@var{property}", @var{value}} pairs. Valid properties are:
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
38 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
39 ## @table @code
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
40 ## @item AbsTol
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
41 ## Define the absolute error tolerance for the quadrature. The default
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
42 ## value is 1e-10 (1e-5 for single).
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
43 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
44 ## @item RelTol
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
45 ## Define the relative error tolerance for the quadrature. The default
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
46 ## value is 1e-6 (1e-4 for single).
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
47 ##
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
48 ## @item Method
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
49 ## Specify the two-dimensional integration method to be used, with valid
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
50 ## options being @qcode{"auto"} (default), @qcode{"tiled"}, or
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
51 ## @qcode{"iterated"}. When using @qcode{"auto"}, Octave will choose the
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
52 ## @qcode{"tiled"} method unless any of the integration limits are infinite.
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
53 ##
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
54 ## @item Vectorized
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
55 ## Enable or disable vectorized integration. A value of @code{false} forces
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
56 ## Octave to use only scalar inputs when calling the integrand, which enables
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
57 ## integrands @math{f(x,y)} that have not been vectorized and only accept
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
58 ## @var{x} and @var{y} as scalars to be used. The default value is
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
59 ## @code{true}.
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
60 ## @end table
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
61 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
62 ## Adaptive quadrature is used to minimize the estimate of error until the
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
63 ## following is satisfied:
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
64 ## @tex
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
65 ## $$error \leq \max \left( AbsTol, RelTol\cdot\vert q\vert \right)$$
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
66 ## @end tex
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
67 ## @ifnottex
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
68 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
69 ## @example
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
70 ## @group
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
71 ## @var{error} <= max (@var{AbsTol}, @var{RelTol}*|@var{q}|)
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
72 ## @end group
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
73 ## @end example
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
74 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
75 ## @end ifnottex
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
76 ##
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
77 ## @var{err} is an approximate bound on the error in the integral
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
78 ## @code{abs (@var{q} - @var{I})}, where @var{I} is the exact value of the
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
79 ## integral.
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
80 ##
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
81 ## Example 1 : integrate over a rectangular volume
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
82 ##
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
83 ## @example
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
84 ## @group
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
85 ## @var{f} = @@(@var{x},@var{y},@var{z}) ones (size (@var{x}));
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
86 ## @var{q} = integral3 (@var{f}, 0, 1, 0, 1, 0, 1)
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
87 ## @result{} @var{q} = 1
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
88 ## @end group
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
89 ## @end example
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
90 ##
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
91 ## For this constant-value integrand, the result is a volume which is just
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
92 ## @code{@var{Length} * @var{Width} x @var{Height}}.
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
93 ##
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
94 ## Example 2 : integrate over a spherical volume
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
95 ##
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
96 ## @example
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
97 ## @group
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
98 ## @var{f} = @@(@var{x},@var{y}) ones (size (@var{x}));
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
99 ## @var{ymax} = @@(@var{x}) sqrt (1 - @var{x}.^2);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
100 ## @var{zmax} = @@(@var{x}) sqrt (1 - @var{x}.^2 - @var{y}.^2);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
101 ## @var{q} = integral3 (@var{f}, 0, 1, 0, @var{ymax})
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
102 ## @result{} @var{q} = 0.52360
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
103 ## @end group
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
104 ## @end example
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
105 ##
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
106 ## For this constant-value integrand, the result is a volume which is 1/8th
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
107 ## of a unit sphere or @code{1/8 * 4/3 * pi}.
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
108 ##
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
109 ## Programming Notes: If there are singularities within the integration region
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
110 ## it is best to split the integral and place the singularities on the
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
111 ## boundary.
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
112 ##
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
113 ## Known @sc{matlab} incompatibility: If tolerances are left unspecified, and
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
114 ## any integration limits are of type @code{single}, then Octave's integral
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
115 ## functions automatically reduce the default absolute and relative error
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
116 ## tolerances as specified above. If tighter tolerances are desired they
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
117 ## must be specified. @sc{matlab} leaves the tighter tolerances appropriate
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
118 ## for @code{double} inputs in place regardless of the class of the
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
119 ## integration limits.
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
120 ##
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
121 ## Reference: @nospell{L.F. Shampine},
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
122 ## @cite{@sc{matlab} program for quadrature in 2D}, Applied Mathematics and
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
123 ## Computation, pp. 266--274, Vol 1, 2008.
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
124 ##
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
125 ## @seealso{triplequad, integral, quad, quadgk, quadv, quadl,
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
126 ## quadcc, trapz, integral2, quad2d, dblquad}
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
127 ## @end deftypefn
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
128
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
129 function q = integral3 (f, xa, xb, ya, yb, za, zb, varargin)
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
130
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
131 if (nargin < 7 || mod (nargin, 2) == 0)
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
132 print_usage ();
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
133 endif
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
134
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
135 if (! is_function_handle (f))
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
136 print_usage ();
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
137 endif
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
138
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
139 if (! (isreal (xa) && isscalar (xa) && isreal (xb) && isscalar (xb)))
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
140 print_usage ();
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
141 endif
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
142
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
143 ## Check for single or double limits to set appropriate default tolerance.
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
144 issingle = (isa ([xa, xb], "single")
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
145 || (! is_function_handle (ya) && isa (ya, "single"))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
146 || (! is_function_handle (yb) && isa (yb, "single"))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
147 || (! is_function_handle (za) && isa (za, "single"))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
148 || (! is_function_handle (zb) && isa (zb, "single")));
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
149
24158
f9549e90d620 integral3.m: Return single type output if an input is of single type (bug #52243).
Rik <rik@octave.org>
parents: 24149
diff changeset
150 ## Communicate to downstream quadrature routines that at least one limit of
f9549e90d620 integral3.m: Return single type output if an input is of single type (bug #52243).
Rik <rik@octave.org>
parents: 24149
diff changeset
151 ## integration was of single type by casting xa, xb to single.
f9549e90d620 integral3.m: Return single type output if an input is of single type (bug #52243).
Rik <rik@octave.org>
parents: 24149
diff changeset
152 if (issingle)
f9549e90d620 integral3.m: Return single type output if an input is of single type (bug #52243).
Rik <rik@octave.org>
parents: 24149
diff changeset
153 xa = single (xa);
f9549e90d620 integral3.m: Return single type output if an input is of single type (bug #52243).
Rik <rik@octave.org>
parents: 24149
diff changeset
154 xb = single (xb);
f9549e90d620 integral3.m: Return single type output if an input is of single type (bug #52243).
Rik <rik@octave.org>
parents: 24149
diff changeset
155 endif
f9549e90d620 integral3.m: Return single type output if an input is of single type (bug #52243).
Rik <rik@octave.org>
parents: 24149
diff changeset
156
f9549e90d620 integral3.m: Return single type output if an input is of single type (bug #52243).
Rik <rik@octave.org>
parents: 24149
diff changeset
157 ## Set default tolerances, and then update with any specified parameters.
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
158 if (issingle)
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
159 abstol = 1e-5;
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
160 reltol = 1e-4;
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
161 else
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
162 abstol = 1e-10;
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
163 reltol = 1e-6;
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
164 endif
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
165
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
166 method = "auto";
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
167 vectorized = true;
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
168 idx = 1;
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
169 while (idx < nargin - 7)
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
170 prop = varargin{idx++};
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
171 if (! ischar (prop))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
172 error ("integral3: property PROP must be a string");
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
173 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
174
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
175 switch (tolower (prop))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
176 case "abstol"
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
177 abstol = varargin{idx++};
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
178 if (! (isnumeric (abstol) && isscalar (abstol) && abstol >= 0))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
179 error ("integral3: AbsTol value must be a numeric scalar >= 0");
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
180 endif
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
181
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
182 case "reltol"
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
183 reltol = varargin{idx++};
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
184 if (! (isnumeric (reltol) && isscalar (reltol) && reltol >= 0))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
185 error ("integral3: RelTol value must be a numeric scalar >= 0");
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
186 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
187
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
188 case "method"
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
189 method = tolower (varargin{idx++});
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
190 if (! any (strcmp (method, {"auto", "iterated", "tiled"})))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
191 error ("integral3 : unrecognized method '%s'", method);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
192 endif
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
193
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
194 case "vectorized"
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
195 vectorized = varargin{idx++};
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
196 if (! (isscalar (vectorized) && isreal (vectorized)))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
197 error ('integral3: Vectorized must be a logical value');
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
198 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
199
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
200 otherwise
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
201 error ("integral3: unknown property '%s'", prop);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
202
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
203 endswitch
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
204 endwhile
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
205
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
206 if (strcmp (method, "auto"))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
207 if (isinf (xa) || isinf (xb)
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
208 || (! is_function_handle (ya) && isinf (ya))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
209 || (! is_function_handle (yb) && isinf (yb))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
210 || (! is_function_handle (za) && isinf (za))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
211 || (! is_function_handle (zb) && isinf (zb)))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
212 method = "iterated";
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
213 else
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
214 method = "tiled";
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
215 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
216 endif
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
217
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
218 ## check upper and lower bounds of y
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
219 if (! is_function_handle (ya))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
220 if (! (isreal (ya) && isscalar (ya)))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
221 error ("integral3: YA must be a real scalar or a function");
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
222 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
223 ya = @(x) ya * ones (size (x));
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
224 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
225 if (! is_function_handle (yb))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
226 if (! (isreal (yb) && isscalar (yb)))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
227 error ("integral3: YB must be a real scalar or a function");
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
228 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
229 yb = @(x) yb * ones (size (x));
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
230 endif
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
231
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
232 ## check upper and lower bounds of z
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
233 if (! is_function_handle (za))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
234 if (! (isreal (za) && isscalar (za)))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
235 error ("integral3: ZA must be a real scalar or a function");
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
236 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
237 za = @(x, y) za * ones (size(y));
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
238 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
239 if (! is_function_handle (zb))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
240 if (! (isreal (zb) && isscalar (zb)))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
241 error ("integral3: ZB must be a real scalar or a function")
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
242 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
243 zb = @(x, y) zb * ones (size (y));
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
244 endif
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
245
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
246 finner = @(x) inner (x, f, ya, yb, za, zb, vectorized, method, abstol, reltol);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
247 q = quadcc (finner, xa, xb, [abstol, reltol]);
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
248
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
249 endfunction
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
250
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
251 function q = inner (x, f, ya, yb, za, zb, vectorized, method, abstol, reltol)
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
252 q = zeros (size (x));
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
253 for i = 1 : length (x)
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
254 za2 = @(y) za(x(i), y);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
255 zb2 = @(y) zb(x(i), y);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
256 f2 = @(y, z) f(x(i), y, z);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
257 if (! vectorized)
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
258 f2 = @(y, z) arrayfun (f2, y, z);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
259 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
260 if (strcmp (method, "iterated"))
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
261 finner_iter = @(y) inner_iterated (y, f2, za2, zb2, abstol, reltol);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
262 q(i) = quadcc (finner_iter, ya(x(i)), yb(x(i)), [abstol, reltol]);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
263 else
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
264 q(i) = quad2d (f2, ya(x(i)), yb(x(i)), za2, zb2,
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
265 "AbsTol", abstol, "RelTol", reltol);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
266 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
267 endfor
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
268 endfunction
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
269
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
270 function q = inner_iterated (y, f2, za2, zb2, abstol, reltol)
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
271 q = zeros (size (y));
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
272 for i = 1 : length (y)
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
273 q(i) = quadcc (@(z) f2(y(i), z), za2(y(i)), zb2(y(i)), [abstol, reltol]);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
274 endfor
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
275 endfunction
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
276
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
277
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
278 ## method tests
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
279 %!shared f
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
280 %! f = @(x, y, z) x .* y .* z;
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
281
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
282 %!assert (integral3 (f, 0, 1, 0, 1, 0, 1), 0.125, 1e-10);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
283 %!assert (integral3 (f, 0, 1, 0, 1, 0, 1, "method", "tiled"), 0.125, 1e-10);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
284 %!assert (integral3 (f, 0, 1, 0, 1, 0, 1, "method", "iterated"), 0.125, 1e-10);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
285 %!assert (integral3 (f, 0, 1, 0, 1, 0, 1, "method", "auto"), 0.125, 1e-10);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
286
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
287 ## vectorized = false test
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
288 %!test
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
289 %! f = @(x, y, z) x * y * z;
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
290 %! assert (integral3 (f, 0, 1, 0, 1, 0, 1, "vectorized", false), 0.125, 1e-10);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
291
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
292 ## tolerance tests
24149
1a3229a2f1ab integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents: 24148
diff changeset
293 %!test
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
294 %! f = @(x, y, z) 2 * x.^2 + 3 * y.^2 + 4 * z.^2;
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
295 %!assert (integral3 (f, 0, 5, -5, 0, 0, 5, "AbsTol", 1e-9), 9375, 1e-9)
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
296 %!assert (integral3 (f, 0, 5, -5, 0, 0, 5, "RelTol", 1e-5), 9375, -1e-5)
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
297 %!assert (integral3 (f, 0, 5, -5, 0, 0, 5, "RelTol", 1e-6, "AbsTol", 1e-9),
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
298 %! 9375, 1e-9)
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
299
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
300 ## non-rectangular region
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
301 ## This test is too slow with "iterated" method
24149
1a3229a2f1ab integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents: 24148
diff changeset
302 %!test
1a3229a2f1ab integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents: 24148
diff changeset
303 %! f = @(x,y,z) 1 ./ (x + y + z);
1a3229a2f1ab integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents: 24148
diff changeset
304 %! ymax = @(x) 1 - x;
1a3229a2f1ab integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents: 24148
diff changeset
305 %! zmax = @(x, y) 1 - x - y;
1a3229a2f1ab integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents: 24148
diff changeset
306 %! assert (integral3 (f, 0, 1, 0, ymax, 0, zmax, "method", "tiled"), 0.25, 1e-6);
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
307
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
308 ## Test input validation
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
309 %!error integral3
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
310 %!error integral3 (@plus)
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
311 %!error integral3 (@plus, 1)
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
312 %!error integral3 (@plus, 1, 2)
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
313 %!error integral3 (@plus, 1, 2, 3)
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
314 %!error integral3 (@plus, 1, 2, 3, 4)
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
315 %!error integral3 (@plus, 1, 2, 3, 4, 5)
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
316 %!error integral3 (@plus, 1, 2, 3, 4, 5, 6, "foo")
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
317 %!error integral3 (0, 1, 2, 3, 4, 5, 6) # f must be a function handle
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
318 %!error integral3 (@plus, 1i, 2, 3, 4, 5, 6) # real limits
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
319 %!error integral3 (@plus, 1, 2i, 3, 4, 5, 6) # real limits
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
320 %!error integral3 (@plus, [1 1], 2, 3, 4, 5, 6) # scalar limits
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
321 %!error integral3 (@plus, 1, [2 2], 3, 4, 5, 6) # scalar limits
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
322 %!error <property PROP must be a string>
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
323 %! integral3 (@plus, 1, 2, 3, 4, 5, 6, 99, "bar");
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
324 %!error <AbsTol value must be a numeric>
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
325 %! integral3 (@plus, 1, 2, 3, 4, 5, 6, "AbsTol", "foo");
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
326 %!error <AbsTol value must be a .* scalar>
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
327 %! integral3 (@plus, 1, 2, 3, 4, 5, 6, "AbsTol", [1, 2]);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
328 %!error <AbsTol value must be.* .= 0>
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
329 %! integral3 (@plus, 1, 2, 3, 4, 5, 6, "AbsTol", -1);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
330 %!error <RelTol value must be a numeric>
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
331 %! integral3 (@plus, 1, 2, 3, 4, 5, 6, "RelTol", "foo");
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
332 %!error <RelTol value must be a .* scalar>
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
333 %! integral3 (@plus, 1, 2, 3, 4, 5, 6, "RelTol", [1, 2]);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
334 %!error <RelTol value must be.* .= 0>
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
335 %! integral3 (@plus, 1, 2, 3, 4, 5, 6, "RelTol", -1);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
336 %!error <unrecognized method 'foo'>
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
337 %! integral3 (@plus,1,2,3,4,5,6, "method", "foo");
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
338 %!error <Vectorized must be a logical value>
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
339 %! integral3 (@plus,1,2,3,4,5,6, "Vectorized", [0 1]);
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
340 %!error <Vectorized must be a logical value>
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
341 %! integral3 (@plus,1,2,3,4,5,6, "Vectorized", {true});
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
342 %!error <unknown property 'foo'>
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
343 %! integral3 (@plus, 1, 2, 3, 4, 6, 6, "foo", "bar");
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
344 %!error <YA must be a real scalar> integral3 (@plus, 1, 2, 3i, 4, 5, 6)
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
345 %!error <YA must be a real scalar> integral3 (@plus, 1, 2, [3 3], 4, 5, 6)
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
346 %!error <YB must be a real scalar> integral3 (@plus, 1, 2, 3, 4i, 5, 6)
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
347 %!error <YB must be a real scalar> integral3 (@plus, 1, 2, 3, [4 4], 5, 6)
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
348 %!error <ZA must be a real scalar> integral3 (@plus, 1, 2, 3, 4, 5i, 6)
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
349 %!error <ZA must be a real scalar> integral3 (@plus, 1, 2, 3, 4, [5 5], 6)
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
350 %!error <ZB must be a real scalar> integral3 (@plus, 1, 2, 3, 4, 5, 6i)
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
351 %!error <ZB must be a real scalar> integral3 (@plus, 1, 2, 3, 4, 5, [6 6])