Offical webpage: https://cpoussot.github.io/mlf/index.html
The Multivariate Loewner Framework is introduced by A.C. Antoulas, I-V. Gosea and C. Poussot-Vassal in "On the Loewner framework, the Kolmogorov superposition theorem, and the curse of dimensionality" (or arXiv version), in SIAM Review (Research Spotlight), Vol. 67(4), pp. 737-770, November 2025. It allows constructing a
-
$n$ -variable static functions -
$n$ -variable (parametric) dynamical systems
- We propose a generalized realization form for rational functions in
$n$ -variables (for any$n$ ), which are described in the Lagrange basis; - We show that the
$n$ -dimensional Loewner matrix can be written as the solution of a series of cascaded Sylvester equations; - We demonstrate that the required variables to be determined, i.e. the barycentric coefficients, can be computed using a sequence of small-scale 1-dimensional Loewner matrices instead of the large-scale (
$Q\times K$ ,$Q\geq K$ )$n$ -dimensional one, therefore drastically taming the curse of dimensionality, i.e. reducing both the computational effort and the memory needs, and, in addition improving accuracy; - We show that this decomposition achieves variables decoupling; thus connecting the Loewner framework for rational interpolation of multivariate functions and the Kolmogorov Superposition Theorem (KST), restricted to rational functions. The result is the formulation of KST for the special case of rational functions;
- Connections with KAN neural nets follows (detailed in future work).
@article{AGPV:2025,
Author = {A.C. Antoulas and I-V. Gosea and C. Poussot-Vassal},
Title = {On the {Loewner} framework, the {Kolmogorov} superposition theorem, and the curse of dimensionality},
Doi = {10.1137/24M1656657},
Journal = {SIAM Review},
Volume = {64},
Number = {4},
Pages = {737-770},
Year = {2025},
URL = {https://doi.org/10.1137/24M1656657},
}
- mLF webpage
- A.C. Antoulas presentation: BANFF video
- C. Poussot-Vassal presentation: GT Identification video, slides
- C. Poussot-Vassal presentation: regularly updated slides
- Benchmark results and comparison: Tensor-based multivariate function approximation: methods benchmarking and comparison (arXiv:2506.04791)
The code (+mlf folder) provided in this GitHub page is given for open science purpose. Its principal objective is to accompany the SIAM Review paper / arXiv paper / mLF webpage by the authors, thus aims at being educative rather than industry-oriented. Evolutions (numerical improvements) may come with time. Please, cite the reference above if used in your work and do not hesitate to contact us in case of bug of problem when using it. Below we present an example of use, then functions list are given.
Moreover, for more numerically robust and involved implementation and features, we invite reader and users to refer to the MDSPACK library by MOR Digital Systems.
- MATLAB R2023b or later (tested on this version)
- Toolboxes: "Symbolic Math Toolbox" may be used for some functionalities
We provide two examples to test the approach. Refer to SIAM Review paper / arXiv paper for notations and related equations.
First add the path where the +mlf package is.
addpath("location_of_mlf") % Add the location of the +mlf packageThe code demo1.m provides a sample where we use mlf.alg1 and mlf.alg2, standing as implementations of Algorithm 1 and 2 in the above referenced paper. We start by chosing a model in the suggested collection, and construct the tensor along interpolation points.
%%% Pick an example from 1 to 50
CAS = 1
%%% mlf parameters
alg1_tol = 1e-9;
alg2_tol = 1e-9;
%%% Chose model
[H,infoCas] = mlf.examples(CAS)
n = infoCas.n;
p_c = infoCas.p_c;
p_r = infoCas.p_r;
%%% Data tensor/rand
[y,x,dim] = mlf.make_tab_vec(H,p_c,p_r);
tab = mlf.vec2mat(y,dim);Then, one can use Algorithm 1 (direct).
%%% Alg. 1: direct pLoe [A/G/P-V, 2025]
opt = [];
tic;
opt.ord_tol = alg1_tol; % SVD tolerance
opt.method_null = 'svd0'; % null space method
opt.method = 'rec'; % full or recursuve method
[r_loe1r,i1_r] = mlf.alg1(tab,p_c,p_r,opt);
tocThen, one can use Algorithm 2 (iterative - under experimentation).
%%% Alg. 2: iterative pLoe [A/G/P-V, 2025]
opt = [];
tic
opt.tol = alg2_tol; % iteration tolerance
opt.method_null = 'svd0'; % null space method
opt.max_iter = 25; % maximal number of iterations
opt.method = 'rec'; % full or recursuve method
[r_loe2r,i2_r] = mlf.alg2(tab,p_c,p_r,opt);
tocPlease send any comment to C. Poussot-Vassal (charles.poussot-vassal@onera.fr) if you want to report any bug or user experience issues.
This deposit consitutes a research code that accompany the paper mentionned above. It is not aimed to be included in any third party software without the consent of the authors. Authors decline responsabilities in case of problem when applying the code.
Notice also that pathological cases may appear. A more advanced and professional code, to deal with practical and theoretical issues/limitations is currently under development by the authors.
