login  home  contents  what's new  discussion  bug reports help  links  subscribe  changes  refresh  edit

FriCAS can now handle large class of integrals expressible in terms of exponential integral, error functions, incomplete Gamma function with constant first argument, logarithmic integral and polylogarithms. Like

fricas
(1) -> integrate(1/log(x), x)
 (1)
Type: Union(Expression(Integer),...)
fricas
integrate(1/(log(x) + 1), x)
 (2)
Type: Union(Expression(Integer),...)
fricas
integrate(1/(log(x)^2-1), x)
 (3)
Type: Union(Expression(Integer),...)
fricas
integrate(exp(x + a)/x, x)
 (4)
Type: Union(Expression(Integer),...)
fricas
integrate(exp(x + a)/x^2, x)
 (5)
Type: Union(Expression(Integer),...)
fricas
integrate(exp(x)/(x^2 - 1), x)
 (6)
Type: Union(Expression(Integer),...)
fricas
integrate(x/(exp(x) - 1), x)
 (7)
Type: Union(Expression(Integer),...)
fricas
integrate(x^3/(exp(x) - 1), x)
 (8)
Type: Union(Expression(Integer),...)
fricas
integrate(2*x*exp(x)/(exp(x)^2 - 1), x)
 (9)
Type: Union(Expression(Integer),...)
fricas
integrate(x/sinh(x), x)
 (10)
Type: Union(Expression(Integer),...)

fricas
)set output algebra on

fricas
)set output tex off
integrate(log(sinh(x)), x)
(11)
- 2 x log(sinh(x) + cosh(x) + 1) + 2 x log(sinh(x))
+
- 2 x log(- sinh(x) - cosh(x) + 1) - 2 dilog(sinh(x) + cosh(x) + 1)
+
2
- 2 dilog(- sinh(x) - cosh(x) + 1) + x
/
2
Type: Union(Expression(Integer),...)
fricas
)set output algebra off

fricas
)set output tex on

fricas
integrate(exp((-x^2-2*x-1)/x^2)/x^2, x)
 (11)
Type: Union(Expression(Integer),...)
fricas
integrate(x^3*exp(-x^3), x)
 (12)
Type: Union(Expression(Integer),...)
fricas
integrate(x^2*exp(-(x+1)^3), x)
 (13)
Type: Union(Expression(Integer),...)
fricas
integrate(x^n*exp(b*x^2), x)
 (14)
Type: Union(Expression(Integer),...)

FriCAS can introduce new algebraic constants when needed:

fricas
integrate(1/(log(x)^2-3), x)
 (15)
Type: Union(Expression(Integer),...)
fricas
integrate(exp(x)/(x^2 - 5), x)
 (16)
Type: Union(Expression(Integer),...)

The method is robust, FriCAS can handle both

fricas
integrate(((x+1)*exp(x))/log(x*exp(x)), x)
 (17)
Type: Union(Expression(Integer),...)
fricas
integrate(((x+1)*exp(x))/(x + log(x)), x)
 (18)
Type: Union(Expression(Integer),...)

while Mathematca 12 can handle the first form, but not the second one (Maple 15 and Maxima 5.45.1 can not handle any).

Similarly FriCAS has no troubles with

fricas
integrate(((-4*x-8)*log(x)+(-2*x^2-4*x))/(3*x*exp(2*log(x)+x)^2-x), x)
 (19)
Type: Union(Expression(Integer),...)
fricas
integrate(((-4*x-8)*log(x)+(-2*x^2-4*x))/(3*x^3*exp(log(x)+x)^2-x), x)
 (20)
Type: Union(Expression(Integer),...)
fricas
integrate(((2*x^4-x^3+3*x^2+2*x+2)*exp(x/(x^2+2)))/(x^3+2*x), x)
 (21)
Type: Union(Expression(Integer),...)

None of Mathematca 12, Maple 15 and Maxima 5.45.1 can handle them.

Since FriCAS uses algorithmic approach some integrals can be done easily without any extra special support. For example:

fricas
)set output tex off

fricas
)set output algebra on
integrate(-erf(((2*m - k^2) - 2*log(c + b) + 2*log(a))/(2*sqrt(2)*k))/2 - 1/2, c)
(23)
+----+
2  |  1
(2 log(c + b) - 2 log(a) - 2 m - k ) |----
|   2
+-+                                        \|2 k     log(a) + m
- \|2 erf(-------------------------------------------)%e
2
+
+----+
2  |  1
(2 log(c + b) - 2 log(a) - 2 m + k ) |----
|   2
+-+                                        \|2 k
b\|2 erf(-------------------------------------------)
2
+
+----+                                     2          +----+
|  1      2 log(c + b) - 2 log(a) - 2 m + k           |  1
2 c k |---- erf(----------------------------------) - 2 c k |----
|   2                       +-+                       |   2
\|2 k                    2 k\|2                       \|2 k
/
+----+
|  1
4 k |----
|   2
\|2 k
Type: Union(Expression(Integer),...)
fricas
)set output tex on

fricas
)set output algebra off

is done combining general support for Liouvillian integrands with procedure for handling erf. In Rubi this example required adding a new special rule.

FriCAS can also handle some integrals involving special functions of algebraic arguments:

fricas
integrate(((26*x+23)*x^(1/2)+4*x^2+50*x-6)*exp(2*x^(1/2)+x)/((16*x^2+36*x)*x^(1/2)+(2*x^3+42*x^2)), x)
 (22)
Type: Union(Expression(Integer),...)

There is also limited support to handle integrals where answer depends on elliptic functions:

fricas
integrate(1/sqrt((1 - x^2)*(1 + 2*x^2)), x)
 (23)
Type: Union(Expression(Integer),...)
fricas
integrate(1/sqrt(x^3 - 1), x)
 (24)
Type: Union(Expression(Integer),...)

 Subject:   Be Bold !! ( 15 subscribers )