On Thursday, May 7, 2020 at 5:07:58 AM UTC+10, clicl...@freenet.de wrote:
samuel.thomas.blake@gmail.com schrieb:
On Wednesday, May 6, 2020 at 3:40:42 PM UTC+10, Nasser M. Abbasi wrote:
On 5/5/2020 11:14 PM, samuel.thomas.blake@gmail.com wrote:
int(convert(((-3+x^2)*(1-6*x^2+x^4)^(-1/4))/(-1+x^2),RootOf),x);memory used=294.4MB, alloc=112.3MB, time=3.47
memory used=370.5MB, alloc=112.3MB, time=4.30
memory used=446.8MB, alloc=112.3MB, time=5.04
memory used=501.3MB, alloc=112.3MB, time=5.54
memory used=570.5MB, alloc=112.3MB, time=6.13 1/2*RootOf(_Z^2+1)*ln(-(-RootOf(_Z^4-x^4+6*x^2-1,index = 1)^2*RootOf(_Z^2+1)*x^2+RootOf(_Z^2+1)*x^4+RootOf(_Z^4-x^4+6*x^2
-1,index = 1)^3*x-RootOf(_Z^4-x^4+6*x^2-1,index = 1)*x^3+RootOf(_Z^4-x^4+6*x^2-1,index = 1)^2*RootOf(_Z^2+1)-5*RootOf(_Z^
2+1)*x^2+3*RootOf(_Z^4-x^4+6*x^2-1,index = 1)*x)/(x+1)/(x-1))+1/2*ln(-(RootOf(_Z^4-x^4+6*x^2-1,index = 1)^3*x+RootOf(_Z^4
-x^4+6*x^2-1,index = 1)^2*x^2+RootOf(_Z^4-x^4+6*x^2-1,index = 1)*x^3+x^4-RootOf(_Z^4-x^4+6*x^2-1,index = 1)^2-3*RootOf(_Z
^4-x^4+6*x^2-1,index = 1)*x-5*x^2)/(x+1)/(x-1))
That is a nice trick. I did not know that converting integrand
to RootOf makes maple do these integrals.
The antiderivative contains complex numbers, but the result is correct, because
when it is differentiated it gives back the integrand.
part1 := 1/(1+6*x^2+x^4)^(3/4);
part2 := (1-x^2)^2;
part3 := 1/(1+x^2);
integrand := part1*part2*part3;
integrand0 := convert( part1*part2*part3, RootOf);
anti := int(integrand0,x):
anti := [allvalues(res)][1]; #pick first solution, same for second solution
anti := ln(((x^4 + 6*x^2 + 1)^(3/4)*x + sqrt(x^4 + 6*x^2 + 1)*x^2 +
(x^4 + 6*x^2 + 1)^(1/4)*x^3 + x^4 + sqrt(x^4 + 6*x^2 + 1) +
3*(x^4 + 6*x^2 + 1)^(1/4)*x + 5*x^2)/(x^2 + 1))/2 +
ln(-(-sqrt(x^4 + 6*x^2 + 1)*x^4*I + x^6*I + (x^4 + 6*x^2 + 1)^(1/4)*x^5 - 2*I*sqrt(x^4 + 6*x^2 + 1)*x^2 + 6*I*x^4 + 4*(x^4 + 6*x^2 + 1)^(1/4)*x^3
- (x^4 + 6*x^2 + 1)^(3/4)*x^3 - (x^4 + 6*x^2 + 1)^(3/4)*x
- sqrt(x^4 + 6*x^2 + 1)*I + 5*I*x^2
+ 3*(x^4 + 6*x^2 + 1)^(1/4)*x)/((x*I + 1)^2*(x*I - 1)^2))*I/2
back := simplify(diff(anti,x));
simplify(back-integrand)
0
I have to remember this trick ;)
Its the only way I know of to get Maple to use the Trager-Bronstein algorithm for algebraic functions. Maple gives some nice details of
the execution of the algorithm using
infolevel[int] := 5:
Where did you learn that conversion to RootOf makes Maple apply its
Risch integrator? This "trick" does not seem to be common knowledge.
Posting the trace information for this integral could perhaps help to
raise FriCAS performance towards the level of Maple's algebraic Risch integrator? It's no small step from 70.0% to 91.6%, as measured on
your testsuite of 190 integrals.
Martin.
Hi Martin,
No, it doesn't seem to be well-known. I saw it used by Bronstein in a post in this group concerning the integral of
x*(-71-96*x+10*x^2+x^4)^(-1/2)
Then I subsequently saw it mentioned in passing in a tutorial by Geddes.
Using this conversion, Maple finds solutions to many integrals where FriCAS reports "implementation incomplete (residue poly has multiple non-linear factors)".
Cheers,
Sam
On Thursday, May 7, 2020 at 11:49:37 AM UTC+10, samuel.t...@gmail.com wrote:
On Thursday, May 7, 2020 at 5:07:58 AM UTC+10, clicl...@freenet.de wrote:
samuel.thomas.blake@gmail.com schrieb:
On Wednesday, May 6, 2020 at 3:40:42 PM UTC+10, Nasser M. Abbasi wrote:
On 5/5/2020 11:14 PM, samuel.thomas.blake@gmail.com wrote:
int(convert(((-3+x^2)*(1-6*x^2+x^4)^(-1/4))/(-1+x^2),RootOf),x);memory used=294.4MB, alloc=112.3MB, time=3.47
memory used=370.5MB, alloc=112.3MB, time=4.30
memory used=446.8MB, alloc=112.3MB, time=5.04
memory used=501.3MB, alloc=112.3MB, time=5.54
memory used=570.5MB, alloc=112.3MB, time=6.13 1/2*RootOf(_Z^2+1)*ln(-(-RootOf(_Z^4-x^4+6*x^2-1,index = 1)^2*RootOf(_Z^2+1)*x^2+RootOf(_Z^2+1)*x^4+RootOf(_Z^4-x^4+6*x^2
-1,index = 1)^3*x-RootOf(_Z^4-x^4+6*x^2-1,index = 1)*x^3+RootOf(_Z^4-x^4+6*x^2-1,index = 1)^2*RootOf(_Z^2+1)-5*RootOf(_Z^
2+1)*x^2+3*RootOf(_Z^4-x^4+6*x^2-1,index = 1)*x)/(x+1)/(x-1))+1/2*ln(-(RootOf(_Z^4-x^4+6*x^2-1,index = 1)^3*x+RootOf(_Z^4
-x^4+6*x^2-1,index = 1)^2*x^2+RootOf(_Z^4-x^4+6*x^2-1,index = 1)*x^3+x^4-RootOf(_Z^4-x^4+6*x^2-1,index = 1)^2-3*RootOf(_Z
^4-x^4+6*x^2-1,index = 1)*x-5*x^2)/(x+1)/(x-1))
That is a nice trick. I did not know that converting integrand
to RootOf makes maple do these integrals.
The antiderivative contains complex numbers, but the result is correct, because
when it is differentiated it gives back the integrand.
part1 := 1/(1+6*x^2+x^4)^(3/4);
part2 := (1-x^2)^2;
part3 := 1/(1+x^2);
integrand := part1*part2*part3;
integrand0 := convert( part1*part2*part3, RootOf);
anti := int(integrand0,x):
anti := [allvalues(res)][1]; #pick first solution, same for second solution
anti := ln(((x^4 + 6*x^2 + 1)^(3/4)*x + sqrt(x^4 + 6*x^2 + 1)*x^2 +
(x^4 + 6*x^2 + 1)^(1/4)*x^3 + x^4 + sqrt(x^4 + 6*x^2 + 1) +
3*(x^4 + 6*x^2 + 1)^(1/4)*x + 5*x^2)/(x^2 + 1))/2 +
ln(-(-sqrt(x^4 + 6*x^2 + 1)*x^4*I + x^6*I + (x^4 + 6*x^2 + 1)^(1/4)*x^5
- 2*I*sqrt(x^4 + 6*x^2 + 1)*x^2 + 6*I*x^4 + 4*(x^4 + 6*x^2 + 1)^(1/4)*x^3
- (x^4 + 6*x^2 + 1)^(3/4)*x^3 - (x^4 + 6*x^2 + 1)^(3/4)*x
- sqrt(x^4 + 6*x^2 + 1)*I + 5*I*x^2
+ 3*(x^4 + 6*x^2 + 1)^(1/4)*x)/((x*I + 1)^2*(x*I - 1)^2))*I/2
back := simplify(diff(anti,x));
simplify(back-integrand)
0
I have to remember this trick ;)
Its the only way I know of to get Maple to use the Trager-Bronstein algorithm for algebraic functions. Maple gives some nice details of
the execution of the algorithm using
infolevel[int] := 5:
Where did you learn that conversion to RootOf makes Maple apply its
Risch integrator? This "trick" does not seem to be common knowledge.
Posting the trace information for this integral could perhaps help to raise FriCAS performance towards the level of Maple's algebraic Risch integrator? It's no small step from 70.0% to 91.6%, as measured on
your testsuite of 190 integrals.
Martin.
Hi Martin,
No, it doesn't seem to be well-known. I saw it used by Bronstein in a post in this group concerning the integral of
x*(-71-96*x+10*x^2+x^4)^(-1/2)
Then I subsequently saw it mentioned in passing in a tutorial by Geddes.
Using this conversion, Maple finds solutions to many integrals where FriCAS reports "implementation incomplete (residue poly has multiple non-linear factors)".
Cheers,
Sam
Greetings, incase anybody is interested, I tried FriCAS 1.3.6 on the same set of 191 integrals. The results are very similar to FriCAS 1.2.6. Interestingly 1.2.6 reports that 4 of the integrals are not elementary
(1) -> )version
Value = "FriCAS 1.3.6 compiled at Fri Jul 24 17:12:55 AEST 2020"
(1) -> )set messages time on
(1) -> integrate(((4+x^6)*(4+28*x^4-4*x^6+48*x^8-14*x^10+x^12)^(1/2))/x^9,x)
+--------------------------------------------+
x 6 | 12 10 8 6 4
++ (%A + 4)\|%A - 14 %A + 48 %A - 4 %A + 28 %A + 4
(1) | -------------------------------------------------------- d%A
++ 9
%A
Type: Union(Expression(Integer),...)
Time: 0.03 (IN) + 16.09 (EV) + 0.44 (OT) = 16.56 sec
(2) -> integrate(((-1+3*x^4)*(1+x+2*x^4+x^5+x^8)^(1/2))/(x^2*(4+x+4*x^4)),x)
+--------------------------+
x 4 | 8 5 4
++ (3 %A - 1)\|%A + %A + 2 %A + %A + 1
(2) | ---------------------------------------- d%A
++ 6 3 2
4 %A + %A + 4 %A
Type: Union(Expression(Integer),...)
Time: 0.00 (IN) + 16.40 (EV) + 0.09 (OT) = 16.49 sec
(3) -> integrate(((2+x^3)*(1-2*x^3-x^4+x^6)^(1/2))/(x^3*(-1-x^2+x^3)),x)
+---------------------+
x 3 | 6 4 3
++ (%A + 2)\|%A - %A - 2 %A + 1
(3) | --------------------------------- d%A
++ 6 5 3
%A - %A - %A
Type: Union(Expression(Integer),...)
Time: 0.00 (IN) + 1.40 (EV) + 0.03 (OT) = 1.44 sec
(4) -> integrate(((-5+6*x^5)*(20-3*x^2+16*x^5)*(25-x^4+40*x^5+16*x^10)^(1/2))/(x^5*(30-7*x^2+24*x^5)),x)
(4)
INTSIGN
,
x
,
+---------------------------+
10 7 5 2 | 10 5 4
(96 %A - 18 %A + 40 %A + 15 %A - 100)\|16 %A + 40 %A - %A + 25
------------------------------------------------------------------------
10 7 5
24 %A - 7 %A + 30 %A
*
d%A
Type: Union(Expression(Integer),...)
Time: 0.00 (IN) + 15.02 (EV) + 0.03 (OT) = 15.05 sec
On Saturday, August 1, 2020 at 6:35:24 PM UTC+10, samuel.t...@gmail.com wrote:
Greetings, incase anybody is interested, I tried FriCAS 1.3.6 on
the same set of 191 integrals. The results are very similar to
FriCAS 1.2.6. Interestingly 1.2.6 reports that 4 of the integrals
are not elementary
(1) -> )version
Value = "FriCAS 1.3.6 compiled at Fri Jul 24 17:12:55 AEST 2020"
(1) -> )set messages time on
(1) -> integrate(((4+x^6)*(4+28*x^4-4*x^6+48*x^8-14*x^10+x^12)^(1/2))/x^9,x)
+--------------------------------------------+
x 6 | 12 10 8 6 4
++ (%A + 4)\|%A - 14 %A + 48 %A - 4 %A + 28 %A + 4
(1) | -------------------------------------------------------- d%A
++ 9
%A
Type: Union(Expression(Integer),...)
Time: 0.03 (IN) + 16.09 (EV) + 0.44 (OT) = 16.56 sec
(2) -> integrate(((-1+3*x^4)*(1+x+2*x^4+x^5+x^8)^(1/2))/(x^2*(4+x+4*x^4)),x)
+--------------------------+
x 4 | 8 5 4
++ (3 %A - 1)\|%A + %A + 2 %A + %A + 1
(2) | ---------------------------------------- d%A
++ 6 3 2
4 %A + %A + 4 %A
Type: Union(Expression(Integer),...)
Time: 0.00 (IN) + 16.40 (EV) + 0.09 (OT) = 16.49 sec
(3) -> integrate(((2+x^3)*(1-2*x^3-x^4+x^6)^(1/2))/(x^3*(-1-x^2+x^3)),x)
+---------------------+
x 3 | 6 4 3
++ (%A + 2)\|%A - %A - 2 %A + 1
(3) | --------------------------------- d%A
++ 6 5 3
%A - %A - %A
Type: Union(Expression(Integer),...)
Time: 0.00 (IN) + 1.40 (EV) + 0.03 (OT) = 1.44 sec
(4) -> integrate(((-5+6*x^5)*(20-3*x^2+16*x^5)*(25-x^4+40*x^5+16*x^10)^(1/2))/(x^5*(30-7*x^2+24*x^5)),x)
(4)
INTSIGN
,
x
,
+---------------------------+
10 7 5 2 | 10 5 4
(96 %A - 18 %A + 40 %A + 15 %A - 100)\|16 %A + 40 %A - %A + 25
------------------------------------------------------------------------
10 7 5
24 %A - 7 %A + 30 %A
*
d%A
Type: Union(Expression(Integer),...)
Time: 0.00 (IN) + 15.02 (EV) + 0.03 (OT) = 15.05 sec
* 1.3.6 reports that 4 of the integrals are not elementary
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 185 |
Nodes: | 16 (1 / 15) |
Uptime: | 04:52:51 |
Calls: | 3,676 |
Calls today: | 2 |
Files: | 11,149 |
Messages: | 3,447,353 |