Comments (8)
The code is for finding the eigenvalues of a family of matrices. Here it is, in case you're interested:
# An attempt at finding the eigenvalue with largest magnitude of some
# large matrices defined by a small number of parameters. Inspired by
# this post on Julia's Discourse:
#
# https://discourse.julialang.org/t/strategy-for-finding-eigenvalues-of-an-infinite-banded-matrix/106513/3?u=nsajko
#
# The idea is to use the characteristic polynomial and other known
# relations for constructing a system of polynomial equations, which
# could perhaps be solved using Gröbner bases, as implemented in the
# Groebner.jl Julia package, given enough additional relations.
#
# The relations that are currently in use are *not* restrictive enough
# for obtaining a finite set of solutions for the eigenvalues. Trying
# to think of other relations to add to the system.
# In Mason's problem, the parameters are all negative. Here they're all
# positive instead. This is OK because, for any matrix `M`, the
# eigenvalues of `-M` are just the eigenvalues of `M`, but with
# all signs reversed.
# Parameters, they define the elements of the matrix: `a`, `b`, `c₀`,
# `c₁`, `c₂`. `x` is the indeterminate representing an eigenvalue.
module EigenMasonEquations
import LinearAlgebra, LinearAlgebraX, MultivariatePolynomials
const MP = MultivariatePolynomials
const NT = NTuple{n,Any} where {n}
square(x) = x*x
"""
An equation that represents the inequality `0 ≤ target`. `scratch`
should be a dedicated variable, used just in this equation.
"""
is_ordered_after_zero(::typeof(≤), target, scratch) =
square(scratch) - target
"""
An equation that represents the inequality `0 < target`. `scratch`
should be a dedicated variable, used just in this equation.
"""
is_ordered_after_zero(::typeof(<), target, scratch) =
square(scratch) * target - true
is_ordered_after_zero(
r::R, ::Type{T}, target, scratch,
) where {R<:Union{typeof(≤),typeof(<)}, T} =
is_ordered_after_zero(r, target, scratch + zero(T))
"""
An equation that represents the inequality `l o r`. `scratch`
should be a variable dedicated just for this equation.
"""
are_ordered(
o::R, ::Type{T}, l, r, scratch,
) where {R<:Union{typeof(≤),typeof(<)}, T} =
is_ordered_after_zero(o, T, r - l, scratch)
"""
An equation that represents the Laguerre–Samuelson inequality for the
polynomial `p` with indeterminate `x`.
`scratch` should be a variable dedicated just for this equation.
"""
function laguerre_samuelson_inequality(::Type{I}, p, x, scratch) where {I}
n = MP.maxdegree(p, x)
coef = let p = p, x = x
i -> MP.coefficient(p, x^i, (x,))
end
isone(coef(n)) || error("polynomial not monic")
a_nm1 = coef(n - 1)
a_nm2 = coef(n - 2)
c0 = I(n)::I
c1 = I(n - 1)::I
c2 = I(2*n)::I
are_ordered(
≤, I,
square(c0*x + a_nm1),
c1*(c1*square(a_nm1) - c2*a_nm2),
scratch,
)
end
uniform_scaling_matrix(x, n) = (LinearAlgebra.Diagonal ∘ fill)(x, n)
function characteristic_polynomial(m, x)
n = LinearAlgebra.checksquare(m)
LinearAlgebraX.detx(m - uniform_scaling_matrix(x, n))
end
symmetric_setindex!(m::LinearAlgebra.Symmetric, v, i, j) =
m[begin + i, begin + j] = v
function symmetric_setindex!(m::AbstractMatrix, v, i, j)
m[begin + i, begin + j] = v
m[begin + j, begin + i] = v
end
function symmetric_set_diagonal!(m, j, x)
n = LinearAlgebra.checksquare(m)
(j ∈ 0:(n - 1)) || error("`j` out of bounds")
for i ∈ 0:(n - 1 - j)
symmetric_setindex!(m, x, i, i + j)
end
end
new_square_zero_matrix(::Type{T}, n) where {T} = zeros(T, n, n)
function the_matrix(::Type{I}, n, ab::NT{2}, c::NT{m}) where {I, m}
T = (eltype ∘ promote)(zero(I), ab..., c...)
ret = new_square_zero_matrix(T, n)
c! = let r = ret, c = c
i -> symmetric_set_diagonal!(r, 2*i, c[begin + i])
end
for i ∈ Base.OneTo(m)
c!(i - 1)
end
(a, b) = ab
if 0 < n
symmetric_setindex!(ret, a, 0, 0)
if 1 < n
symmetric_setindex!(ret, a, 1, 1)
symmetric_setindex!(ret, b, 0, 1)
end
end
LinearAlgebra.issymmetric(ret) || error("matrix not symmetric")
S = LinearAlgebra.Symmetric
S(ret)::S{T}
end
the_polynomial(::Type{I}, n, x, ab::NT{2}, c::NT{m}) where {I, m} =
characteristic_polynomial(the_matrix(I, n, ab, c), x)
struct Variables{
m, X, AB<:NT{2}, CF, CR<:NT{m}, SAB<:NT{2}, SCF, SCR<:NT{m},
LS, OA, OC, OAB, OBA, OCC1<:NT{m}, OCC2<:Tuple,
}
x::X
ab::AB
c_first::CF
c_rest::CR
sign_ab::SAB
sign_c_first::SCF
sign_c_rest::SCR
laguerre_samuelson::LS
order_a::OA
order_c::OC
order_ab::OAB
order_ba::OBA
order_cc1::OCC1
order_cc2::OCC2
end
function the_equations(
::Type{I}, n, vars::Variables{c_rest_len},
) where {I, c_rest_len}
is_pos = (l, s) -> is_ordered_after_zero(<, I, l, s)
greater_than = (l, r, s) -> are_ordered(<, I, l, r, s)
greater_or_eq = (l, r, s) -> are_ordered(≤, I, l, r, s)
p = the_polynomial(I, n, vars.x, vars.ab, (vars.c_first, vars.c_rest...))
s_ab = map(is_pos, vars.ab, vars.sign_ab)
s_c_first = is_pos(vars.c_first, vars.sign_c_first)
s_c_rest = map(is_pos, vars.c_rest, vars.sign_c_rest)
ls = laguerre_samuelson_inequality(I, p, vars.x, vars.laguerre_samuelson)
# Theorem 4.8 from *Eigenvalues of Nonnegative Symmetric Matrices*, 1974,
# Miroslav Fiedler, 10.1016/0024-3795(74)90031-7
#
# Only necessarily holds for the greatest eigenvalue; i.e., if we assume
# these equations hold, we're potentially losing all other eigenvalues.
o_a = greater_or_eq(first(vars.ab), vars.x, vars.order_a)
o_c = greater_or_eq(vars.c_first , vars.x, vars.order_c)
mag_fac_small = I(2)
mag_fac_big = I(1000)
# Some equations specific to Mason's problem
#
# * b < a
# * a,b have similar magnitudes: a ≤ mag_fac_small*b
# * c_first is of greater magnitude than any of c_rest
# * all c_rest values have similar magnitudes
occ1 = let ge = greater_or_eq, cf = vars.c_first, cr = vars.c_rest,
cc = vars.order_cc1
i -> ge(mag_fac_big*(cr[i]), cf, cc[i])
end
occ2 = let ge = greater_or_eq, cr = vars.c_rest, cc = vars.order_cc2
function(i)
j = i - 1
k = j >>> true
a = cr[begin + k]
b = cr[begin + k + 1]
if iseven(j)
ge(a, mag_fac_small*b, cc[i])
else
ge(b, mag_fac_small*a, cc[i])
end
end
end
(va, vb) = vars.ab
spec = (
greater_than(vb, va, vars.order_ab),
greater_or_eq(va, mag_fac_small*vb, vars.order_ba),
ntuple(occ1, Val(c_rest_len))...,
ntuple(occ2, Val(2*(c_rest_len - 1)))...,
)
ret = (p, s_ab..., s_c_first, s_c_rest..., ls, o_a, o_c, spec...)
collect(ret)
end
end
import Groebner, DynamicPolynomials, TypedPolynomials
const GRB = Groebner
const POL = DynamicPolynomials
const EME = EigenMasonEquations
my_groebner_(::Type{I}, n, vars; kwargs...) where {I} =
GRB.groebner((collect ∘ EME.the_equations)(I, n, vars); kwargs...)
function default_vars()
POL.@polyvar x c₀ c₀ₛ l aₒ c₀ₒ abₒ baₒ
v_ab = POL.@polyvar a b
v_c_rest = POL.@polyvar c₁ c₂
v_sign_ab = POL.@polyvar aₛ bₛ
v_sign_c = POL.@polyvar c₁ₛ c₂ₛ
v_cc1 = POL.@polyvar q₁ q₂
v_cc2 = POL.@polyvar r₁ r₂
EME.Variables(
x, v_ab, c₀, v_c_rest, v_sign_ab, c₀ₛ, v_sign_c, l, aₒ, c₀ₒ,
abₒ, baₒ, v_cc1, v_cc2,
)
end
my_groebner_(::Type{I}, n; kwargs...) where {I} = my_groebner_(I, n, default_vars(); kwargs...)
my_groebner_2(::Type{I}, n) where {I} = my_groebner_(I, n, ordering = GRB.DegLex())
my_groebner_3(::Type{I}, n) where {I} = my_groebner_(I, n, ordering = GRB.DegRevLex())
my_groebner(n) = my_groebner_3(BigInt, n)
from groebner.jl.
In this case I "fixed" the issue by changing to a different term ordering (the computation is now done instantly!), however the questions still stand.
from groebner.jl.
Does this mean that my computation is restarting completely, from scratch?
Yes.
I don't know what is an exponent vector, but I wonder whether there's a way to increase the exponent size in advance, before starting the computation. Otherwise there's a lot of wasted computational effort, if the computation restarts multiple times each time I start the process.
At the moment there is no such feature.
Note however: seeing this warning message can often mean that the problem is out of reach for Groebner.jl (I am guessing you use Lex
term ordering?).
The algorithm in Groebner.jl is very much more efficient for DegLex
and DegRevLex
term orderings. If these term orderings are sufficient for your task, I would very much recommend using DegRevLex
.
from groebner.jl.
I am guessing you use Lex term ordering?
No, the error was with DegLex
, but afterwards I switched to DegRevLex
, which makes groebner
finish almost instantly.
The algorithm in Groebner.jl is very much more efficient for DegLex and DegRevLex term orderings.
Thanks, good to know.
from groebner.jl.
I am guessing you use Lex term ordering?
No, the error was with DegLex, but afterwards I switched to DegRevLex, which makes groebner finish almost instantly.
Ah.. it is interesting that it is slow with DegLex
. Does this polynomial system come from some specific application?
from groebner.jl.
Thanks for sharing the example! I will try to look at it this weekend.
Unfortunately at the moment if I do my_groebner(5)
I get this error:
ERROR: LoadError: polynomial not monic
Stacktrace:
[1] error(s::String)
@ Base .\error.jl:35
[2] laguerre_samuelson_inequality(#unused#::Type{BigInt}, p::DynamicPolynomials.Polynomial{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}, BigInt}, x::DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, scratch::DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}})
@ Main.EigenMasonEquations C:\data\projects\gbgb\Groebner.jl\experimental\linear-algebra\stuff:48
[3] the_equations(#unused#::Type{BigInt}, n::Int64, vars::Main.EigenMasonEquations.Variables{2, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}})
@ Main.EigenMasonEquations C:\data\projects\gbgb\Groebner.jl\experimental\linear-algebra\stuff:154
[4] call_composed(fs::Tuple{typeof(Main.EigenMasonEquations.the_equations)}, x::Tuple{DataType, Int64, Main.EigenMasonEquations.Variables{2, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}}}, kw::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ Base .\operators.jl:1035
[5] call_composed(fs::Tuple{typeof(collect), typeof(Main.EigenMasonEquations.the_equations)}, x::Tuple{DataType, Int64, Main.EigenMasonEquations.Variables{2, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}}}, kw::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ Base .\operators.jl:1034
[6] (::ComposedFunction{typeof(collect), typeof(Main.EigenMasonEquations.the_equations)})(::Type, ::Vararg{Any}; kw::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ Base .\operators.jl:1031
[7] ComposedFunction
@ .\operators.jl:1031 [inlined]
[8] my_groebner_(::Type{BigInt}, n::Int64, vars::Main.EigenMasonEquations.Variables{2, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}, Tuple{DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}, DynamicPolynomials.Variable{DynamicPolynomials.Commutative{DynamicPolynomials.CreationOrder}, MultivariatePolynomials.Graded{MultivariatePolynomials.LexOrder}}}}; kwargs::Base.Pairs{Symbol,
Groebner.DegRevLex{Nothing}, Tuple{Symbol}, NamedTuple{(:ordering,), Tuple{Groebner.DegRevLex{Nothing}}}})
@ Main C:\data\projects\gbgb\Groebner.jl\experimental\linear-algebra\stuff:208
[9] my_groebner_
@ C:\data\projects\gbgb\Groebner.jl\experimental\linear-algebra\stuff:208 [inlined]
[10] #my_groebner_#4
@ C:\data\projects\gbgb\Groebner.jl\experimental\linear-algebra\stuff:237 [inlined]
[11] my_groebner_
@ C:\data\projects\gbgb\Groebner.jl\experimental\linear-algebra\stuff:237 [inlined]
[12] my_groebner_3
@ C:\data\projects\gbgb\Groebner.jl\experimental\linear-algebra\stuff:241 [inlined]
[13] my_groebner(n::Int64)
@ Main C:\data\projects\gbgb\Groebner.jl\experimental\linear-algebra\stuff:243
[14] top-level scope
@ C:\data\projects\gbgb\Groebner.jl\experimental\linear-algebra\stuff:245
in expression starting at C:\data\projects\gbgb\Groebner.jl\experimental\linear-algebra\stuff:245
from groebner.jl.
Ah, yes, the n
has to be even and at least six.
from groebner.jl.
Oh, I see, thanks
from groebner.jl.
Related Issues (20)
- Fails to compute correct Gröbner basis on DynamicPolynomials variable with non-standard monomial ordering HOT 7
- Many invalidations
- groebner does not return leading coefficient 1 HOT 6
- Calculate transformation matrix HOT 9
- Reduce a Polynomial by a Groebner Basis HOT 2
- llvmcall deprecation warnings HOT 1
- 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
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.