6
$\begingroup$

Background

DiffResolvent.nb, here gives a method that solve quintic equations using differential equations.

There's a progress to transform polynomial equation into differential equation.

Then he gave an example:

$$x^5-5 x^3+5 x-t = 0$$

The roots of the equation satisfy the differential equation:

$$25 \left(4-t^2\right) x''(t)-25 t x'(t)+x(t)=0$$

Solve that and then can get the roots of quintic equation.

$$x(t)=c_1 \cos \left(\frac{1}{5} \arcsin\frac{t}{2}\right)-c_2 \sin \left(\frac{1}{5} \arcsin\frac{t}{2}\right)$$

We can easily check the results:

eq=x^5-5x^3+5 x-t
resolvent=25 (4-t^2) x''[t]-25 t x'[t]+x[t]

dso=DSolveValue[resolvent==0,x[t],t]/.Sqrt[4-t^2]->I Sqrt[t^2-4]
ser=Series[Evaluate[eq/.x->dso],{t,0,1},Assumptions->t\[Element]Reals];
sol=dso/.Solve[CoefficientList[ser,t]==0,{C[1],C[2]}];

SortBy[x/.NSolve[eq/.t->3,x],Im]
SortBy[sol/.t->3//N//Chop,Im]

I think this can't be solved by Solve.

Root[-3+5 #1-5 #1^3+#1^5&,1]//ToRadicals

Problem

But these codes were written in Mathematica 3.0 and can't run any more.

The behaviour of these functions differs from DifferentialRoot.

There's no intermediate process so I can't find whats wrong with these codes.

Goal

A function which convert the polynomial equation into differential equation.
$\endgroup$
4
  • 1
    $\begingroup$ Best would be to go back to Cockle (1860) and Harley (1862) developed a method for solving algebraic equations based on differential equations. and see how the algorithm really works, as the description in the above notebook and the steps done are very fuzzy at best. $\endgroup$
    – Nasser
    Dec 27, 2017 at 6:14
  • $\begingroup$ Oh my friend, that's hundreds of years. I can't find that even in Google Scholar. $\endgroup$
    – Aster
    Dec 27, 2017 at 6:19
  • 1
    $\begingroup$ I think the method is well described in arxiv.org/ftp/math/papers/0408/0408264.pdf $\endgroup$
    – Gwanguy
    Dec 27, 2017 at 8:34
  • 3
    $\begingroup$ Cockle (1860); Harley (1862) $\endgroup$
    – Michael E2
    Apr 8, 2018 at 13:50

1 Answer 1

9
$\begingroup$

First of all, the code doesn't even work in v3:

enter image description here

After checking the notebook further, I found the code line

algeqn = Collect[Numerator[algeqn], t[rho] ] 

quite suspicious, because

  1. It doesn't seem to match the corresponding description

    We replace powers t[rho]^k with exponents k greater than 4 using the original quintic equation

  2. It actually doesn't do anything because algeqn is an equation but Numerator doesn't have effect on equation (at least from v3).

I believe the algorithm should be coded as e.g.:

eqn = t[rho]^5 - t[rho] - rho == 0

diffeqn = a1 t''''[rho] + a2 t'''[rho] + a3 t''[rho] + 
    a4 t'[rho] + a5 t[rho] + a6  == 0

deriv = Flatten[Table[Solve[D[eqn, {rho, k}], D[t[rho], {rho, k}]], {k, 1, 4}]]

algeqn = Simplify[diffeqn //. deriv]
(* Here's the key point: *)
expr = FixedPoint[
  Collect[#, t@rho] /. t[rho]^i_ /; i > 4 :> (t[rho] + rho) t[rho]^(i - 5) &, 
  Numerator@Together[Subtract @@ algeqn]]

coe = Solve[
  CoefficientList[expr, t[rho]] == 0 // Thread, {a1, a2, a3, a4, a5, a6}]

sol = First@DSolve[diffeqn /. coe // Simplify, t@rho, rho]; // AbsoluteTiming
(* {70.096278, Null} *)
approximation = sol /. HoldPattern@ HypergeometricPFQ[w__] -> 1

eqnapprox = eqn /. approximation

system = (#1 == 0 &) /@ Take[CoefficientList[eqnapprox[[1]], rho], 4]

coeC = Solve[system, C /@ Range@4]

solfinal = sol /. coeC
(* Check: *)
Block[{rho = RandomReal[1, WorkingPrecision -> 16]}, eqn /. solfinal]
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.