# Relation between different basis of solutions of an ODE

Take a linear ordinary differential equation of the form : $$\sum_{k=0}^n p_{n-k}(z)(z (z-1))^k \partial_k f = 0$$ Where $p_i$ is a polynomial fraction of degree $i$, without zeros at $0$ or $1$, $p_{0} = 1$

Using the Frobenius method, we can find a basis of solution around $0$ (a regular singularity) of the form $f_i(z) = z^{\gamma_i} a_i(z)\ \ i \in \{1 \cdots l \}$, with $a_i$ a power serie at $0$. The $\gamma_i$ are solutions of a polynomial equation, and I'm assuming that no pair of them is separated by an integer (so the solutions are assured to be independent).

The same can be done around $1$ ($g_i(z)$) and around $\infty$ ($h_i(z)$), with the same assumption. So in the end I have three basis of solutions, of size $l$.

I would like to know if there's a way to find the coefficients of the matrices linking those three basis (without having to solve the equation). Explicitely, I'm looking for $A$ and $B$ in : $$f_i = A_i^j g_j, \quad f_i = B_i^j h_j$$

To give an example, if the equation is of order $2$, we obtain an hypergeometric equation, whose solutions are hypergeometric functions. The coefficients of the matrices $A$ and $B$ are then ratios of gamma functions. Generalized hypergeometric equations (a subclass of the equations above) behave in the same way (ratio of gamma function).

Any insight is appreciated, thanks in advance,

I don't know of any general method to do it exactly. More specifically, I don't believe it is know whether testing if such a connection constant is zero is decidable.

However, it is possible to find rigorous numerical enclosures of the connection constants. In fact, I am developing code that does exactly that for the SageMath computer algebra system. At the moment, my implementation requires that all the singular points you want to connect are regular and finite—but of course, if you have a regular singular point at infinity, nothing prevents you from transforming the equation to move it to finite distance before running the numerical connection code.

Here is a simple example of how to use the code to compute connection matrices:

sage: from ore_algebra import *
sage: Dops, x, Dx = DifferentialOperators()
sage: diff_op = x^2*(x-1)^2*Dx^2 + 1
sage: diff_op.numerical_transition_matrix([0, 1])
[                      [+/- 2.59e-30] + [+/- 6.72e-30]*I  [+/- 2.59e-30] + [-0.065828721011296651 +/- 3.44e-19]*I]
[  [+/- 3.51e-28] + [-15.190937703747780 +/- 1.40e-16]*I                        [+/- 3.51e-28] + [+/- 9.78e-28]*I]


See the associated paper Rigorous Numerical Evaluation of D-Finite Functions in SageMath [which I can't link to due to MO's reputation constraints for unregistered users...] for more examples and some references.

You will also find an older implementation in Maple on my web page. However, unless you really need to work with Maple, I strongly advise using the SageMath version.

Hope this helps!