int

Definite and indefinite integrals

Description

example

F = int(expr) computes the indefinite integral of 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

F = int(expr,var) computes the indefinite integral of expr with respect to the symbolic scalar variable var.

example

F = int(expr,a,b) computes the definite integral of 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

F = int(expr,var,a,b) computes the definite integral of 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

F = int(___,Name,Value) specifies additional options using one or more Name,Value pair arguments. For example, 'IgnoreAnalyticConstraints',true specifies that int applies additional simplifications to the integrand.

Examples

collapse all

Define a univariate expression.

syms x
expr = -2*x/(1+x^2)^2;

Find the indefinite integral of the univariate expression.

F = int(expr)
F = 

1x2+11/(x^2 + 1)

Define a multivariate function with variables x and z.

syms x z
f(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) = 

x22z2+1x^2/(2*(z^2 + 1))

Fz = int(f,z)
Fz(x, z) = xatan(z)x*atan(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 = xx
F = int(f)
F(x, z) = 

x22z2+1x^2/(2*(z^2 + 1))

Integrate a symbolic expression from 0 to 1.

syms x
expr = x*log(1+x);
F = int(expr,[0 1])
F = 

14sym(1/4)

Integrate another expression from sin(t) to 1.

syms t
F = int(2*x,[sin(t) 1])
F = cos(t)2cos(t)^2

When int cannot compute the value of a definite integral, numerically approximate the integral by using vpa.

syms x
f = cos(x)/sqrt(1 + x^2);
Fint = int(f,x,[0 10])
Fint = 

010cos(x)x2+1dxint(cos(x)/sqrt(x^2 + 1), x, 0, 10)

Fvpa = vpa(Fint)
Fvpa = 0.37570628299079723478493405557162vpa('0.37570628299079723478493405557162')

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 = 0.375706vpa('0.375706')

Define a symbolic matrix containing four expressions as its elements.

syms a x t z
M = [exp(t) exp(a*t); sin(t) cos(t)]
M = 

(eteatsin(t)cos(t))[exp(t), exp(a*t); sin(t), cos(t)]

Find indefinite integrals of the matrix element-wise.

F = int(M,t)
F = 

(eteata-cos(t)sin(t))[exp(t), exp(a*t)/a; -cos(t), sin(t)]

Define a symbolic function and compute its indefinite integral.

syms f(x)
f(x) = acos(cos(x));
F = int(f,x)
F(x) = 

xacos(cos(x))-x22sign(sin(x))x*acos(cos(x)) - x^2/(2*sign(sin(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) = 

x22x^2/2

Define a symbolic expression xt and compute its indefinite integral with respect to the variable x.

syms x t
F = int(x^t,x)
F = 

{log(x) if  t=-1xt+1t+1 if  t-1piecewise(t == -1, log(x), t ~= -1, x^(t + 1)/(t + 1))

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 t=-1 and t-1.

To ignore special cases of parameter values, set 'IgnoreSpecialCases' to true. With this option, int ignores the special case t=-1 and returns the solution for t-1.

F = int(x^t,x,'IgnoreSpecialCases',true)
F = 

xt+1t+1x^(t + 1)/(t + 1)

Define a symbolic function f(x)=1/(x-1) that has a pole at x=1.

syms x
f(x) = 1/(x-1)
f(x) = 

1x-11/(x - 1)

Compute the definite integral of this function from x=0 to x=2. Since the integration interval includes the pole, the result is not defined.

F = int(f,[0 2])
F = NaNsym(NaN)

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 = 0sym(0)

Find the integral of xexdx.

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 = 

xexdxint(x*exp(x), x, 'Hold = TRUE', true)

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 = 

xex-exdxx*exp(x) - int(exp(x), x, 'Hold = TRUE', true)

To evaluate the integral in G, use the release function to ignore the 'Hold' option.

Gcalc = release(G)
Gcalc = xex-exx*exp(x) - exp(x)

Compare the result to the integration result returned by int without setting the 'Hold' option.

Fcalc = int(x*exp(x))
Fcalc = exx-1exp(x)*(x - 1)

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) = 

sin(sinh(x))dxint(sin(sinh(x)), x)

You can approximate the integrand function f(x) as polynomials by using the Taylor expansion. Apply taylor to expand the integrand function f(x) as polynomials around x=0. Compute the integral of the approximated polynomials.

fTaylor = taylor(f,x,'ExpansionPoint',0,'Order',10)
fTaylor(x) = 

x95670-x790-x515+xx^9/5670 - x^7/90 - x^5/15 + x

Fapprox = int(fTaylor,x)
Fapprox(x) = 

x1056700-x8720-x690+x22x^10/56700 - x^8/720 - x^6/90 + x^2/2

Input Arguments

collapse all

Integrand, specified as a symbolic expression, function, vector, matrix, or number.

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.

Lower bound, specified as a number, symbolic number, variable, expression, or function (including expressions and functions with infinities).

Upper bound, specified as a number, symbolic number, variable, expression, or function (including expressions and functions with infinities).

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside quotes. You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

Example: 'IgnoreAnalyticConstraints',true specifies that int applies purely algebraic simplifications to the integrand.

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.

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.

Indicator for returning the principal value, specified as true or false. If the value is true, compute the Cauchy principal value of the integral. In live script, the Cauchy principal value of unevaluated integral shows as the symbol.

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.

    Try approximating such 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, while syms x; int(x^2+2*x+1) returns (x*(x^2+3*x+3))/3, which differs from the first result by 1/3.

  • For indefinite integrals, int implicitly assumes that the integration variable var is real. For definite integrals, int restricts the integration variable var to the specified integration interval. If one or both integration bounds a and b are not numeric, int assumes that a <= b unless you explicitly specify otherwise.

Algorithms

When you use IgnoreAnalyticConstraints, int applies 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.

Introduced before R2006a