Definite and indefinite integrals
collapse all in page
Syntax
F = int(expr)
F = int(expr,var)
F = int(expr,a,b)
F = int(expr,var,a,b)
F = int(___,Name,Value)
Description
example
computes the indefinite integral of F
= int(expr)expr
. int
uses the default integration variable determined by symvar(expr,1
). If expr
is a constant, then the default integration variable is x
.
example
computes the indefinite integral of F
= int(expr,var)expr
with respect to the symbolic scalar variable var
.
example
computes the definite integral of F
= int(expr,a,b)expr
from a
to b
. int
uses the default integration variable determined by symvar(expr,1
). If expr
is a constant, then the default integration variable is x
.
int(expr,[a b])
is equivalent to int(expr,a,b)
.
example
computes the definite integral of F
= int(expr,var,a,b)expr
with respect to the symbolic scalar variable var
from a
to b
.
int(expr,var,[a b])
is equivalent to int(expr,var,a,b)
.
example
specifies additional options using one or more F
= int(___,Name,Value)Name,Value
pair arguments. For example, 'IgnoreAnalyticConstraints',true
specifies that int
applies additional simplifications to the integrand.
Note
The int
function computes integral symbolically, and it is not related to integer data types in MATLAB®. For more information about integers, see Integers.
Examples
collapse all
Indefinite Integral of Univariate Expression
Open Live Script
Define a univariate expression.
syms xexpr = -2*x/(1+x^2)^2;
Find the indefinite integral of the univariate expression.
F = int(expr)
F =
Indefinite Integrals of Multivariate Function
Open Live Script
Define a multivariate function with variables x
and z
.
syms x zf(x,z) = x/(1+z^2);
Find the indefinite integrals of the multivariate expression with respect to the variables x
and z
.
Fx = int(f,x)
Fx(x, z) =
Fz = int(f,z)
Fz(x, z) =
If you do not specify the integration variable, then int
uses the first variable returned by symvar
as the integration variable.
var = symvar(f,1)
var =
F = int(f)
F(x, z) =
Definite Integrals of Symbolic Expressions
Open Live Script
Integrate a symbolic expression from 0
to 1
.
syms xexpr = x*log(1+x);F = int(expr,[0 1])
F =
Integrate another expression from sin(t)
to 1
.
syms tF = int(2*x,[sin(t) 1])
F =
When int
cannot compute the value of a definite integral, numerically approximate the integral by using vpa.
syms xf = cos(x)/sqrt(1 + x^2);Fint = int(f,x,[0 10])
Fint =
Fvpa = vpa(Fint)
Fvpa =
To approximate integrals directly, use vpaintegral instead of vpa
. The vpaintegral
function is faster and provides control over integration tolerances.
Fvpaint = vpaintegral(f,x,[0 10])
Fvpaint =
Integrals of Matrix Elements
Open Live Script
Define a symbolic matrix containing four expressions as its elements.
syms a x t zM = [exp(t) exp(a*t); sin(t) cos(t)]
M =
Find indefinite integrals of the matrix element-wise.
F = int(M,t)
F =
Apply IgnoreAnalyticConstraints
Open Live Script
Define a symbolic function and compute its indefinite integral.
syms f(x)f(x) = acos(cos(x));F = int(f,x)
F(x) =
By default, int
uses strict mathematical rules. These rules do not let int
rewrite acos(cos(x))
as x
.
If you want a simple practical solution, set 'IgnoreAnalyticConstraints'
to true
.
F = int(f,x,'IgnoreAnalyticConstraints',true)
F(x) =
Ignore Special Cases
Open Live Script
Define a symbolic expression and compute its indefinite integral with respect to the variable .
syms x tF = int(x^t,x)
F =
By default, int
returns the general results for all values of the other symbolic parameter t
. In this example, int
returns two integral results for the case and .
To ignore special cases of parameter values, set 'IgnoreSpecialCases'
to true
. With this option, int
ignores the special case and returns the solution for .
F = int(x^t,x,'IgnoreSpecialCases',true)
Find Cauchy Principal Value
Open Live Script
Define a symbolic function that has a pole at .
syms xf(x) = 1/(x-1)
f(x) =
Compute the definite integral of this function from to . Since the integration interval includes the pole, the result is not defined.
F = int(f,[0 2])
F =
However, the Cauchy principal value of the integral exists. To compute the Cauchy principal value of the integral, set 'PrincipalValue'
to true
.
F = int(f,[0 2],'PrincipalValue',true)
F =
Unevaluated Integral and Integration by Parts
Open Live Script
Find the integral of .
Define the integral without evaluating it by setting the 'Hold'
option to true
.
syms x g(y)F = int(x*exp(x),'Hold',true)
F =
You can apply integration by parts to F
by using the integrateByParts
function. Use exp(x)
as the differential to be integrated.
G = integrateByParts(F,exp(x))
G =
To evaluate the integral in G
, use the release
function to ignore the 'Hold'
option.
Gcalc = release(G)
Gcalc =
Compare the result to the integration result returned by int
without setting the 'Hold'
option.
Fcalc = int(x*exp(x))
Fcalc =
Approximate Indefinite Integrals
Open Live Script
If int
cannot compute a closed form of an integral, then it returns an unresolved integral.
syms f(x)f(x) = sin(sinh(x));F = int(f,x)
F(x) =
You can approximate the integrand function as polynomials by using the Taylor expansion. Apply taylor to expand the integrand function as polynomials around . Compute the integral of the approximated polynomials.
fTaylor = taylor(f,x,'ExpansionPoint',0,'Order',10)
fTaylor(x) =
Fapprox = int(fTaylor,x)
Fapprox(x) =
Input Arguments
collapse all
expr
— Integrand
symbolic expression | symbolic function | symbolic vector | symbolic matrix | symbolic number
Integrand, specified as a symbolic expression, function, vector, matrix, or number.
var
— Integration variable
symbolic variable
Integration variable, specified as a symbolic variable. If you do not specify this variable, int
uses the default variable determined by symvar(expr,1)
. If expr is a constant, then the default variable is x
.
a
— Lower bound
number | symbolic number | symbolic variable | symbolic expression | symbolic function
Lower bound, specified as a number, symbolic number, variable, expression, or function (including expressions and functions with infinities).
b
— Upper bound
number | symbolic number | symbolic variable | symbolic expression | symbolic function
Upper bound, specified as a number, symbolic number, variable, expression, or function (including expressions and functions with infinities).
Name-Value Arguments
Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN
, where Name
is the argument name and Value
is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.
Before R2021a, use commas to separate each name and value, and enclose Name
in quotes.
Example: 'IgnoreAnalyticConstraints',true
specifies that int
applies purely algebraic simplifications to the integrand.
IgnoreAnalyticConstraints
— Indicator for applying purely algebraic simplifications to integrand
false
(default) | true
Indicator for applying purely algebraic simplifications to the integrand, specified as true
or false
. If the value is true
, apply purely algebraic simplifications to the integrand. This option can provide simpler results for expressions, for which the direct use of the integrator returns complicated results. In some cases, it also enables int
to compute integrals that cannot be computed otherwise.
Using this option can lead to results not generally valid. This option applies mathematical identities that are convenient, but the results do not always hold for all values of variables. For details, see Algorithms.
IgnoreSpecialCases
— Indicator for ignoring special cases
false
(default) | true
Indicator for ignoring special cases, specified as true
or false
. This ignores cases that require one or more parameters to be elements of a comparatively small set, such as a fixed finite set or a set of integers.
PrincipalValue
— Indicator for returning principal value
false
(default) | true
Indicator for returning the principal value, specified as true
or false
. If the value is true
, int
computes the Cauchy principal value of the integral. In live scripts, the Cauchy principal value of the unevaluated integral appears as the symbol.
Hold
— Indicator for unevaluated integration
false
(default) | true
Indicator for unevaluated integration, specified as true
or false
. If the value is true
, int
returns integrals without evaluating them.
Tips
In contrast to differentiation, symbolic integration is a more complicated task. If
int
cannot compute an integral of an expression, check for these reasons:The antiderivative does not exist in a closed form.
The antiderivative exists, but
int
cannot find it.
If
int
cannot compute a closed form of an integral, it returns an unresolved integral.For some integrals that have closed form solutions, where these solutions are complicated and
int
returns unresolved integrals, you can usesimplify
to obtain the closed form solutions. For example, the following code finds the closed form solution of the integral off(x)
:syms xf(x) = x*log(x/2+sqrt(x^2+1));F = int(f,x)simplify(F,Steps=10)
Otherwise, you can try approximating unresolved integrals by using one of these methods:
For indefinite integrals, use series expansions. Use this method to approximate an integral around a particular value of the variable.
For definite integrals, use numeric approximations.
For indefinite integrals,
int
does not return a constant of integration in the result. The results of integrating mathematically equivalent expressions may be different. For example,syms x; int((x+1)^2)
returns(x+1)^3/3
, whilesyms x; int(x^2+2*x+1)
returns(x*(x^2+3*x+3))/3
, which differs from the first result by1/3
.For indefinite integrals,
int
implicitly assumes that the integration variable var is real. For definite integrals,int
restricts the integration variablevar
to the specified integration interval. If one or both integration boundsa
andb
are not numeric,int
assumes thata <= b
unless you explicitly specify otherwise.
Algorithms
When you use IgnoreAnalyticConstraints
, int
applies some of these rules:
log(a) + log(b)=log(a·b) for all values of a and b. In particular, the following equality is valid for all values of a, b, and c:
(a·b)c=ac·bc.
log(ab)=b·log(a) for all values of a and b. In particular, the following equality is valid for all values of a, b, and c:
(ab)c=ab·c.
If f and g are standard mathematical functions and f(g(x))=x for all small positive numbers, then f(g(x))=x is assumed to be valid for all complex values x. In particular:
log(ex)=x
asin(sin(x))=x, acos(cos(x))=x, atan(tan(x))=x
asinh(sinh(x))=x, acosh(cosh(x))=x, atanh(tanh(x))=x
Wk(x·ex)=x for all branch indices k of the Lambert W function.
Version History
Introduced before R2006a
expand all
R2019b: Return unevaluated integral
int(___,'Hold',true)
returns integrals without evaluating them. Use release to return the evaluated integrals by ignoring the 'Hold'
option in the int
function.
See Also
diff | dsolve | functionalDerivative | symvar | vpaintegral | integrateByParts | changeIntegrationVariable | release | rewrite
Topics
- Integration
External Websites
- Calculus Integrals (MathWorks Teaching Resources)
- Beam Bending and Deflection (MathWorks Teaching Resources)
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- Deutsch
- English
- Français
- United Kingdom (English)
Contact your local office