Sparse interpolation
using MultivariateSeries
A sparse polynomial in 3 variables
X = @ring x1 x2 x3
f = 6.7x1^4*x2^5*x3 + 10.2x1^2*x2*x3^3 - 3.4x1*x2^2*x3
$ 6.7x1^{4}x2^{5}x3 + 10.2x1^{2}x2x3^{3} - 3.4x1x2^{2}x3 $
The series of moments $f(\zeta^{\alpha})$ for $|\alpha|\leq 3$.
zeta = fill(0.9, length(X))
sigma = series(f, zeta, X,3)
13.499999999999998 + 9.59787dx1 + 10.382283000000001dx2 + 10.405800000000001dx3 + 6.8223503070000024dx1^2 + 7.5529172763000005dx1*dx2 + 7.225281000000001dx1*dx3 + 8.36740554867dx2^2 + 7.774274700000001dx2*dx3 + 8.093698200000002dx3^2 + 4.834376094422702dx1^3 + 5.495308104980431dx1^2dx2 + 4.995745656300002dx1^2dx3 + 6.217299094482389dx1*dx2^2 + 5.5261037486700015dx1*dx2*dx3 + 5.472820242000002dx1*dx3^2 + 7.008371185034148dx2^3 + 6.117862993803001dx2^2dx3 + 5.852477610000001dx2*dx3^2 + 6.357388987800002dx3^3
Computing its decomposition using svd
w, Xi = decompose(sigma);
yields the coefficients of the terms of f as the weights $\omega$, and the exponents of the monomials of f as the $\log_{\zeta}$ of the points $\Xi$:
w
3-element Vector{Float64}:
10.200000000000768
-3.400000000000344
6.699999999999744
Ex = log(Xi, zeta)
3×3 Matrix{Float64}:
2.0 1.0 4.0
1.0 2.0 5.0
3.0 1.0 1.0