I couldn’t write a blog post last week so including progress of week 8 and 9 both here.

**Week 8**

I continued working on the PR #11360. We added functionality to store a different type of initial condition for regular singular points other than the usual `[y(0), y'(0), ...]`

. The exact format is described here in master, though it is changed to a more elegant form in #11422. This type of initial condition provides more information at regular singular points and is helpful in converting to expressions. Examples on how to use it:

In [22]: expr_to_holonomic(sin(x)/x**2, singular_ics={-1: [1, 0, -1]}).to_expr() Out[22]: sin(x) ────── 2 x

I also added method to compute this type of initial condition for algebraic functions of the form `P^r`

, for some Polynomial `P`

and a Rational Number `R`

.

In [25]: expr_to_holonomic(sqrt(x**2+x)) Out[25]: HolonomicFunction((-x - 1/2) + (x**2 + x)Dx, x), {1/2: [1]} In [26]: _25.to_expr() Out[26]: _______ √x⋅╲╱ x + 1

After that I made some changes in `to_meijerg()` to return the polynomial itself if the `meijerg` function represents a polynomial instead of raising `NotImplementedError`.

In [40]: expr_to_holonomic(4*x**3 + 2*x**2, lenics=3).to_meijerg().expand() Out[40]: 3 2 4⋅x + 2⋅x

I also added code to return the general solution in `_frobenius()` if none of the roots of indicial equation differ by an integer.

# Week 9

I wasn’t able to do much this week because my college started. I travelled back and had some college related stuff to do.

I opened #11422 and first added a basic method to determine the domain for polynomial coefficients in the differential equation.

In [77]: expr_to_holonomic(sqrt(y*x+z), x=x, lenics=2).to_expr() Out[77]: _________ ╲╱ x⋅y + z In [78]: expr_to_holonomic(1.1329138213*x) Out[78]: HolonomicFunction((-1.1329138213) + (1.1329138213*x)Dx, x), f(0) = 0

Then I added support for the new type of initial condition on regular singular points in `.integrate()`

.

In [83]: expr_to_holonomic(sin(x)/x**3, singular_ics={-2: [1, 0, -1]}).integrate(x).to_expr() Out[83]: ⎛ 2 ⎞ -⎝x ⋅Si(x) + x⋅cos(x) + sin(x)⎠ ──────────────────────────────── 2 2⋅x

Also added support for the same in addition.

In [6]: expr_to_holonomic(sqrt(x)) + expr_to_holonomic(sqrt(2*x)) Out[6]: HolonomicFunction((-1/2) + (x)Dx, x), {1/2: [1 + sqrt(2)]} In [7]: _6.to_expr() Out[7]: √x⋅(1 + √2)

I plan to continue my work on this PR and add more support for this initial condition.