annotate scripts/general/integral3.m @ 32002:939e5d952675

Use upper/lower in preference to toupper/tolower to match Matlab. * mappers.cc (Fupper, Flower): Functions renamed from toupper/tolower and now use "DEFUN" macro. Change DEFALIAS to correctly map toXXX to XXX. Update all BIST tests. * func.txi, strings.txi: Update manual. * cellfun.cc, utils.cc, Map.m, idivide.m, integral.m, integral2.m, integral3.m, interp1.m, quad2d.m, quadgk.m, rng.m, griddata.m, griddatan.m, listdlg.m, movegui.m, __file_filter__.m, uigetfile.m, uisetfont.m, __unimplemented__.m, colormap.m, imformats.m, imshow.m, __imread__.m, __imwrite__.m, rgbplot.m, javaclasspath.m, genvarname.m, edit.m, inputParser.m, license.m, open.m, parseparams.m, unpack.m, validateattributes.m, __all_opts__.m, get_description.m, get_forge_pkg.m, camorbit.m, daspect.m, datetick.m, pbaspect.m, __tickangle__.m, rticks.m, thetaticks.m, xticks.m, yticks.m, zticks.m, camlight.m, colorbar.m, isocaps.m, isosurface.m, __add_datasource__.m, __patch__.m, __scatter__.m, reducepatch.m, smooth3.m, surfl.m, hgload.m, hold.m, openfig.m, __add_default_menu__.m, __print_parse_opts__.m, refreshdata.m, saveas.m, struct2hdl.m, movfun.m, stft.m, eigs.m, ichol.m, ilu.m, gammainc.m, gallery.m, corrcoef.m, iqr.m, normalize.m, base2dec.m, index.m, regexptranslate.m, strsplit.m, datestr.m, mk-sparse-tst.sh: Replace toupper/tolower with upper/lower in Octave code.
author Rik <rik@octave.org>
date Wed, 12 Apr 2023 15:34:43 -0700
parents 597f3ee61a48
children 2e484f9f1f18
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
1 ########################################################################
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
2 ##
31706
597f3ee61a48 update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 30564
diff changeset
3 ## Copyright (C) 2017-2023 The Octave Project Developers
27918
b442ec6dda5c use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents: 27800
diff changeset
4 ##
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
5 ## See the file COPYRIGHT.md in the top-level directory of this
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
6 ## distribution or <https://octave.org/copyright/>.
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
7 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
8 ## 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
9 ##
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24158
diff changeset
10 ## 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
11 ## 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
12 ## 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
13 ## (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
14 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
15 ## 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
16 ## 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
17 ## 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
18 ## 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
19 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
20 ## 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
21 ## 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
22 ## <https://www.gnu.org/licenses/>.
27923
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
23 ##
bd51beb6205e update formatting of copyright notices
John W. Eaton <jwe@octave.org>
parents: 27919
diff changeset
24 ########################################################################
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
25
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
26 ## -*- texinfo -*-
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
27 ## @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
28 ## @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
29 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
30 ## 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
31 ## 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
32 ## @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
33 ## 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
34 ## 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
35 ## 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
36 ## non-rectangular domains.
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
37 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
38 ## @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
39 ## 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
40 ## @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
41 ## 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
42 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
43 ## 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
44 ## @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
45 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
46 ## @table @code
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
47 ## @item AbsTol
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
48 ## 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
49 ## 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
50 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
51 ## @item RelTol
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
52 ## 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
53 ## 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
54 ##
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
55 ## @item Method
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
56 ## 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
57 ## 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
58 ## @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
59 ## @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
60 ##
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
61 ## @item Vectorized
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
62 ## 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
63 ## 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
64 ## 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
65 ## @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
66 ## @code{true}.
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
67 ## @end table
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 ## 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
70 ## following is satisfied:
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
71 ## @tex
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
72 ## $$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
73 ## @end tex
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
74 ## @ifnottex
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
75 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
76 ## @example
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
77 ## @group
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
78 ## @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
79 ## @end group
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
80 ## @end example
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
81 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
82 ## @end ifnottex
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
83 ##
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
84 ## @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
85 ## @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
86 ## integral.
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
87 ##
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
88 ## 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
89 ##
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
90 ## @example
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
91 ## @group
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
92 ## @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
93 ## @var{q} = integral3 (@var{f}, 0, 1, 0, 1, 0, 1)
26600
f6730533820e doc: clean up doc example blocks for accuracy and consistent formatting
Mike Miller <mtmiller@octave.org>
parents: 26376
diff changeset
94 ## @result{} @var{q} = 1.00000
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
95 ## @end group
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
96 ## @end example
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
97 ##
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
98 ## For this constant-value integrand, the result is a volume which is just
25579
07c2c42f457e doc: Miscellaneous documentation fixes all over the manual (bug #54288).
Rik <rik@octave.org>
parents: 25054
diff changeset
99 ## @code{@var{Length} * @var{Width} * @var{Height}}.
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
100 ##
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
101 ## 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
102 ##
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
103 ## @example
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
104 ## @group
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
105 ## @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
106 ## @var{ymax} = @@(@var{x}) sqrt (1 - @var{x}.^2);
26600
f6730533820e doc: clean up doc example blocks for accuracy and consistent formatting
Mike Miller <mtmiller@octave.org>
parents: 26376
diff changeset
107 ## @var{zmax} = @@(@var{x},@var{y}) sqrt (1 - @var{x}.^2 - @var{y}.^2);
f6730533820e doc: clean up doc example blocks for accuracy and consistent formatting
Mike Miller <mtmiller@octave.org>
parents: 26376
diff changeset
108 ## @var{q} = integral3 (@var{f}, 0, 1, 0, @var{ymax}, 0, @var{zmax})
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
109 ## @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
110 ## @end group
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
111 ## @end example
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
112 ##
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
113 ## 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
114 ## 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
115 ##
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
116 ## 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
117 ## 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
118 ## boundary.
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
119 ##
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
120 ## 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
121 ## 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
122 ## 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
123 ## 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
124 ## 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
125 ## 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
126 ## integration limits.
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
127 ##
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
128 ## 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
129 ## @cite{@sc{matlab} program for quadrature in 2D}, Applied Mathematics and
27800
5a6a19a4e3da doc: Use Texinfo non-sentence ending periods in citations.
Rik <rik@octave.org>
parents: 26600
diff changeset
130 ## Computation, pp.@: 266--274, Vol 1, 2008.
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
131 ##
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
132 ## @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
133 ## 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
134 ## @end deftypefn
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
135
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
136 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
137
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
138 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
139 print_usage ();
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
140 endif
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
141
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
142 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
143 print_usage ();
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
144 endif
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
145
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
146 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
147 print_usage ();
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
148 endif
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
149
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
150 ## 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
151 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
152 || (! 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
153 || (! 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
154 || (! 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
155 || (! 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
156
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
157 ## 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
158 ## 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
159 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
160 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
161 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
162 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
163
f9549e90d620 integral3.m: Return single type output if an input is of single type (bug #52243).
Rik <rik@octave.org>
parents: 24149
diff changeset
164 ## 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
165 if (issingle)
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
166 abstol = 1e-5;
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
167 reltol = 1e-4;
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
168 else
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
169 abstol = 1e-10;
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
170 reltol = 1e-6;
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
171 endif
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
172
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
173 method = "auto";
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
174 vectorized = true;
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
175 idx = 1;
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
176 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
177 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
178 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
179 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
180 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
181
32002
939e5d952675 Use upper/lower in preference to toupper/tolower to match Matlab.
Rik <rik@octave.org>
parents: 31706
diff changeset
182 switch (lower (prop))
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
183 case "abstol"
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
184 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
185 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
186 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
187 endif
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
188
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
189 case "reltol"
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
190 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
191 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
192 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
193 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
194
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
195 case "method"
32002
939e5d952675 Use upper/lower in preference to toupper/tolower to match Matlab.
Rik <rik@octave.org>
parents: 31706
diff changeset
196 method = lower (varargin{idx++});
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
197 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
198 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
199 endif
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
200
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
201 case "vectorized"
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
202 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
203 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
204 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
205 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
206
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
207 otherwise
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
208 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
209
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
210 endswitch
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
211 endwhile
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
212
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
213 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
214 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
215 || (! 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
216 || (! 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
217 || (! 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
218 || (! 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
219 method = "iterated";
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
220 else
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
221 method = "tiled";
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 endif
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
224
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
225 ## 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
226 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
227 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
228 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
229 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
230 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
231 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
232 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
233 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
234 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
235 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
236 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
237 endif
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
238
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
239 ## 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
240 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
241 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
242 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
243 endif
28912
0de38a6ef693 maint: Use Octave convention of space after function name in scripts dir.
Rik <rik@octave.org>
parents: 28907
diff changeset
244 za = @(x, y) za * ones (size (y));
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
245 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
246 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
247 if (! (isreal (zb) && isscalar (zb)))
28928
ae7ce8358953 maint: Add semicolon to end of all warning() and error() invocations.
Rik <rik@octave.org>
parents: 28912
diff changeset
248 error ("integral3: ZB must be a real scalar or a function");
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
249 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
250 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
251 endif
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
252
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
253 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
254 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
255
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
256 endfunction
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
257
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
258 function q = inner (x, f, ya, yb, za, zb, vectorized, method, abstol, reltol)
30379
363fb10055df maint: Style check m-files ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30330
diff changeset
259
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
260 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
261 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
262 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
263 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
264 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
265 if (! vectorized)
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
266 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
267 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
268 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
269 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
270 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
271 else
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
272 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
273 "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
274 endif
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
275 endfor
30379
363fb10055df maint: Style check m-files ahead of 7.1 release.
Rik <rik@octave.org>
parents: 30330
diff changeset
276
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
277 endfunction
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
278
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
279 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
280 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
281 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
282 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
283 endfor
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
284 endfunction
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
285
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
286
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
287 ## method tests
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
288 %!shared f
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
28907
11f1207111c5 maint: Don't use semicolon at end of single-line BIST tests.
Rik <rik@octave.org>
parents: 27923
diff changeset
291 %!assert (integral3 (f, 0, 1, 0, 1, 0, 1), 0.125, 1e-10)
11f1207111c5 maint: Don't use semicolon at end of single-line BIST tests.
Rik <rik@octave.org>
parents: 27923
diff changeset
292 %!assert (integral3 (f, 0, 1, 0, 1, 0, 1, "method", "tiled"), 0.125, 1e-10)
11f1207111c5 maint: Don't use semicolon at end of single-line BIST tests.
Rik <rik@octave.org>
parents: 27923
diff changeset
293 %!assert (integral3 (f, 0, 1, 0, 1, 0, 1, "method", "iterated"), 0.125, 1e-10)
11f1207111c5 maint: Don't use semicolon at end of single-line BIST tests.
Rik <rik@octave.org>
parents: 27923
diff changeset
294 %!assert (integral3 (f, 0, 1, 0, 1, 0, 1, "method", "auto"), 0.125, 1e-10)
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
295
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
296 ## vectorized = false test
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
297 %!test
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
298 %! 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
299 %! 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
300
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
301 ## tolerance tests
24149
1a3229a2f1ab integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents: 24148
diff changeset
302 %!test
24148
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
303 %! 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
304 %!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
305 %!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
306 %!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
307 %! 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
308
2e64bed0bb3a Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
309 ## 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
310 ## 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
311 %!test
1a3229a2f1ab integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents: 24148
diff changeset
312 %! 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
313 %! ymax = @(x) 1 - x;
1a3229a2f1ab integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents: 24148
diff changeset
314 %! zmax = @(x, y) 1 - x - y;
30330
01de0045b2e3 maint: Shorten some long lines to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 29359
diff changeset
315 %! assert (integral3 (f, 0, 1, 0, ymax, 0, zmax, "method", "tiled"),
01de0045b2e3 maint: Shorten some long lines to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents: 29359
diff changeset
316 %! 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
317
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
318 ## 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
319 %!error integral3
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
320 %!error integral3 (@plus)
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
321 %!error integral3 (@plus, 1)
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
322 %!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
323 %!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
324 %!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
325 %!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
326 %!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
327 %!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
328 %!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
329 %!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
330 %!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
331 %!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
332 %!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
333 %! 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
334 %!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
335 %! 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
336 %!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
337 %! 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
338 %!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
339 %! 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
340 %!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
341 %! 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
342 %!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
343 %! 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
344 %!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
345 %! 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
346 %!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
347 %! 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
348 %!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
349 %! 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
350 %!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
351 %! 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
352 %!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
353 %! 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
354 %!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
355 %!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
356 %!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
357 %!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
358 %!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
359 %!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
360 %!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
361 %!error <ZB must be a real scalar> integral3 (@plus, 1, 2, 3, 4, 5, [6 6])