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.

  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.


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)
[-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)
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