Mercurial > octave
annotate scripts/general/integral3.m @ 24158:f9549e90d620
integral3.m: Return single type output if an input is of single type (bug #52243).
* integral3.m: Check for any limit of integration (x, y, or z) being of type single.
If found, cast xa, xb limits of integration to single. This will signal to
downstream quadrature routines to use single variables.
author | Rik <rik@octave.org> |
---|---|
date | Wed, 18 Oct 2017 21:59:38 -0700 |
parents | 1a3229a2f1ab |
children | 194eb4bd202b |
rev | line source |
---|---|
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
1 ## Copyright (C) 2017 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 ## |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
5 ## Octave is free software; you can redistribute it and/or modify it |
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 |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
7 ## the Free Software Foundation; either version 3 of the License, or |
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 |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
17 ## <http://www.gnu.org/licenses/>. |
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]) |