... and some other things. Exciting news.
https://juliasymbolics.org/roadmap/
Peter Luschny schrieb:
... and some other things. Exciting news.
https://juliasymbolics.org/roadmap/
Nasser may have to revise his script if he wants to see how future
RUBIs performs on the integration testsuite.
Martin.
... and some other things. Exciting news.
https://juliasymbolics.org/roadmap/
On 3/3/2021 11:13 AM, clicliclic@freenet.de wrote:
Peter Luschny schrieb:
... and some other things. Exciting news.
https://juliasymbolics.org/roadmap/
Nasser may have to revise his script if he wants to see how future
RUBIs performs on the integration testsuite.
Martin.
Sure, will add Julia/Rubi if and when it gets ported to Julia. I have
Julia 1.5.3 up and running on my Linux box, and use it symbolics
occasionally just to learn the syntax.
From my experience you have to
- implement the rewriting rules in the same order as they are used in MMA.
- implement very special functions like for example: TimeConstrained and Defer
- to get the same results for the JUnit tests you have to implement things like Simplify, FullSimplify, PossibleZeroQ,... very similar to MMA
- bugs in recursive calls of the rule engine are difficult to fix (at least in the current state of the project, without a suitable debugger)
This may be changing for the Rubi version with If/then/else logic ?
"Nasser M. Abbasi" schrieb:
On 3/3/2021 11:13 AM, clicliclic@freenet.de wrote:
Peter Luschny schrieb:
... and some other things. Exciting news.
https://juliasymbolics.org/roadmap/
Nasser may have to revise his script if he wants to see how future
RUBIs performs on the integration testsuite.
Martin.
Sure, will add Julia/Rubi if and when it gets ported to Julia. I have
Julia 1.5.3 up and running on my Linux box, and use it symbolics
occasionally just to learn the syntax.
What is your impression of the range of symbolic capabilities available
and of the maturity of their implementation?
Martin.
peter schrieb am Montag, 1. März 2021 um 23:57:22 UTC+1:
... and some other things. Exciting news.
https://juliasymbolics.org/roadmap/
at least for Rubi Version 4.16 IMO, it's not so easy to port it to another language.
From my experience you have to
- implement the rewriting rules in the same order as they are used in MMA.
- implement very special functions like for example: TimeConstrained and Defer
- to get the same results for the JUnit tests you have to implement things like Simplify, FullSimplify, PossibleZeroQ,... very similar to MMA
- bugs in recursive calls of the rule engine are difficult to fix (at least in the current state of the project, without a suitable debugger)
This may be changing for the Rubi version with If/then/else logic ?
In case someone is interested in the approach we've chosen, here is a short description:
- https://github.com/axkr/symja_android_library/wiki/Porting-Rubi-Integration-rules-to-Symja
The simple JUnit test cases which are described in the WIki should work with one exception.
But the more complicated JUnit test cases in the following folder still contain a lot of bugs/timeouts:
- https://github.com/axkr/symja_android_library/tree/master/symja_android_library/matheclipse-io/src/test/java/org/matheclipse/core/rubi/step02
The JUnit test cases are partially generated from the Rubi test suite.
Your work concerns a port of Rubi to a symbolic extension of Java.No these are selected test cases, where Rubi uses only 1 or 2 times the integration rules so that we can see in development if the correct rule was used.
There are 1092 failed symbolic integrations recorded in your log file failed_rubi_tests.txt. Did the tests involve the full problem suites
from Albert's site, or just subsets, perhaps chosen for simplicity?
A good estimate of a symbolic integrator's strength is already given by
the percentage of the 705 integrals from the Timofeev suite that it can solve. How many of them can your present Rubi port handle?
nob schrieb am Freitag, 5. März 2021 um 18:23:28 UTC+1:
Your work concerns a port of Rubi to a symbolic extension of Java.
There are 1092 failed symbolic integrations recorded in your logNo these are selected test cases, where Rubi uses only 1 or 2 times
file failed_rubi_tests.txt. Did the tests involve the full problem
suites from Albert's site, or just subsets, perhaps chosen for
simplicity?
the integration rules so that we can see in development if the
correct rule was used.
A good estimate of a symbolic integrator's strength is already
given by the percentage of the 705 integrals from the Timofeev
suite that it can solve. How many of them can your present Rubi
port handle?
- Charlwood 19 from 50 tests fail
- Timoveef 150 from 705 fail
For these tests I've not analyzed if there are "false negatives",
which can occur if the result isn't exactly the same as in the
predefined Rubi tests.
I've used the tests from here and converted them to JUnit test cases: https://rulebasedintegration.org/TestFiles/MathematicaSyntaxFiles/MathematicaSyntaxTestFiles.zip
Only thing so far I found which I did not like too much, is
when taking derivative of expression Z w.r.t say x, one
has to define the derivative part w.r.t. x, on a separate line,
then apply it on the expression on next line. Like this:
============
@variables x y;
D = Differential(x)
....few line later one can do....
D(y) # Differentiate y wrt. x
==========
One can't write on same line
diff(y(x),x)
as normally with say Maple or Mathematica, etc... which
for me is more clear since one sees the expression and the
variable x, on same line. May be there is a way around
this.
"Nasser M. Abbasi" schrieb:
On 3/4/2021 4:29 PM, Nasser M. Abbasi wrote:
Only thing so far I found which I did not like too much, is
when taking derivative of expression Z w.r.t say x, one
has to define the derivative part w.r.t. x, on a separate line,
then apply it on the expression on next line. Like this:
============
@variables x y;
D = Differential(x)
....few line later one can do....
D(y) # Differentiate y wrt. x
==========
One can't write on same line
diff(y(x),x)
as normally with say Maple or Mathematica, etc... which
for me is more clear since one sees the expression and the
variable x, on same line. May be there is a way around
this.
Ok, figured it out
==========================
julia> using Symbolics;
julia> @variables x y;
julia> y=x^2*sin(x);
julia> expand_derivatives(Differential(x)(y))
cos(x)*(x^2) + 2x*sin(x)
============================
So
diff(y,x)
translates to
expand_derivatives(Differential(x)(y))
This forces one to type 38 instead of 9 characters. I suspect that the "expand_derivatives()" can be replaced by some general-purpose command
like "evaluate()", however.
Does the system distinguish upper from lower case? Would "differential"
or "Expand_derivatives" thus fail?
Martin.
On 3/4/2021 4:29 PM, Nasser M. Abbasi wrote:
Only thing so far I found which I did not like too much, is
when taking derivative of expression Z w.r.t say x, one
has to define the derivative part w.r.t. x, on a separate line,
then apply it on the expression on next line. Like this:
============
@variables x y;
D = Differential(x)
....few line later one can do....
D(y) # Differentiate y wrt. x
==========
One can't write on same line
diff(y(x),x)
as normally with say Maple or Mathematica, etc... which
for me is more clear since one sees the expression and the
variable x, on same line. May be there is a way around
this.
Ok, figured it out
==========================
julia> using Symbolics;
julia> @variables x y;
julia> y=x^2*sin(x);
julia> expand_derivatives(Differential(x)(y))
cos(x)*(x^2) + 2x*sin(x)
============================
So
diff(y,x)
translates to
expand_derivatives(Differential(x)(y))
This forces one to type 38 instead of 9 characters.
nob...@nowhere.invalid schrieb:
This forces one to type 38 instead of 9 characters.
With respect, your comment makes me suspect that your
computing environment is firmly rooted in the 80/90 years
of the last millennium.
Julia is only used in highly developed editors that suggest
the name you are looking for as soon as you type in the first
or second character. So you have to type only until
the function name is unique. And then hit 'return'.
Usually both together count well below 9 keystrokes.
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 113 |
Nodes: | 8 (1 / 7) |
Uptime: | 50:35:09 |
Calls: | 2,470 |
Calls today: | 1 |
Files: | 8,638 |
Messages: | 1,896,812 |