annotate scripts/general/integral.m @ 31063:451fb63a10a0

update integral to call quadgk for 'ArrayValued' integrations (bug #62468) * integral.m: Modify integrator selection so that calls with ‘ArrayValued’ go to quadgk instead of quadv. Remove error checks for previously incompatible parameter combinations. Update docstring to remove mention of quadv, point 'ArrayValued' reference to quadgk, change returned error parameter description to match current behavior, and remove parameter incompatibility note. Add BIST to verify combined parameter functionality, and change BISTs checking quadv err parameter. * quadgk.m: Correct parameter name in docstring. * NEWS.8.md: Under General Improvements add note about quadgk now accepting 'ArrayValued' parameter and update integral improvement description of optional returned error parameter. Under Matlab Compatibility add note about integral now accepting all parameter combinations.
author Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
date Thu, 02 Jun 2022 19:56:15 -0400
parents 7711b5e38ebc
children b390f662a150
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 ##
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
3 ## Copyright (C) 2017-2022 The Octave Project Developers
27918
b442ec6dda5c use centralized file for copyright info for individual contributors
John W. Eaton <jwe@octave.org>
parents: 26376
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/>.
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
7 ##
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
8 ## This file is part of Octave.
2eae2ad53eb9 Add missing function integral.m (bug #42037).
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: 24159
diff changeset
10 ## Octave is free software: you can redistribute it and/or modify it
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
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: 24159
diff changeset
12 ## the Free Software Foundation, either version 3 of the License, or
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
13 ## (at your option) any later version.
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
14 ##
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
15 ## Octave is distributed in the hope that it will be useful, but
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
18 ## GNU General Public License for more details.
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
19 ##
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
20 ## You should have received a copy of the GNU General Public License
2eae2ad53eb9 Add missing function integral.m (bug #42037).
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: 24159
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 ########################################################################
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
25
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
26 ## -*- texinfo -*-
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
27 ## @deftypefn {} {@var{q} =} integral (@var{f}, @var{a}, @var{b})
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
28 ## @deftypefnx {} {@var{q} =} integral (@var{f}, @var{a}, @var{b}, @var{prop}, @var{val}, @dots{})
30978
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
29 ## @deftypefnx {} {[@var{q}, @var{err}] =} integral (@dots{})
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
30 ##
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
31 ## Numerically evaluate the integral of @var{f} from @var{a} to @var{b} using
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
32 ## adaptive quadrature.
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
33 ##
28731
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
34 ## @code{integral} is a wrapper for @code{quadcc} (general real-valued, scalar
31063
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
35 ## integrands and limits), and @code{quadgk} (integrals with specified
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
36 ## integration paths and array-valued integrands) that is intended to provide
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
37 ## @sc{matlab} compatibility. More control of the numerical integration may be
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
38 ## achievable by calling the various quadrature functions directly.
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
39 ##
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
40 ## @var{f} is a function handle, inline function, or string containing the name
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
41 ## of the function to evaluate. The function @var{f} must be vectorized and
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
42 ## return a vector of output values when given a vector of input values.
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
43 ##
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
44 ## @var{a} and @var{b} are the lower and upper limits of integration. Either
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
45 ## or both limits may be infinite or contain weak end singularities. If either
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
46 ## or both limits are complex, @code{integral} will perform a straight line
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
47 ## path integral. Alternatively, a complex domain path can be specified using
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
48 ## the @qcode{"Waypoints"} option (see below).
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
49 ##
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
50 ## Additional optional parameters can be specified using
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
51 ## @qcode{"@var{property}", @var{value}} pairs. Valid properties are:
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
52 ##
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
53 ## @table @code
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
54 ## @item Waypoints
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
55 ## Specifies points to be used in defining subintervals of the quadrature
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
56 ## algorithm, or if @var{a}, @var{b}, or @var{waypoints} are complex then
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
57 ## the quadrature is calculated as a contour integral along a piecewise
28958
6fd6ad758b10 doc: Use @xref, @pxref rather than "see @code{}" in TexInfo.
Rik <rik@octave.org>
parents: 28912
diff changeset
58 ## continuous path. For more detail, @pxref{XREFquadgk,,@code{quadgk}}.
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
59 ##
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
60 ## @item ArrayValued
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
61 ## @code{integral} expects @var{f} to return a scalar value unless
24059
d8e2fffb371c doc: Fix missing braces in quad documentation (bug #52065).
Rik <rik@octave.org>
parents: 24055
diff changeset
62 ## @var{arrayvalued} is specified as true. This option will cause
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
63 ## @code{integral} to perform the integration over the entire array and return
24155
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
64 ## @var{q} with the same dimensions as returned by @var{f}. For more detail
31063
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
65 ## @pxref{XREFquadgk,,@code{quadgk}}.
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
66 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
67 ## @item AbsTol
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
68 ## 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: 24062
diff changeset
69 ## absolute tolerance 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: 24062
diff changeset
70 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
71 ## @item RelTol
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
72 ## 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: 24062
diff changeset
73 ## relative tolerance is 1e-6 (1e-4 for single).
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
74 ## @end table
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
75 ##
31063
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
76 ## The optional output @var{err} contains the absolute error estimate used by
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
77 ## the called integrator.
30983
7711b5e38ebc integral.m: small coding convention tweaks to cset e8ced722b19e.
Rik <rik@octave.org>
parents: 30978
diff changeset
78 ##
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
79 ## 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: 24062
diff changeset
80 ## following is satisfied:
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
81 ## @tex
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
82 ## $$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: 24062
diff changeset
83 ## @end tex
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
84 ## @ifnottex
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
85 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
86 ## @example
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
87 ## @group
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
88 ## @var{error} <= max (@var{AbsTol}, @var{RelTol}*|@var{q}|).
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
89 ## @end group
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
90 ## @end example
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
91 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
92 ## @end ifnottex
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
93 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
94 ## Known @sc{matlab} incompatibilities:
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
95 ##
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
96 ## @enumerate
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
97 ## @item
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
98 ## If tolerances are left unspecified, and any integration limits or waypoints
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
99 ## are of type @code{single}, then Octave's integral functions automatically
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
100 ## reduce the default absolute and relative error tolerances as specified
24155
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
101 ## above. If tighter tolerances are desired they must be specified.
24102
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
102 ## @sc{matlab} leaves the tighter tolerances appropriate for @code{double}
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
103 ## inputs in place regardless of the class of the integration limits.
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
104 ## @end enumerate
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
105 ##
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
106 ## @seealso{integral2, integral3, quad, quadgk, quadv, quadl, quadcc, trapz,
c723faa56ab4 Add missing functions integral2.m and integral3.m (bug #52074).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24062
diff changeset
107 ## dblquad, triplequad}
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
108 ## @end deftypefn
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
109
30978
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
110 function [q, err] = integral (f, a, b, varargin)
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
111
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
112 if (nargin < 3 || (mod (nargin, 2) == 0))
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
113 print_usage ();
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
114 endif
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
115
30983
7711b5e38ebc integral.m: small coding convention tweaks to cset e8ced722b19e.
Rik <rik@octave.org>
parents: 30978
diff changeset
116 error_flag = (nargout == 2);
30978
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
117
31063
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
118 ## quadcc can't handle complex limits or integrands, but quadgk can.
28731
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
119 ## Check for simple cases of complex limits and integrand.
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
120 f_is_complex = false;
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
121 if (iscomplex (a) || iscomplex (b))
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
122 f_is_complex = true;
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
123 elseif (iscomplex (feval (f, a)) || iscomplex (feval (f, b)))
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
124 f_is_complex = true;
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
125 endif
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
126
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
127 if (nargin == 3)
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
128 ## Pass the simplest case directly to general integrator.
24155
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
129 ## Let quadcc function handle input checks on function and limits.
28731
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
130 if (! f_is_complex)
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
131 try
30978
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
132 if (error_flag)
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
133 [q, err] = quadcc (f, a, b);
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
134 else
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
135 q = quadcc (f, a, b);
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
136 endif
28731
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
137 catch quaderror
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
138 if (strcmp (quaderror.message,
31063
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
139 "quadcc: integrand F must return a single, real-valued vector"))
30978
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
140 if (error_flag)
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
141 [q, err] = quadgk (f, a, b);
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
142 else
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
143 q = quadgk (f, a, b);
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
144 endif
28731
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
145 else
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
146 error (quaderror.message);
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
147 endif
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
148 end_try_catch
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
149
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
150 else
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
151 ## Complex-valued integral
30978
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
152 if (error_flag)
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
153 [q, err] = quadgk (f, a, b);
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
154 else
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
155 q = quadgk (f, a, b);
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
156 endif
28731
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
157 endif
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
158
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
159 else
24062
6570fdb7d3a0 integral.m: Pass tolerances to underlying integrators, correct precision in BIST tests (bug #42037).
Rik <rik@octave.org>
parents: 24059
diff changeset
160 ## Parse options to determine how to call integrator.
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
161 abstol = [];
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
162 reltol = [];
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
163 waypoints = [];
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
164 arrayvalued = false;
31063
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
165 use_quadgk = false;
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
166
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
167 idx = 1;
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
168 while (idx < nargin - 3)
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
169 prop = varargin{idx++};
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
170 if (! ischar (prop))
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
171 error ("integral: property PROP must be a string");
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
172 endif
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
173
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
174 switch (tolower (prop))
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
175 case "reltol"
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
176 reltol = varargin{idx++};
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
177 case "abstol"
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
178 abstol = varargin{idx++};
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
179 case "waypoints"
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
180 waypoints = varargin{idx++}(:);
31063
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
181 use_quadgk = true;
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
182 case "arrayvalued"
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
183 arrayvalued = varargin{idx++};
31063
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
184 use_quadgk = true;
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
185 otherwise
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
186 error ("integral: unknown property '%s'", prop);
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
187 endswitch
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
188 endwhile
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
189
24155
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
190 issingle = (isa (a, "single") || isa (b, "single")
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
191 || isa (waypoints, "single"));
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
192
31063
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
193 if (isempty (abstol))
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
194 abstol = ifelse (issingle, 1e-5, 1e-10);
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
195 endif
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
196 if (isempty (reltol))
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
197 reltol = ifelse (issingle, 1e-4, 1e-6);
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
198 endif
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
199
31063
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
200 if (use_quadgk)
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
201 ## Array valued functions or waypoint definitions require quadgk
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
202 ## no need to test for complex components
30978
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
203 if (error_flag)
31063
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
204 [q, err] = quadgk (f, a, b, "AbsTol", abstol, "RelTol", reltol,
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
205 "WayPoints", waypoints, "ArrayValued", arrayvalued);
30978
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
206 else
31063
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
207 q = quadgk (f, a, b, "AbsTol", abstol, "RelTol", reltol,
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
208 "WayPoints", waypoints, "ArrayValued", arrayvalued);
30978
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
209 endif
24155
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
210
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
211 else
31063
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
212 ## otherwise try quadcc first, switch to quadgk if complex test fails
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
213 if (! f_is_complex)
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
214 try
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
215 if (error_flag)
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
216 [q, err] = quadcc (f, a, b, [abstol, reltol]);
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
217 else
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
218 q = quadcc (f, a, b, [abstol, reltol]);
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
219 endif
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
220 catch quaderror
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
221 if (strcmp (quaderror.message,
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
222 "quadcc: integrand F must return a single, real-valued vector"))
30978
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
223 if (error_flag)
31063
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
224 [q, err] = quadgk (f, a, b, "AbsTol", abstol, "RelTol", reltol);
30978
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
225 else
31063
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
226 q = quadgk (f, a, b, "AbsTol", abstol, "RelTol", reltol);
30978
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
227 endif
31063
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
228 else
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
229 error (quaderror.message);
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
230 endif
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
231 end_try_catch
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
232 else
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
233 ## Complex-valued integral
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
234 if (error_flag)
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
235 [q, err] = quadgk (f, a, b, "AbsTol", abstol, "RelTol", reltol);
28731
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
236 else
31063
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
237 q = quadgk (f, a, b, "AbsTol", abstol, "RelTol", reltol);
28731
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
238 endif
24155
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
239 endif
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
240 endif
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
241 endif
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
242
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
243 endfunction
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
244
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
245
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
246 ## Matlab compatibility tests
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
247 %!test
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
248 %! f = @(x) exp (-x.^2) .* log (x).^2;
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
249 %! emgamma = 0.57721566490153286;
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
250 %! exact = (sqrt (pi)*(8*log (2)^2+8*emgamma*log (2)+pi^2+2*emgamma^2))/16;
24062
6570fdb7d3a0 integral.m: Pass tolerances to underlying integrators, correct precision in BIST tests (bug #42037).
Rik <rik@octave.org>
parents: 24059
diff changeset
251 %! assert (integral (f, 0, Inf), exact, -1e-6);
6570fdb7d3a0 integral.m: Pass tolerances to underlying integrators, correct precision in BIST tests (bug #42037).
Rik <rik@octave.org>
parents: 24059
diff changeset
252 %! assert (integral (f, 0, Inf, "RelTol", 1e-12), exact, -1e-12);
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
253
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
254 %!test # with parameter
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
255 %! f = @(x, c) 1 ./ (x.^3 - 2*x - c);
24062
6570fdb7d3a0 integral.m: Pass tolerances to underlying integrators, correct precision in BIST tests (bug #42037).
Rik <rik@octave.org>
parents: 24059
diff changeset
256 %! assert (integral (@(x) f(x,5), 0, 2), -0.4605015338467329, 1e-10);
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
257
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
258 %!test # with tolerances
28912
0de38a6ef693 maint: Use Octave convention of space after function name in scripts dir.
Rik <rik@octave.org>
parents: 28753
diff changeset
259 %! f = @(x) log (x);
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
260 %! assert (integral (@(x) f(x), 0, 1, "AbsTol", 1e-6), -1, 1e-6);
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
261
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
262 %!test # waypoints
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
263 %! f = @(x) 1./(2.*x-1);
24062
6570fdb7d3a0 integral.m: Pass tolerances to underlying integrators, correct precision in BIST tests (bug #42037).
Rik <rik@octave.org>
parents: 24059
diff changeset
264 %! assert (integral (f, 0, 0, "Waypoints", [1+1i, 1-1i]), -pi*1i, 1e-10);
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
265
24155
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
266 %!test # an array-valued function
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
267 %! f = @(x) sin ((1:5)*x);
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
268 %! assert (integral (f, 0, 1, "ArrayValued", true), 1./[1:5]-cos(1:5)./[1:5],
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
269 %! 1e-10);
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
270
24155
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
271 %!test # test single input/output
28912
0de38a6ef693 maint: Use Octave convention of space after function name in scripts dir.
Rik <rik@octave.org>
parents: 28753
diff changeset
272 %! assert (integral (@sin, 0, 1), cos (0)-cos (1), 1e-10);
24155
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
273 %! assert (class (integral (@sin, single (0), 1)), "single");
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
274 %! assert (class (integral (@sin, 0, single (1))), "single");
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
275 %! assert (class (integral (@sin, single (0), single (1))), "single");
28912
0de38a6ef693 maint: Use Octave convention of space after function name in scripts dir.
Rik <rik@octave.org>
parents: 28753
diff changeset
276 %! assert (integral (@sin, 0, 1, "Waypoints", 0.5), cos (0)-cos (1), 1e-10);
24155
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
277 %! assert (class (integral (@sin, 0, 1, "Waypoints", single (0.5))), "single");
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
278 %! assert (class (integral (@sin, single (0), 1, "Waypoints", 0.5)), "single");
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
279 %! assert (class (integral (@sin, 0, single (1), "Waypoints", 0.5)), "single");
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
280
28731
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
281 %!test # test complex argument handling
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
282 %! f = @(x) round (exp (i*x));
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
283 %! assert (integral (f, 0, pi), quadgk (f, 0, pi), eps);
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
284 %! assert (integral (f, -1, 1), 2, 5*eps);
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
285 %! assert (integral (@sin, -i, i), 0, eps);
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
286 %! assert (1.5 * integral (@sqrt, -1, 0), i, eps);
4f1e8a79bd44 integral.m: Fix input validation to handle complex integrands (bug #58636).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 27961
diff changeset
287
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
288 %!test
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
289 %! f = @(x) x.^5 .* exp (-x) .* sin (x);
24062
6570fdb7d3a0 integral.m: Pass tolerances to underlying integrators, correct precision in BIST tests (bug #42037).
Rik <rik@octave.org>
parents: 24059
diff changeset
290 %! assert (integral (f, 0, inf, "RelTol", 1e-8, "AbsTol", 1e-12), -15, -1e-8);
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
291
24155
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
292 ## tests from quadcc
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
293 %!assert (integral (@sin, -pi, pi), 0, 1e-10)
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
294 %!assert (integral (inline ("sin"), -pi, pi), 0, 1e-10)
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
295 %!assert (integral ("sin", -pi, pi), 0, 1e-10)
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
296 %!assert (integral (@sin, -pi, 0), -2, 1e-10)
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
297 %!assert (integral (@sin, 0, pi), 2, 1e-10)
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
298 %!assert (integral (@(x) 1./(sqrt (x).*(x+1)), 0, Inf), pi, -1e-6)
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
299 %!assert (integral (@(x) 1./(sqrt (x).*(x+1)), 0, Inf,
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
300 %! "AbsTol", 0, "RelTol", 1e-8),
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
301 %! pi, -1e-8)
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
302 %!assert (integral (@(x) exp (-x .^ 2), -Inf, Inf), sqrt (pi), 1e-10)
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
303 %!assert (integral (@(x) exp (-x .^ 2), -Inf, 0), sqrt (pi)/2, 1e-10)
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
304
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
305 ## tests from quadgk
24155
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
306 %!assert (integral (@sin,-pi,pi, "WayPoints",0, "AbsTol",1e-6, "RelTol",1e-3),
47dd094a6239 integral.m: Update to use recently changed quadcc and preserve type single (bug #42073).
Nicholas R. Jankowski <jankowskin@asme.org>
parents: 24102
diff changeset
307 %! 0, 1e-6)
27961
27a5cc0614f1 integral.m: Fix failing BIST test after changes to quadgk.
Rik <rik@octave.org>
parents: 27923
diff changeset
308 %!assert (integral (@(x) abs (1 - x.^2), 0, 2, "Waypoints", 1), 2, 1e-10)
27a5cc0614f1 integral.m: Fix failing BIST test after changes to quadgk.
Rik <rik@octave.org>
parents: 27923
diff changeset
309 %!assert (integral (@(z) log (z),1+1i,1+1i, "WayPoints", [1-1i, -1,-1i, -1+1i]),
27a5cc0614f1 integral.m: Fix failing BIST test after changes to quadgk.
Rik <rik@octave.org>
parents: 27923
diff changeset
310 %! complex (0, pi), 1e-10)
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
311
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
312 ## Test vector-valued functions
24062
6570fdb7d3a0 integral.m: Pass tolerances to underlying integrators, correct precision in BIST tests (bug #42037).
Rik <rik@octave.org>
parents: 24059
diff changeset
313 %!assert (integral (@(x) [(sin (x)), (sin (2*x))], 0, pi, "ArrayValued", 1),
27961
27a5cc0614f1 integral.m: Fix failing BIST test after changes to quadgk.
Rik <rik@octave.org>
parents: 27923
diff changeset
314 %! [2, 0], 1e-10)
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
315
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
316 ## Test matrix-valued functions
31063
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
317 %!assert (integral (@(x) [x,x,x; x,exp(x),x; x,x,x], 0, 1, "ArrayValued", 1),
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
318 %! [0.5,0.5,0.5; 0.5,(exp (1) - 1),0.5; 0.5,0.5,0.5], 1e-10);
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
319
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
320 ## Test combined parameters
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
321 %!assert (integral (@(x) [sin(x), cos(x)], 0, pi, "ArrayValued", 1,
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
322 %! "Waypoints", [0.5]), [2, 0], eps);
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
323
30978
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
324 ##test 2nd output
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
325 %!test <*62412>
30983
7711b5e38ebc integral.m: small coding convention tweaks to cset e8ced722b19e.
Rik <rik@octave.org>
parents: 30978
diff changeset
326 %! [~, err] = integral (@(x) ones (size (x)), 0, 1); # quadcc
7711b5e38ebc integral.m: small coding convention tweaks to cset e8ced722b19e.
Rik <rik@octave.org>
parents: 30978
diff changeset
327 %! assert (err, 0, 5*eps); # err ~3e-16
7711b5e38ebc integral.m: small coding convention tweaks to cset e8ced722b19e.
Rik <rik@octave.org>
parents: 30978
diff changeset
328 %! [~, err] = integral (@(x) ones (size (x)), 0, 1, "waypoints", 1); # quadgk
7711b5e38ebc integral.m: small coding convention tweaks to cset e8ced722b19e.
Rik <rik@octave.org>
parents: 30978
diff changeset
329 %! assert (err, 0, 1000*eps); # err ~7e-14
31063
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
330 %! [~, err] = integral (@(x) ones (size (x)), 0, 1, "arrayvalued", true); # quadgk
451fb63a10a0 update integral to call quadgk for 'ArrayValued' integrations (bug #62468)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30983
diff changeset
331 %! assert (err, 0, 1000*eps); # err ~7e-14
30978
e8ced722b19e integral: Add optional output error argument (bug #62412)
Nicholas R. Jankowski <jankowski.nicholas@gmail.com>
parents: 30564
diff changeset
332
24055
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
333 ## Test input validation
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
334 %!error integral (@sin)
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
335 %!error integral (@sin, 0)
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
336 %!error integral (@sin, 0, 1, 1e-6, true, 4)
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
337 %!error integral (@sin, 0, 1, "DummyArg")
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
338 %!error <property PROP must be a string> integral (@sin, 0, 1, 2, 3)
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
339 %!error <unknown property 'foo'> integral (@sin, 0, 1, "foo", 3)
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
340 %!error integral (@sin, 0, 1, "AbsTol", ones (2,2))
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
341 %!error integral (@sin, 0, 1, "AbsTol", -1)
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
342 %!error integral (@sin, 0, 1, "RelTol", ones (2,2))
2eae2ad53eb9 Add missing function integral.m (bug #42037).
Nicholas R. Jankowski <jankowskin@asme.org>
parents:
diff changeset
343 %!error integral (@sin, 0, 1, "RelTol", -1)