www.integral-calculator.com Open in urlscan Pro
176.9.19.242  Public Scan

URL: https://www.integral-calculator.com/
Submission: On November 13 via manual from GB — Scanned from GB

Form analysis 1 forms found in the DOM

<form id="expression-form" action="" onsubmit="return loading()">
  <fieldset>
    <div id="keyboard" class="btcf">
      <a id="clear-expression-button" href="#" draggable="false" onclick="return loading()" data-input="CLR"><span>CLR</span></a>
      <a href="#" draggable="false" onclick="return loading()" data-input="+" data-surround="right">+</a>
      <a href="#" draggable="false" onclick="return loading()" data-input="-" data-surround="right">–</a>
      <a href="#" draggable="false" onclick="return loading()" data-input="*" data-surround="right">×</a>
      <a href="#" draggable="false" onclick="return loading()" data-input="/" data-surround="right">÷</a>
      <a href="#" draggable="false" onclick="return loading()" data-input="^" data-surround="right">^</a>
      <a href="#" draggable="false" onclick="return loading()" data-menu-id="keyboard-roots" data-direct-input="√(" data-surround="left">√</a>
      <a href="#" draggable="false" onclick="return loading()" data-menu-id="keyboard-functions"><span>f(<em>x</em>)</span></a>
      <a href="#" draggable="false" onclick="return loading()" data-menu-id="keyboard-consts-vars" data-direct-input="π">π</a>
      <a class="additional-372" href="#" draggable="false" onclick="return loading()" data-input="(" data-surround="left">(</a>
      <a class="additional-372" href="#" draggable="false" onclick="return loading()" data-input=")" data-surround="right">)</a>
    </div>
    <div id="keyboard-menus">
      <div id="keyboard-roots" class="keyboard-menu btcf">
        <a href="#" draggable="false" onclick="return loading()" data-input="√(" data-surround="left">√</a>
        <a href="#" draggable="false" onclick="return loading()" data-input="∛(" data-surround="left"><sup>3</sup>√</a>
        <a href="#" draggable="false" onclick="return loading()" data-input="∜(" data-surround="left"><sup>4</sup>√</a>
        <a href="#" draggable="false" onclick="return loading()" data-input="√(n, " data-surround="left"><sup><em>n</em></sup>√</a>
        <div class="btcf"></div>
        <hr>
        <div class="hint">You can also input:<br>• <code>sqrt(…)</code><br>• <code>root(n, …)</code></div>
      </div>
      <div id="keyboard-functions" class="keyboard-menu btcf">
        <a href="#" draggable="false" onclick="return loading()" data-input="ln(" data-surround="left">ln</a>
        <a href="#" draggable="false" onclick="return loading()" data-input="log(10, " data-surround="left">log<sub>10</sub></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="log(n, " data-surround="left">log<sub><em>n</em></sub></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="e^(" data-surround="left">exp <sub class="aka">e<sup><em>x</em></sup></sub></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="abs(" data-surround="left">abs <sub class="aka">|<em>x</em>|</sub></a>
        <div class="btcf"></div>
        <hr>
        <a href="#" draggable="false" onclick="return loading()" data-input="sin(" data-surround="left">sin</a>
        <a href="#" draggable="false" onclick="return loading()" data-input="cos(" data-surround="left">cos</a>
        <a href="#" draggable="false" onclick="return loading()" data-input="tan(" data-surround="left">tan</a>
        <a href="#" draggable="false" onclick="return loading()" data-input="csc(" data-surround="left">csc</a>
        <a href="#" draggable="false" onclick="return loading()" data-input="sec(" data-surround="left">sec</a>
        <a href="#" draggable="false" onclick="return loading()" data-input="cot(" data-surround="left">cot</a>
        <div class="btcf"></div>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="arcsin(" data-surround="left">arcsin <sub class="aka">sin<sup>-1</sup></sub></a>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="arccos(" data-surround="left">arccos <sub class="aka">cos<sup>-1</sup></sub></a>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="arctan(" data-surround="left">arctan <sub class="aka">tan<sup>-1</sup></sub></a>
        <div class="btcf"></div>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="arccsc(" data-surround="left">arccsc <sub class="aka">csc<sup>-1</sup></sub></a>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="arcsec(" data-surround="left">arcsec <sub class="aka">sec<sup>-1</sup></sub></a>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="arccot(" data-surround="left">arccot <sub class="aka">cot<sup>-1</sup></sub></a>
        <div class="btcf"></div>
        <hr>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="sinh(" data-surround="left">sinh</a>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="cosh(" data-surround="left">cosh</a>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="tanh(" data-surround="left">tanh</a>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="csch(" data-surround="left">csch</a>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="sech(" data-surround="left">sech</a>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="coth(" data-surround="left">coth</a>
        <div class="btcf"></div>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="arsinh(" data-surround="left">arsinh <sub class="aka">sinh<sup>-1</sup></sub></a>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="arcosh(" data-surround="left">arcosh <sub class="aka">cosh<sup>-1</sup></sub></a>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="artanh(" data-surround="left">artanh <sub class="aka">tanh<sup>-1</sup></sub></a>
        <div class="btcf"></div>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="arcsch(" data-surround="left">arcsch <sub class="aka">csch<sup>-1</sup></sub></a>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="arsech(" data-surround="left">arsech <sub class="aka">sech<sup>-1</sup></sub></a>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="arcoth(" data-surround="left">arcoth <sub class="aka">coth<sup>-1</sup></sub></a>
        <div class="btcf"></div>
        <hr>
        <a href="#" draggable="false" onclick="return loading()" data-input="function_f(" data-surround="left">f</a>
        <a href="#" draggable="false" onclick="return loading()" data-input="function_f'(" data-surround="left">f '</a>
        <a href="#" draggable="false" onclick="return loading()" data-input="function_f''(" data-surround="left">f ''</a>
        <a href="#" draggable="false" onclick="return loading()" data-input="function_g(" data-surround="left">g</a>
        <a href="#" draggable="false" onclick="return loading()" data-input="function_g'(" data-surround="left">g '</a>
        <a href="#" draggable="false" onclick="return loading()" data-input="function_g''(" data-surround="left">g ''</a>
        <div class="btcf"></div>
        <hr>
        <a href="#" draggable="false" onclick="return loading()" data-input="expintegral_si(" data-surround="left">Si</a>
        <a href="#" draggable="false" onclick="return loading()" data-input="expintegral_ci(" data-surround="left">Ci</a>
        <a href="#" draggable="false" onclick="return loading()" data-input="expintegral_shi(" data-surround="left">Shi</a>
        <a href="#" draggable="false" onclick="return loading()" data-input="expintegral_chi(" data-surround="left">Chi</a>
        <div class="btcf"></div>
        <a href="#" draggable="false" onclick="return loading()" data-input="expintegral_ei(" data-surround="left">Ei</a>
        <a href="#" draggable="false" onclick="return loading()" data-input="expintegral_e1(" data-surround="left">E<sub>1</sub></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="expintegral_e(n, " data-surround="left">E<sub><em>n</em></sub></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="expintegral_li(" data-surround="left">li</a>
        <div class="btcf"></div>
        <a href="#" draggable="false" onclick="return loading()" data-input="erf(" data-surround="left">erf</a>
        <a href="#" draggable="false" onclick="return loading()" data-input="erfc(" data-surround="left">erfc</a>
        <a href="#" draggable="false" onclick="return loading()" data-input="erfi(" data-surround="left">erfi</a>
        <a href="#" draggable="false" onclick="return loading()" data-input="lambert_w(" data-surround="left">W <sub class="aka">Lambert</sub></a>
        <div class="btcf"></div>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="gamma_function(" data-surround="left">Γ <sub class="aka">Gamma</sub></a>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="beta_function(" data-surround="left">Β <sub class="aka">Beta</sub></a>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="psi_function(n, " data-surround="left">ψ<sub><em>n</em></sub> <sub class="aka">Polygamma</sub></a>
        <div class="btcf"></div>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="fresnel_s(" data-surround="left">S <sub class="aka">Fresnel</sub></a>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="fresnel_c(" data-surround="left">C <sub class="aka">Fresnel</sub></a>
        <a class="small" href="#" draggable="false" onclick="return loading()" data-input="li(n, " data-surround="left">Li<sub><em>n</em></sub> <sub class="aka">Polylog</sub></a>
      </div>
      <div id="keyboard-consts-vars" class="keyboard-menu btcf">
        <a href="#" draggable="false" onclick="return loading()" data-input="π">π <sub class="aka">3.141…</sub></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="e">e <sub class="aka">2.718…</sub></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="i">i <sub class="aka">√-1</sub></a>
        <div class="btcf"></div>
        <a href="#" draggable="false" onclick="return loading()" data-input="φ_GR">φ<sub>GR</sub> <sub class="aka">1.618…</sub></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="γ_EM">γ<sub>EM</sub> <sub class="aka">0.577…</sub></a>
        <div class="btcf"></div>
        <hr>
        <a href="#" draggable="false" onclick="return loading()" data-input="α"><em>α</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="β"><em>β</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="γ"><em>γ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="δ"><em>δ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="ϵ"><em>ϵ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="ε"><em>ε</em></a>
        <div class="btcf"></div>
        <a href="#" draggable="false" onclick="return loading()" data-input="ζ"><em>ζ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="η"><em>η</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="θ"><em>θ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="ϑ"><em>ϑ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="ι"><em>ι</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="κ"><em>κ</em></a>
        <div class="btcf"></div>
        <a href="#" draggable="false" onclick="return loading()" data-input="ϰ"><em>ϰ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="λ"><em>λ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="μ"><em>μ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="ν"><em>ν</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="ξ"><em>ξ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="ο"><em>ο</em></a>
        <div class="btcf"></div>
        <a href="#" draggable="false" onclick="return loading()" data-input="ϖ"><em>ϖ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="ρ"><em>ρ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="ϱ"><em>ϱ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="σ"><em>σ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="ς"><em>ς</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="τ"><em>τ</em></a>
        <div class="btcf"></div>
        <a href="#" draggable="false" onclick="return loading()" data-input="υ"><em>υ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="ϕ"><em>ϕ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="φ"><em>φ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="χ"><em>χ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="ψ"><em>ψ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="ω"><em>ω</em></a>
        <div class="btcf"></div>
        <hr>
        <a href="#" draggable="false" onclick="return loading()" data-input="Γ"><em>Γ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="Δ"><em>Δ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="Θ"><em>Θ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="Λ"><em>Λ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="Ξ"><em>Ξ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="Π"><em>Π</em></a>
        <div class="btcf"></div>
        <a href="#" draggable="false" onclick="return loading()" data-input="Σ"><em>Σ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="Υ"><em>Υ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="Ψ"><em>Ψ</em></a>
        <a href="#" draggable="false" onclick="return loading()" data-input="Ω"><em>Ω</em></a>
        <div class="btcf"></div>
        <hr>
        <div class="hint">You can also input:<br>• <code>pi</code> for π, <code>alpha</code> for α, …<br>• <code>upper_…</code> for uppercase letters</div>
      </div>
    </div>
    <input id="go" class="round button" type="submit" value="Go!">
    <div id="expression-wrapper">
      <input id="expression" class="round text" type="text" placeholder="(pi * sin(sqrt(x)) * e^sqrt(x)) / sqrt(x)" spellcheck="false" autocomplete="off" autocorrect="off" autocapitalize="off">
    </div>
  </fieldset>
</form>

Text Content

Switch light/dark mode


INTEGRAL CALCULATOR


CALCULATE INTEGRALS ONLINE
— WITH STEPS AND GRAPHING!

Also check the Derivative Calculator

!
Calculadora de Integrales en español
Integralrechner auf Deutsch
Калькулятор Интегралов на Русском

Advertisement



Advertisement


About
Help
Examples
Options
Practice

The Integral Calculator lets you calculate integrals and antiderivatives of
functions online — for free!

Our calculator allows you to check your solutions to calculus exercises. It
helps you practice by showing you the full working (step by step integration).
All common integration techniques and even special functions are supported.

The Integral Calculator supports definite and indefinite integrals
(antiderivatives) as well as integrating functions with many variables. You can
also check your answers! Interactive graphs/plots help visualize and better
understand the functions.

For more about how to use the Integral Calculator, go to "Help". Also see
"Examples".

And now: Happy integrating!

Enter the function you want to integrate into the Integral Calculator. Skip the
f(x)= part and the differential dx! The Integral Calculator will show you a
graphical version of your input while you type. Make sure that it shows exactly
what you want. Use parentheses, if necessary, e.g. a/(b+c). Write decimal
fractions with a period instead of a comma, e.g. 3.141.

In "Examples" you will find some of the functions that are most frequently
entered into the Integral Calculator.

When you're done entering your function, click "Go!", and the Integral
Calculator will show the result below.

In "Options", you can set the variable of integration and the integration
bounds. If you don't specify the bounds, only the antiderivative will be
computed.

Click an example to enter it into the Integral Calculator (the current input
will be deleted).

$2x$ $x^{2}$ $\frac{1}{x}$ $\sqrt{x}$ $\sqrt[3]{x}$ $\frac{1}{\sqrt{x}}$
$\ln(x)$ $\log_{10}(x)$ $\ln^{2}(x)$ $\ln(x^{2} + 1)$ $x \ln(x)$
$\frac{\ln(x)}{x}$ $\frac{\ln(x)}{x^{2}}$ $\frac{1}{x \ln(x)}$ $\mathrm{e}^x$
$\mathrm{e}^{-x}$ $2^x$ $x\mathrm{e}^x$ $x\mathrm{e}^{-x}$ $\sin(x)$ $\cos(x)$
$\tan(x)$ $\sec(x)$ $\sin^{2}(x)$ $\cos^{2}(x)$ $\sin^{3}(x)$ $\cos(x) \sin(x)$
$\mathrm{e}^x \sin(x)$ $x \sin(x)$ $x \cos(x)$ $\arcsin(x)$ $\arctan(x)$ $|x|$
$\frac{1}{x^{2} + 1}$ $\frac{1}{1 - x^{2}}$ $\frac{1}{x^{2} + x + 1}$
$\sqrt{x^{2} + x + 1}$
$\operatorname{f}'(\operatorname{g}(x))\operatorname{g}'(x)$

Configure the Integral Calculator:

Variable of integration: xxabcdfghjklmnopqrstuvwxyz Upper bound (to): +∞ +π
Lower bound (from): –∞ –π Integrate numerically only? Simplify expressions?
Simplify all roots?
(√x² becomes x, not |x|) Use complex domain ℂ? Keep decimals?

The practice problem generator allows you to generate as many random exercises
as you want.

You find some configuration options and a proposed problem below. You can accept
it (then it's input into the calculator) or generate a new one.



Definite integrals Integration by parts Substitution Completing the square
Polynomials and powers Exponential functions Trigon./hyperb. functions Rational
functions Inv. trigon./hyperb. functions Logarithms Special functions Tricky
integrals

Accept problem  Next problem


CALCULATE THE INTEGRAL OF …ENTER YOUR OWN ANSWER:

Exit "check answer" mode
CLR + – × ÷ ^ √ f(x) π ( )
√ 3√ 4√ n√


--------------------------------------------------------------------------------

You can also input:
• sqrt(…)
• root(n, …)
ln log10 logn exp ex abs |x|


--------------------------------------------------------------------------------

sin cos tan csc sec cot

arcsin sin-1 arccos cos-1 arctan tan-1

arccsc csc-1 arcsec sec-1 arccot cot-1


--------------------------------------------------------------------------------

sinh cosh tanh csch sech coth

arsinh sinh-1 arcosh cosh-1 artanh tanh-1

arcsch csch-1 arsech sech-1 arcoth coth-1


--------------------------------------------------------------------------------

f f ' f '' g g ' g ''


--------------------------------------------------------------------------------

Si Ci Shi Chi

Ei E1 En li

erf erfc erfi W Lambert

Γ Gamma Β Beta ψn Polygamma

S Fresnel C Fresnel Lin Polylog
π 3.141… e 2.718… i √-1

φGR 1.618… γEM 0.577…


--------------------------------------------------------------------------------

α β γ δ ϵ ε

ζ η θ ϑ ι κ

ϰ λ μ ν ξ ο

ϖ ρ ϱ σ ς τ

υ ϕ φ χ ψ ω


--------------------------------------------------------------------------------

Γ Δ Θ Λ Ξ Π

Σ Υ Ψ Ω


--------------------------------------------------------------------------------

You can also input:
• pi for π, alpha for α, …
• upper_… for uppercase letters


This will be calculated:

Loading … please wait!
This will take a few seconds.

?∫?πsin(√x)e√x√xdx



Use parentheses, if necessary. Also see "Examples". Change integration variable
and order in "Options".


SUPPORT

Donate

Please support me if you like this page. Donate via PayPal to remove the ads.*

* Please choose to cover the PayPal fees. After donating, you will receive an
e-mail.



Learn more

Advertisement


RESULT


Above, enter the function to integrate. Variable of integration, integration
bounds and more can be changed in "Options". Click "Go!" to start the
integral/antiderivative calculation. The result will be shown further below.

×

Advertisement




HOW THE INTEGRAL CALCULATOR WORKS

For those with a technical background, the following section explains how the
Integral Calculator works.

First, a parser analyzes the mathematical function. It transforms it into a form
that is better understandable by a computer, namely a tree (see figure below).
In doing this, the Integral Calculator has to respect the order of operations. A
specialty in mathematical expressions is that the multiplication sign can be
left out sometimes, for example we write 5x instead of 5*x. The Integral
Calculator has to detect these cases and insert the multiplication sign.

The parser is implemented in JavaScript, based on the Shunting-yard algorithm,
and can run directly in the browser. This allows for quick feedback while typing
by transforming the tree into LaTeX code. MathJax takes care of displaying it in
the browser.

When the "Go!" button is clicked, the Integral Calculator sends the mathematical
function and the settings (variable of integration and integration bounds) to
the server, where it is analyzed again. This time, the function gets transformed
into a form that can be understood by the computer algebra system Maxima.



Maxima takes care of actually computing the integral of the mathematical
function. Maxima's output is transformed to LaTeX again and is then presented to
the user. In many cases, the antiderivative is computed using the Risch
algorithm, which is hard to understand for humans. That's why showing the steps
of calculation is very challenging for integrals.

In order to show the steps, the calculator applies the same integration
techniques that a human would apply. The program that does this has been
developed over several years and is written in Maxima's own programming
language. It consists of more than 17 000 lines of code. When the integrand
matches a known form, it applies fixed rules to solve the integral (e.g. partial
fraction decomposition for rational functions, trigonometric substitution for
integrands involving the square roots of a quadratic polynomial or integration
by parts for products of certain functions). Otherwise, it tries different
substitutions and transformations until either the integral is solved, time runs
out or there is nothing left to try. The calculator lacks the mathematical
intuition that is very useful for finding an antiderivative, but on the other
hand it can try a large number of possibilities within a short amount of time.
The step by step antiderivatives are often much shorter and more elegant than
those found by Maxima.

The "Check answer" feature has to solve the difficult task of determining
whether two mathematical expressions are equivalent. Their difference is
computed and simplified as far as possible using Maxima. For example, this
involves writing trigonometric/hyperbolic functions in their exponential forms.
If it can be shown that the difference simplifies to zero, the task is solved.
Otherwise, a probabilistic algorithm is applied that evaluates and compares both
functions at randomly chosen places. In the case of antiderivatives, the entire
procedure is repeated with each function's derivative, since antiderivatives are
allowed to differ by a constant.

The interactive function graphs are computed in the browser and displayed within
a canvas element (HTML5). For each function to be graphed, the calculator
creates a JavaScript function, which is then evaluated in small steps in order
to draw the graph. While graphing, singularities (e.g. poles) are detected and
treated specially. The gesture control is implemented using Hammer.js.

If you have any questions or ideas for improvements to the Integral Calculator,
don't hesitate to write me an e-mail.

© David Scherfgen 2024 — all rights reserved.

Contact and Privacy


Enter your function here. To calculate the integral, click the "Go!" button.