Comments (6)
Hi @KenZhenLin ,
Thanks for reporting this. You are correct, groebner
should always return a reduced basis, and it clearly fails in this case.
However, here, the situation is a bit subtle: groebner
tries to return polynomials in the same type as they were given in the input.
system
has Int coefficients. It is not possible to construct the reduced basis and preserve the type, so it chooses a normalization where denominators are equal to 1.
The current situation is not ideal.
It would perhaps make sense to return polynomials with rational numbers as coefficients here. Hmm..
from groebner.jl.
To illustrate what I mean consider this:
@polyvar x1 x2
system = [10*x1*x2^2 - 11*x1 + 10,
10*x1^2*x2 - 11*x2 + 10 // 1]
groebner(system)
3-element Vector{Polynomial{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, Graded{LexOrder}, Rational{Int64}}}:
10//11x2 - 10//11x1 - x2² + x1²
1//1 - 11//10x2 - 10//11x2² + 10//11x1x2 + x2³
1//1 - 11//10x1 + x1x2²
But you are right, this behavior seems questionable to me. Also the example in the documentation could be updated.
from groebner.jl.
@sumiya11 Thanks for your answer! It makes sense to me!
I tried that documentation example and indeed it returned the same results as in the documentation. To make sure I understand your point: groebner
returns the unique reduced Gröbner bases, but up to the multiplication by some nonzero constant, is that right?
from groebner.jl.
To make sure I understand your point: groebner returns the unique reduced Gröbner bases, but up to the multiplication by some nonzero constant, is that right?
Yes.
For now, to get a trully reduced basis with DynamicPolynomials.jl, you can make polynomial coefficients rational, as in my example above.
from groebner.jl.
For now, to get a trully reduced basis with DynamicPolynomials.jl, you can make polynomial coefficients rational, as in my example above.
I see, that's a good way!
I do have some codes for which it's better not to change the type, so if I do not make it rational, the groebner
will give me the reduced Gröbner bases or the reduced Gröbner bases multiplied by a nonzero constant, correct?
Thanks!
from groebner.jl.
so if I do not make it rational, the groebner will give me the reduced Gröbner bases or the reduced Gröbner bases multiplied by a nonzero constant, correct?
Yep !
EDIT: and this constant may be different for each polynomial in the basis.
Is this sufficient for your application at the moment ?
from groebner.jl.
Related Issues (20)
- Julia 1.6 support HOT 2
- Integer Type Error HOT 1
- Error with `hashnextindex(::UInt32, ::Int64, ::UInt32)` HOT 3
- Compute basis in parallel HOT 19
- Groebner Basis with parameters HOT 2
- Computing bases up to some degree
- Issues with Computing Groebner Basis for High-Order Runge Kutta Systems with 8 Stages and Order 7 HOT 12
- RecoverableException in Groebner\to18i\src\interface.jl:100 HOT 3
- Possible to make Groebner.jl support 32bit Julia? HOT 1
- Bug in `groebner` in Z_2 HOT 1
- Issues with `normalform` HOT 4
- Huge amount of dynamic dispatch HOT 2
- Does Groebner use checked arithmetic, or does it fail silently if a coefficient overflows? HOT 2
- exponent vector overflow, restarting HOT 8
- Fails to compute correct Gröbner basis on DynamicPolynomials variable with non-standard monomial ordering HOT 7
- Many invalidations
- Calculate transformation matrix HOT 9
- Reduce a Polynomial by a Groebner Basis HOT 2
- llvmcall deprecation warnings HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from groebner.jl.