-
Notifications
You must be signed in to change notification settings - Fork 157
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature Completeness Against SymPy #59
Comments
I would suggest adding an assumption/refine system to this list as well:
Edit: and the opposite direction Edit: Actually, SymbolicUtils might be a better home for assumptions and |
Symbolic solution of nonlinear equations seems to be missing from the list. |
That's kind of overlapping with ModelingToolkit, though we may want functionality here and then make |
AFAIK The logic and relational parts of sympy are not mentioned. |
Those should be inherited from Julia? |
That's clearly done in Julia if we consider the -hacky- reimpl of multidispatch in Simpy However, I was thinking about their support of boolean algebra with
For the relational part, please note its two meanings
Sympy has some support for both (1) can help to bring piecewise functions, linear programming into declarative symbolic modeling (2) can help to reconciliate computational vs declarative def of function. there may be some static dispatch optimization good to catch there More generally
My 2cts |
Support for Boolean algebra (DNF, CNF, etc) would be great to have. Could come be useful for logical constraints in a JuMP extension. |
Indeed, the JuMP extension piece is the OptimizationSystem in ModelingToolkit.jl, but it does need some Symbolics love to finish it. |
Nice to see the optimization systems in ModelToolkit.jl. |
Seems like a great use case for this. |
Do you want to add "Asymptotic solutions of differential equation, Asymptotic Expansion of Integral" in Symbolics? |
Symbolics currently has |
Let me state the question exactly:
A example of the Pattern replacement is to replace all β variables with some values can I do something as following?
The output should be
|
Yes, you can: |
very nice! |
This is actually a good,idea, we can have @YingboMa what do you think? |
Is there any interest in a separate tracking issue for feature completeness vs. MatLab symbolic toolbox, or adding some of those things to this issue? SymPy covers many of the functions, but MatLab has more features for at least a handful of things. It seems like the vision for Julia is to lie somewhere between the two languages in terms of capability, so maybe no harm to add anything missing to a "someday" goal. MatLab symbolic full list of their features is here https://www.mathworks.com/help/symbolic/mathematics.html. One specific thing I'd advocate for as far as steering is good interoperability with |
Also, a question - how does/should |
As much as possible. There's no need to rewrite what we can just use. In fact, we use Polynomials.jl all of the time already.
That's already happening. In fact, given our heritage of being based around SciML stuff, controls has been one of the big reasons for having this library and one of the big feature drivers.
Indeed if there's anything in this list that SymPy doesn't have, it would be nice to list that. |
I am the original author of galgebra which implements Geometric Algebra in python using sympy to perform the scalar algebra symbolics - https://galgebra.readthedocs.io/en/latest/ I am exploring writing a similar package in Julia. What I could use to get started are examples of non-commutative symbols. Can you point me in the right direction. I have installed the Symbolics and SymbolicUtils packages. |
Is this useful for you? https://github.com/serenity4/SymbolicGA.jl |
One of the things galgebra could do was have a fully populated metric
tensor (not limited to orthogonal systems). Is that implemented in
SymbolicGA.jl?
…On 5/15/23 6:00 PM, Luis Alberto León Andonayre wrote:
I am the original author of galgebra which implements Geometric
Algebra in python using sympy to perform the scalar algebra
symbolics -
https://galgebra.readthedocs.io/en/latest/
I am exploring writing a similar package in Julia. What I could
use to get started are examples of non-commutative symbols. Can
you point me in the right direction. I have installed the
Symbolics and SymbolicUtils packages.
Is this useful for you? https://github.com/serenity4/SymbolicGA.jl
—
Reply to this email directly, view it on GitHub
<#59 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AN3TFRGO6ATQYILA7QHJD2TXGKRQVANCNFSM4YJ66AJA>.
You are receiving this because you commented.Message ID:
***@***.***>
|
Unfortunately, no, it supports only Euclidean or pseudo-Euclidean spaces (by design, it seems). When I started https://github.com/pygae/GAlgebra.jl back in 2019, I intended to write a galgebra equivalent in pure Julia, in a progressive porting approach by first relying on the python version, and gradually implement them all in Julia. I evaluated a bit but symbolic features in Julia was far from complete per the need to implement galgebra which covers not only general-metric GA but also Geometric Calculus. These features are still quite unique in GA community although there're so many new GA libraries as they have different focuses. The situation is quite different now, I can compile a separate Feature Completeness list for your reference when I have some time. I believe most of the hacks and boilerplate in galgebra can be greatly simplified. We can continue the discussion here: pygae/GAlgebra.jl#10 . |
@abrombo the next version 0.9 of Grassmann.jl will support the fully general metric tensor symbolically, this is the main remanining final feature before the final release of v1.0 Grassmann.jl is released, I also have my own implementation of symbolic polynomial algebra implemented on top of FieldAlgebra.jl which is used in my Similitude.jl package. After Grassmann.jl v1.0 is released, it will be able to handle fully metric tensor symbolically as well. Grassmann.jl is commonly accepted as the best foundation for geometric algebra in Julia. If we take a look at the GitHub stars of Julia algebra packages, Grassmann.jl is part of the central tree of it: https://anvaka.github.io/map-of-github/#11.34/27.099/-10.6268 Despite the fact that the official Julia community ignores me, pretends I don't exist, and even bans me, yet Grassmann.jl is part of the central branch of computer algebra packages in the Julia language. |
I think it should be added to this list the algebraic resolution of differential equations, e.g.: julia> using SymPy
julia> @syms x
(x,)
julia> y = sympy.Function("y")
PyObject y
julia> result = dsolve(sympy.Derivative(y(x), x) - 2*y(x)/x)
2
y(x) = C₁⋅x |
Where do contributors coordinate on these? I don't see any projects or discussions. |
There are lots of random discussions mostly focused on single subtopics. Many discussions on Slack and Zulip. |
Note that representation and symbolic solving of systems like ODEs, along with physics is left as the domain for ModelingToolkit.jl. Cryptography is out of scope.
┆Issue is synchronized with this Trello card by Unito
The text was updated successfully, but these errors were encountered: