@miguelraz When building Rubi with the ability to show steps, a few rules are hard-wired to display more meaningfully when the rule is applied. For your purposes, just assume
$LoadShowSteps is False and use the
Int rule defined by the fail condition of the If statement.
See the Mathematica online help for the distinction between
Exp[x] are interchangeable since Mathematica automatically simplifies the latter to the former.
@cbauer:matrix.org I'm glad you find Rubi's integration prowess of value.
When showing integration steps, you and others have requested a way to find for the rules being applied the documentation included with their definition in Rubi's source files.
As a help toward that end, now available on Rubi's website is an Integration Rule Index. It shows the numbers of the rules defined in each of the rule source files. For more on using the index, see the third paragraph of the Rules menu option on the website
Hello, hope all is well.
I have a somewhat conceptual (although possibly very stupid) question. If we have that
s = Int[e, x], then is it reasonable to expect that
D[s, x] - e is equal to 0 (possibly after applying
Simplify to the left-hand side)?
This, of course, generally holds, but there are a few cases where this is not the case, for example:
Int[(f^x * x^2) / ((a + b*f^(2*x))^3), x] Int[x / (b / (f^x) + a * f^x)^3, x]
Can someone explain me what is going on here? I asked a similar question somewhere in SymPy's GitHub issues and the people there explained to me that it is possible to get such discrepancies because of some implicit assumptions, related to the domains for which the integrand and the result of the integration are defined. I am not sure that this is also the case here, though. Am I terribly wrong somewhere? Thanks
@mpeychev_gitlab If the derivative of the antiderivative Rubi returns is not equal to the integrand, I consider the antiderivative incorrect and a bug in Rubi. However, the host CAS, in this case Mathematica, may not be able demonstrate expressions equal even using FullSimplify.
The optimal antiderivatives of each of the 70,000+ integrals in Rubi's test-suite has been verified correct. Sometimes this requires manually helping out Mathematica show equality using various techniques.
@jg3c:matrix.org The Rubi-5 repository has the latest information on the Rubi 5 Project.
It contains an actual functioning prototype of Rubi 5 that shows the structure of the proposed integrator. Also it provides an example how to compile Rubi 4 pattern matching rules into a Rubi 5 if-then-else decision tree. The repository's README file provides more details.
fyi, I am getting this error Recursion error on this integral using Rubi 4.16.1 on Mathematica 12.3.1
integrand = -(x^3 + x^6 + 1)/((x^3 + x^5)^(1/4)*(x^6 - 1)) Int[integrand, x] $RecursionLimit::reclim2: Recursion depth of 1024 exceeded during evaluation of (If[IntegerQ[#1]||Head[#1]===Rational,Null,Return[False]]&)[-1] $RecursionLimit::reclim2: Recursion depth of 1024 exceeded during evaluation of AtomQ[-1]||FreeQ[-1,x]. $RecursionLimit::reclim2: Recursion depth of 1024 exceeded during evaluation of AtomQ[x]||FreeQ[x,x].
Using windows 10.
This one gives 1/0 error and also recursion error, also using Rubi 4.16.1 on Mathematica 12.3.1.
integrand = -(x^6 + 1)/((x^3 + x^5)^(1/4)*(x^6 - 1)) Int[integrand, x] $RecursionLimit::reclim2: Recursion depth of 1024 exceeded during evaluation of N. $RecursionLimit::reclim2: Recursion depth of 1024 exceeded during evaluation of Floor[Hold[N]]. $RecursionLimit::reclim2: Recursion depth of 1024 exceeded during evaluation of Message[Simplify::timl,300]. General::stop: Further output of $RecursionLimit::reclim2 will be suppressed during this calculation. Power::infy: Infinite expression 1/0 encountered.
@Anixx The integration rules Rubi uses are defined in the Mathematica source and corresponding pdf files available at https://rulebasedintegration.org/integrationRules.html.
The easiest way to add additional rules is to put them at the end of one of Rubi's existing source files, and then rebuild the system.
Yes, you could even add rules for definite integration.
@miguelraz There are two phases to CAS integrations. The first phase run each CAS and generates a plain text file for each CAS per each test. There are 208 tests. And there are 8 CAS systems. Second phase reads these plain text files (TABLES) and generates the PDF and web pages.
I can make the TABLEs available. There is ONE line per one integral result. It is comma delimited. It is described here https://12000.org/my_notes/CAS_integration_tests/reports/summer_2021/inch1.htm#x2-150001.9 Here is a link to one such TABLE. This was for Rubi result for the Timofeev test file. The TABLE contains everything. Timing, results, Latex, input, pass/fail, code of fail, etc... as described in the above link. Here is TABLE file mentioned above, https://12000.org/tmp/CAS_integration_RESULT_file_example/rubi_listA.txt If this works for you, I can makes all these in one large zip file. but will take me little time to do.
@Anixx The 3-year old Wolfram Community article "Rubi - The Rule-based Integrator for Mathematica" you reference gives just one example integral on which Mathematica 11.3 is inferior to that returned by Rubi.
Before you say "Mathematica 13 now gives the same results as Rubi" you need to wait and see how Mma 13 performs on the rest of the 1000's of problems in the integration test-suite Nasser uses.