Decomposition
PolyExp.svd_decompose
— Function.svd_decompose(sigma :: Series{T}, eps :: Float64 = 1.e-6)
Decompose the series $σ$ as a weighted sum of exponentials. Return $ω$, $Ξ$ where
$ω$ is the vector of weights,
$Ξ$ is the matrix of frequency points, stored per row.
The list of monomials of degree $\leq {d-1 \over 2}$ are used to construct the Hankel matrix, where $d$ is the maximal degree of the moments in $σ$.
The optional argument $eps$ is the precision used to compute the numerical rank. Its default value is $1.e-6$.
svd_decompose(sigma :: Series{T}, r::Int64)
Decompose the series $σ$ assuming its rank is r.
PolyExp.ortho_decompose
— Function. ortho_decompose(sigma::Series{T},L) -> Vector{T}, Matrix{T}
Decompose the series $\sigma$ as a weigthed sum of exponentials using the moments of the monomials in the list L.
Return w, $\Xi$ where
w is the vector of weights,
$\Xi$ is the matrix of frequency points, stored per row.
Example
julia> s
4.0 + 5.0dx1 + 7.0dx2 + 5.0dx1^2 + 11.0dx1*dx2 + 13.0dx2^2 - 1.0dx1^3 + 17.0dx1^2*dx2 + 23.0dx1*dx2^2 + 25.0dx2^3 - 31.0dx1^4 + 23.0dx1^3*dx2 + 41.0dx1^2*dx2^2 + 47.0dx1*dx2^3 + 49.0dx2^4
julia> ortho_decompose(s,L4)
(Complex{Float64}
[-1.000000000000012 - 0.0im,1.9999999999999993 + 0.0im,3.000000000000007 - 0.0im],
2x3 Array{Complex{Float64},2}:x
3.0+0.0im 1.0+0.0im 2.0+0.0im
1.0+0.0im 1.0+0.0im 2.0+0.0im)
PolyExp.bbs
— Function.B,K,D,P,C = bbs(sigma::Series{R}, L, eqzero = is_zero)
Compute the border basis of the series $σ$ from the moments indexed by the list of monomials L. It outputs:
B the monomial basis
K the border relations
D the border monomials
P the orthogonal basis
C the dual basis