Mercurial > octave
annotate scripts/general/integral2.m @ 31706:597f3ee61a48 stable
update Octave Project Developers copyright for the new year
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Fri, 06 Jan 2023 13:11:27 -0500 |
parents | 796f54d4ddbf |
children | 939e5d952675 |
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:
24208
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:
24208
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:
24208
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} =} integral2 (@var{f}, @var{xa}, @var{xb}, @var{ya}, @var{yb}) |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
28 ## @deftypefnx {} {@var{q} =} integral2 (@var{f}, @var{xa}, @var{xb}, @var{ya}, @var{yb}, @var{prop}, @var{val}, @dots{}) |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
29 ## @deftypefnx {} {[@var{q}, @var{err}] =} integral2 (@dots{}) |
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 ## Numerically evaluate the two-dimensional integral of @var{f} using adaptive |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
32 ## quadrature over the two-dimensional domain defined by @var{xa}, @var{xb}, |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
33 ## @var{ya}, @var{yb} (scalars may be finite or infinite). Additionally, |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
34 ## @var{ya} and @var{yb} may be scalar functions of @var{x}, allowing for |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
35 ## integration over non-rectangular domains. |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
36 ## |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
37 ## @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
|
38 ## of the function to evaluate. The function @var{f} must be of the form |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
39 ## @math{z = f(x,y)} where @var{x} is a vector and @var{y} is a scalar. It |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
40 ## should return a vector of the same length and orientation as @var{x}. |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
41 ## |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
42 ## 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
|
43 ## @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
|
44 ## |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
45 ## @table @code |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
46 ## @item AbsTol |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
47 ## 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
|
48 ## 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
|
49 ## |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
50 ## @item RelTol |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
51 ## 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
|
52 ## 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
|
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 Method |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
55 ## 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
|
56 ## 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
|
57 ## @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
|
58 ## @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
|
59 ## |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
60 ## @item Vectorized |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
61 ## 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
|
62 ## 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
|
63 ## 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
|
64 ## @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
|
65 ## @code{true}. |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
66 ## @end table |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
67 ## |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
68 ## 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
|
69 ## following is satisfied: |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
70 ## @tex |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
71 ## $$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
|
72 ## @end tex |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
73 ## @ifnottex |
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 ## @example |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
76 ## @group |
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{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
|
78 ## @end group |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
79 ## @end example |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
80 ## |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
81 ## @end ifnottex |
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 ## @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
|
84 ## @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
|
85 ## integral. |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
86 ## |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
87 ## Example 1 : integrate a rectangular region in x-y plane |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
88 ## |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
89 ## @example |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
90 ## @group |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
91 ## @var{f} = @@(@var{x},@var{y}) 2*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
|
92 ## @var{q} = integral2 (@var{f}, 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
|
93 ## @result{} @var{q} = 2 |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
94 ## @end group |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
95 ## @end example |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
96 ## |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
97 ## The result is a volume, which for this constant-value integrand, is just |
25579
07c2c42f457e
doc: Miscellaneous documentation fixes all over the manual (bug #54288).
Rik <rik@octave.org>
parents:
25054
diff
changeset
|
98 ## @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
|
99 ## |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
100 ## Example 2 : integrate a triangular region in x-y plane |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
101 ## |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
102 ## @example |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
103 ## @group |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
104 ## @var{f} = @@(@var{x},@var{y}) 2*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
|
105 ## @var{ymax} = @@(@var{x}) 1 - @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{q} = integral2 (@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
|
107 ## @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
|
108 ## @end group |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
109 ## @end example |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
110 ## |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
111 ## The result is a volume, which for this constant-value integrand, is the |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
112 ## Triangle Area x Height or |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
113 ## @code{1/2 * @var{Base} * @var{Width} * @var{Height}}. |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
114 ## |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
115 ## 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
|
116 ## 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
|
117 ## boundary. |
24208
eec262017c6a
maint: Strip trailing whitespace from source files.
John W. Eaton <jwe@octave.org>
parents:
24149
diff
changeset
|
118 ## |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
119 ## 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
|
120 ## 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
|
121 ## 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
|
122 ## 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
|
123 ## 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
|
124 ## 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
|
125 ## integration limits. |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
126 ## |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
127 ## 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
|
128 ## @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:
26376
diff
changeset
|
129 ## 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
|
130 ## |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
131 ## @seealso{quad2d, dblquad, integral, quad, quadgk, quadv, quadl, quadcc, |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
132 ## trapz, integral3, triplequad} |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
133 ## @end deftypefn |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
134 |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
135 function [q, err] = integral2 (f, xa, xb, ya, yb, varargin) |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
136 |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
137 if (nargin < 5 || 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
|
138 print_usage (); |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
139 endif |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
140 |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
141 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
|
142 print_usage (); |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
143 endif |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
144 |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
145 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
|
146 print_usage (); |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
147 endif |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
148 |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
149 ## 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
|
150 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
|
151 || (! 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
|
152 || (! is_function_handle (yb) && isa (yb, "single"))); |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
153 |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
154 ## Set defaults, update with any specified parameters. |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
155 if (issingle) |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
156 abstol = 1e-5; |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
157 reltol = 1e-4; |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
158 else |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
159 abstol = 1e-10; |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
160 reltol = 1e-6; |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
161 endif |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
162 |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
163 method = "auto"; |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
164 idx = 1; |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
165 while (idx < nargin - 5) |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
166 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
|
167 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
|
168 error ("integral2: 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
|
169 endif |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
170 |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
171 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
|
172 case "abstol" |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
173 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
|
174 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
|
175 error ("integral2: 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
|
176 endif |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
177 |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
178 case "reltol" |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
179 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
|
180 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
|
181 error ("integral2: 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
|
182 endif |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
183 |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
184 case "method" |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
185 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
|
186 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
|
187 error ("integral2 : 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
|
188 endif |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
189 |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
190 case "vectorized" |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
191 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
|
192 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
|
193 error ('integral2: 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
|
194 endif |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
195 if (! vectorized) |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
196 f = @(x, y) arrayfun (f, x, y); |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
197 endif |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
198 |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
199 otherwise |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
200 error ("integral2: 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
|
201 |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
202 endswitch |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
203 endwhile |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
204 |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
205 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
|
206 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
|
207 || (! 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
|
208 || (! 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
|
209 method = "iterated"; |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
210 else |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
211 method = "tiled"; |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
212 endif |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
213 endif |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
214 |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
215 ## 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
|
216 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
|
217 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
|
218 error ("integral2: 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
|
219 endif |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
220 ya = @(x) ya * ones (rows (x), columns (x)); |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
221 endif |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
222 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
|
223 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
|
224 error ("integral2: 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
|
225 endif |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
226 yb = @(x) yb * ones (rows (x), columns (x)); |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
227 endif |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
228 |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
229 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
|
230 q = outer_iterated (f, xa, xb, ya, yb, abstol, reltol); |
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 if (nargout == 2) |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
233 warning ('integral2: "iterated" method can not return estimated error'); |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
234 err = 0; |
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 else |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
237 [q, err] = quad2d (f, xa, xb, ya, yb, "AbsTol", abstol, "RelTol", reltol); |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
238 endif |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
239 |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
240 endfunction |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
241 |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
242 function q = outer_iterated (f, xa, xb, ya, yb, abstol, reltol) |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
243 finner_iter = @(x) inner_iterated (x, f, ya, yb, abstol, reltol); |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
244 q = quadcc (finner_iter, xa, xb, [abstol, reltol]); |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
245 endfunction |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
246 |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
247 function q = inner_iterated (x, f, ya, yb, abstol, reltol) |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
248 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
|
249 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
|
250 q(i) = quadcc (@(y) f(x(i), y), 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
|
251 endfor |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
252 endfunction |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
253 |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
254 |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
255 ## method tests |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
256 %!shared f |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
257 %! f = @(x, y) x .* y; |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
258 |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
259 %!assert (integral2 (f, 0, 1, 0, 1), 0.25, 1e-10) |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
260 %!assert (integral2 (f, 0, 1, 0, 1, "method", "tiled"), 0.25, 1e-10) |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
261 %!assert (integral2 (f, 0, 1, 0, 1, "method", "iterated"), 0.25, 1e-10) |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
262 %!assert (integral2 (f, 0, 1, 0, 1, "method", "auto"), 0.25, 1e-10) |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
263 |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
264 ## vectorized = false test |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
265 %!test |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
266 %! f = @(x, y) x * y; |
24149
1a3229a2f1ab
integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents:
24148
diff
changeset
|
267 %!assert (integral2 (f, 0, 1, 0, 1, "vectorized", false), 0.25, 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
|
268 |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
269 ## tolerance tests |
24149
1a3229a2f1ab
integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents:
24148
diff
changeset
|
270 %!test |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
271 %! f = @(x, y) 9 * x.^2 + 15 * y.^2; |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
272 %!assert (integral2 (f, 0, 5, -5, 0, "AbsTol", 1e-9), 5000, 1e-9) |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
273 %!assert (integral2 (f, 0, 5, -5, 0, "RelTol", 1e-5), 5000, -1e-5) |
30330
01de0045b2e3
maint: Shorten some long lines to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
274 %!assert (integral2 (f, 0, 5, -5, 0, "RelTol", 1e-6, "AbsTol", 1e-9), |
01de0045b2e3
maint: Shorten some long lines to <= 80 characters (bug #57599)
Rik <rik@octave.org>
parents:
29359
diff
changeset
|
275 %! 5000, 1e-9) |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
276 |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
277 ## tests from dblquad |
24149
1a3229a2f1ab
integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents:
24148
diff
changeset
|
278 %!test |
1a3229a2f1ab
integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents:
24148
diff
changeset
|
279 %! f = @(x, y) 1 ./ (x+y); |
1a3229a2f1ab
integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents:
24148
diff
changeset
|
280 %!assert (integral2 (f, 0, 1, 0, 1, "AbsTol", 1e-7), 2*log (2), 1e-7) |
1a3229a2f1ab
integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents:
24148
diff
changeset
|
281 %!assert (integral2 (f, 0, 1, 0, 1, "RelTol", 1e-5), 2*log (2), -1e-5) |
1a3229a2f1ab
integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents:
24148
diff
changeset
|
282 %!assert (integral2 (f, 0, 1, 0, 1, "AbsTol", 1e-8, "RelTol", 1e-6), |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
283 %! 2*log (2), -1e-6) |
24149
1a3229a2f1ab
integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents:
24148
diff
changeset
|
284 %!assert (integral2 (f, 0, 1, 0, @(x) 1 - x), 1, -1e-6) |
1a3229a2f1ab
integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents:
24148
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 %!assert (integral2 (@(x, y) exp (-x.^2 - y.^2) , -1, 1, -1, 1), |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
287 %! pi * erf (1).^2, 1e-10) |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
288 |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
289 %!assert (integral2 (@plus, 1, 2, 3, 4), 5, 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
|
290 |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
291 ## tests from dblquad w/method specified |
24149
1a3229a2f1ab
integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents:
24148
diff
changeset
|
292 %!assert (integral2 (f, 0, 1, 0, 1, "AbsTol", 1e-7, "method", "iterated"), |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
293 %! 2*log (2), 1e-7) |
24149
1a3229a2f1ab
integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents:
24148
diff
changeset
|
294 %!assert (integral2 (f, 0, 1, 0, 1, "RelTol", 1e-5, "method", "iterated"), |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
295 %! 2*log (2), -1e-5) |
24149
1a3229a2f1ab
integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents:
24148
diff
changeset
|
296 %!assert (integral2 (f, 0, 1, 0, 1, "AbsTol", 1e-8, "RelTol", 1e-6, |
1a3229a2f1ab
integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents:
24148
diff
changeset
|
297 %! "Method", "iterated"), |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
298 %! 2*log (2), -1e-6) |
24149
1a3229a2f1ab
integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents:
24148
diff
changeset
|
299 %!assert (integral2 (f, 0, 1, 0, @(x) 1 - x, "Method", "iterated"), 1, -1e-6) |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
300 %!assert (integral2 (@(x, y) exp (-x.^2 - y.^2) , -1, 1, -1, 1, |
24149
1a3229a2f1ab
integral2.m, integral3.m: Clean up BIST tests.
Rik <rik@octave.org>
parents:
24148
diff
changeset
|
301 %! "Method", "iterated"), |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
302 %! pi * erf (1).^2, 1e-10) |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
303 |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
304 %!assert (integral2 (@plus, 1, 2, 3, 4, "method", "iterated"), 5, 1e-10) |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
305 |
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
306 ## Test input validation |
28896
90fea9cc9caa
test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
307 %!error <Invalid call> integral2 () |
90fea9cc9caa
test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
308 %!error <Invalid call> integral2 (@plus) |
90fea9cc9caa
test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
309 %!error <Invalid call> integral2 (@plus, 1) |
90fea9cc9caa
test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
310 %!error <Invalid call> integral2 (@plus, 1, 2) |
90fea9cc9caa
test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
311 %!error <Invalid call> integral2 (@plus, 1, 2, 3) |
90fea9cc9caa
test: Add expected error message <Invalid call> to BIST tests for nargin.
Rik <rik@octave.org>
parents:
27923
diff
changeset
|
312 %!error <Invalid call> integral2 (@plus, 1, 2, 3, 4, "foo") |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
313 %!error integral2 (0, 1, 2, 3, 4) # f must be function handle |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
314 %!error integral2 (@plus, 1i, 2, 3, 4) # real limits |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
315 %!error integral2 (@plus, 1, 2i, 3, 4) # real limits |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
316 %!error integral2 (@plus, [1 1], 2, 3, 4) # scalar limits |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
317 %!error integral2 (@plus, 1, [2 2], 3, 4) # scalar limits |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
318 %!error <property PROP must be a string> integral2 (@plus,1,2,3,4,99, "bar") |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
319 %!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
|
320 %! integral2 (@plus,1,2,3,4, "AbsTol", "foo"); |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
321 %!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
|
322 %! integral2 (@plus, 1, 2, 3, 4, "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
|
323 %!error <AbsTol value must be.* .= 0> integral2 (@plus,1,2,3,4, "AbsTol", -1) |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
324 %!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
|
325 %! integral2 (@plus, 1, 2, 3, 4, "RelTol", "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 <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
|
327 %! integral2 (@plus, 1, 2, 3, 4, "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
|
328 %!error <RelTol value must be.* .= 0> integral2 (@plus,1,2,3,4, "RelTol", -1) |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
329 %!error <unrecognized method 'foo'> integral2 (@plus,1,2,3,4, "method", "foo") |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
330 %!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
|
331 %! integral2 (@plus,1,2,3,4, "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
|
332 %!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
|
333 %! integral2 (@plus,1,2,3,4, "Vectorized", {true}); |
24102
c723faa56ab4
Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff
changeset
|
334 %!error <unknown property 'foo'> integral2 (@plus, 1, 2, 3, 4, "foo", "bar") |
24148
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
335 %!error <YA must be a real scalar> integral2 (@plus, 1, 2, 3i, 4) |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
336 %!error <YA must be a real scalar> integral2 (@plus, 1, 2, [3 3], 4) |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
337 %!error <YB must be a real scalar> integral2 (@plus, 1, 2, 3, 4i) |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
338 %!error <YB must be a real scalar> integral2 (@plus, 1, 2, 3, [4 4]) |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
339 %!warning <"iterated" method can not return estimated error> |
2e64bed0bb3a
Updated integral2.m and integral3.m and added quad2d (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
24102
diff
changeset
|
340 %! [q, err] = integral2 (@plus, 0, 0, 0, 0, "method", "iterated"); |