<?xml version="1.0" encoding="UTF-8"?>
<Worksheet><Version major="6" minor="1"/><View-Properties><Zoom percentage="100"/></View-Properties><Styles><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Heading 2" rightmargin="0.0" spaceabove="8.0" spacebelow="2.0"/><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Heading 1" rightmargin="0.0" spaceabove="8.0" spacebelow="4.0"/><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Normal" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="centred" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="Normal256" rightmargin="0.0" spaceabove="0.0" spacebelow="0.0"/><Layout alignment="left" firstindent="0.0" leftmargin="0.0" linebreak="space" linespacing="0.0" name="AC - Disclaimer" rightmargin="0.0" spaceabove="12.0" spacebelow="0.0"/><Font background="[0,0,0]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="Heading 2" readonly="false" size="14" underline="false"/><Font background="[0,0,0]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="Heading 1" readonly="false" size="18" underline="false"/><Font background="[0,0,0]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="AC - Disclaimer" readonly="false" size="9" underline="false"/><Font background="[0,0,0]" family="Times New Roman" name="2D Comment" underline="false"/><Font background="[0,0,0]" family="Times New Roman" name="Page Number" underline="false"/><Font background="[0,0,0]" bold="true" executable="true" family="Monospaced" foreground="[255,0,0]" name="Maple Input"/><Font background="[0,0,0]" italic="true" name="_cstyle345"/><Font background="[0,0,0]" italic="true" name="_cstyle344"/><Font background="[0,0,0]" italic="true" name="_cstyle343"/><Font background="[0,0,0]" bold="true" name="_cstyle342"/><Font background="[0,0,0]" bold="true" name="_cstyle341"/><Font background="[0,0,0]" italic="true" name="_cstyle340"/><Font background="[0,0,0]" bold="true" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="ParagraphStyle2" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="ParagraphStyle1" readonly="false" size="18" underline="false"/><Font background="[0,0,0]" italic="true" name="_cstyle339"/><Font background="[0,0,0]" bold="true" name="_cstyle338" size="24"/><Font background="[0,0,0]" bold="true" name="_cstyle337" size="14"/><Font background="[0,0,0]" italic="true" name="_cstyle336"/><Font background="[0,0,0]" bold="true" name="_cstyle335" size="14"/><Font background="[0,0,0]" bold="true" name="_cstyle334"/><Font background="[0,0,0]" bold="true" name="_cstyle333"/><Font background="[0,0,0]" bold="true" name="_cstyle332" size="14"/><Font background="[0,0,0]" bold="true" name="_cstyle331" size="14"/><Font background="[0,0,0]" bold="true" name="_cstyle330" size="14"/><Font background="[0,0,0]" italic="true" name="_cstyle299"/><Font background="[0,0,0]" name="_cstyle298" size="18"/><Font background="[0,0,0]" italic="true" name="_cstyle297"/><Font background="[0,0,0]" italic="true" name="_cstyle296"/><Font background="[0,0,0]" italic="true" name="_cstyle295"/><Font background="[0,0,0]" italic="true" name="_cstyle294"/><Font background="[0,0,0]" italic="true" name="_cstyle293"/><Font background="[0,0,0]" italic="true" name="_cstyle292"/><Font background="[0,0,0]" bold="true" name="_cstyle291" size="14"/><Font background="[0,0,0]" bold="true" name="_cstyle290" size="14"/><Font background="[0,0,0]" bold="true" name="_cstyle329" size="14"/><Font background="[0,0,0]" bold="true" italic="true" name="_cstyle328" size="14"/><Font background="[0,0,0]" bold="true" name="_cstyle327" size="18"/><Font background="[0,0,0]" bold="true" name="_cstyle326" size="24"/><Font background="[0,0,0]" bold="true" name="_cstyle325"/><Font background="[0,0,0]" italic="true" name="_cstyle324"/><Font background="[0,0,0]" italic="true" name="_cstyle323"/><Font background="[0,0,0]" bold="true" name="_cstyle322"/><Font background="[0,0,0]" italic="true" name="_cstyle321"/><Font background="[0,0,0]" bold="true" name="_cstyle320"/><Font background="[0,0,0]" italic="true" name="_cstyle289"/><Font background="[0,0,0]" italic="true" name="_cstyle288"/><Font background="[0,0,0]" italic="true" name="_cstyle287"/><Font background="[0,0,0]" italic="true" name="_cstyle286"/><Font background="[0,0,0]" italic="true" name="_cstyle285"/><Font background="[0,0,0]" italic="true" name="_cstyle284"/><Font background="[0,0,0]" bold="true" italic="true" name="_cstyle283"/><Font background="[0,0,0]" bold="true" name="_cstyle282" size="14"/><Font background="[0,0,0]" bold="true" name="_cstyle281" size="14"/><Font background="[0,0,0]" italic="true" name="_cstyle280"/><Font background="[0,0,0]" italic="true" name="_cstyle319"/><Font background="[0,0,0]" italic="true" name="_cstyle318"/><Font background="[0,0,0]" italic="true" name="_cstyle317"/><Font background="[0,0,0]" italic="true" name="_cstyle316"/><Font background="[0,0,0]" bold="true" name="_cstyle315"/><Font background="[0,0,0]" italic="true" name="_cstyle314"/><Font background="[0,0,0]" bold="true" name="_cstyle313"/><Font background="[0,0,0]" italic="true" name="_cstyle312"/><Font background="[0,0,0]" bold="true" name="_cstyle311"/><Font background="[0,0,0]" italic="true" name="_cstyle310"/><Font background="[0,0,0]" italic="true" name="_cstyle279"/><Font background="[0,0,0]" bold="true" name="_cstyle278" size="14"/><Font background="[0,0,0]" name="_cstyle277" size="14"/><Font background="[0,0,0]" name="_cstyle276" size="14"/><Font background="[0,0,0]" name="_cstyle275" size="14"/><Font background="[0,0,0]" name="_cstyle274" size="14"/><Font background="[0,0,0]" italic="true" name="_cstyle273"/><Font background="[0,0,0]" name="_cstyle272" size="18"/><Font background="[0,0,0]" italic="true" name="_cstyle271"/><Font background="[0,0,0]" italic="true" name="_cstyle270"/><Font background="[0,0,0]" bold="true" name="_cstyle309"/><Font background="[0,0,0]" bold="true" name="_cstyle308"/><Font background="[0,0,0]" name="_cstyle307" size="18"/><Font background="[0,0,0]" italic="true" name="_cstyle306"/><Font background="[0,0,0]" italic="true" name="_cstyle305"/><Font background="[0,0,0]" name="_cstyle304" size="18"/><Font background="[0,0,0]" italic="true" name="_cstyle303"/><Font background="[0,0,0]" italic="true" name="_cstyle302"/><Font background="[0,0,0]" bold="true" name="_cstyle301" size="14"/><Font background="[0,0,0]" bold="true" name="_cstyle300" size="14"/><Font background="[0,0,0]" italic="true" name="_cstyle269"/><Font background="[0,0,0]" italic="true" name="_cstyle268"/><Font background="[0,0,0]" italic="true" name="_cstyle267"/><Font background="[0,0,0]" name="_cstyle266" size="18"/><Font background="[0,0,0]" name="_cstyle265" size="18"/><Font background="[0,0,0]" bold="true" name="_cstyle264" size="18"/><Font background="[0,0,0]" italic="true" name="_cstyle263"/><Font background="[0,0,0]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="Normal" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" bold="true" italic="true" name="_cstyle262"/><Font background="[0,0,0]" italic="true" name="_cstyle261"/><Font background="[0,0,0]" bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" name="Normal256" readonly="false" size="12" underline="false"/><Font background="[0,0,0]" italic="true" name="_cstyle260"/><Font background="[0,0,0]" italic="true" name="_cstyle259"/><Font background="[0,0,0]" bold="true" name="_cstyle258" size="18"/><Font background="[0,0,0]" bold="true" name="_cstyle257" size="18"/></Styles><Page-Numbers enabled="false" first-number="1" first-numbered-page="1" horizontal-location="right" style="Page Number" vertical-location="bottom"/><Group><Input><Text-field layout="Normal256" style="_cstyle257"><Font family="Times New Roman" foreground="[0,0,0]" italic="false" underline="false">2 procedures for finding integrating factors</Font></Text-field><Text-field layout="Normal256" style="ParagraphStyle1"><Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle258" underline="false">of some</Font><Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle265" underline="false"> </Font><Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle264" underline="false">ODEs of any order </Font></Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal256" style="_cstyle259"><Font bold="false" family="Times New Roman" foreground="[0,0,0]" size="12" underline="false">Yu.N. Kosovtsov</Font></Text-field><Text-field layout="Normal256" style="_cstyle260"/><Text-field layout="Normal256" style="_cstyle261"><Font bold="false" family="Times New Roman" foreground="[0,0,0]" size="12" underline="false">Lviv Radio Engineering Research Institute, Ukraine</Font></Text-field><Text-field layout="Normal256" style="_cstyle263"><Font bold="false" family="Times New Roman" foreground="[0,0,0]" size="12" underline="false">Email: kosovtsov@escort.lviv.net</Font></Text-field><Text-field layout="Normal256" style="Normal256">Copyright, 2004
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" style="Normal">The method for obtaining rational integrating factors of some rational ODEs of any order based on examination of structures of denominator and numerator of the ODEs' right-hand-side is presented. The method embodied in relatively fast procedure <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle267" underline="false">koif_1</Font> can determine the explicit expression of an integrating factor under the following restriction:  the denominator of integrating factor is the product of co-factors each has at least one missing independent variable. The procedure <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle268" underline="false">koif_2</Font> demonstrates potential of the method without the above-mentioned restriction. The experimentations with the procedures implemented in Maple confirm consistence and efficiency of proposed method.

</Text-field></Input></Group><Section><Title><Text-field layout="Heading 1" style="Heading 1">1. The method</Text-field></Title><Group><Input><Text-field layout="Normal" style="Normal"><Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle266" underline="false">
Introduction</Font>

If for the first order ODEs there are many different solving methods implemented in CAS, only a few approaches are known for high order non-linear ordinary differential equations, most of them suffer from a very high complexity and in practice often rather useless.

One of the promising approaches is the integrating factor method (see, e.g.,[1]). With an increase of equation order the number of independent variables and, correspondingly, dimension of PDE system for integrating factor increase and direct solving of this system even in a sense of particular solution comes problematical.

A remarkable method based on the knowledge of the general structure of the integrating factor was developed by Prelle and Singer [2] and Singer [3] for rational first order ODEs.

There are extensions of this semi-decision procedure in some directions [4]-[9] including approaches to solve ODEs with some transcendental or algebraic terms (heuristically) [10]-[12] and for second order ODEs [13].

There are other approaches for finding integrating factors. In [14] the authors demonstrate that for cases, when integrating factor of second order ODE depends only from two of its arguments, it is possible on the base of forms of the ODEs families to find integrating factor sometimes even without solving any differential equations. This method is implemented in <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle269" underline="false">Maple ODETools</Font>.

The same authors implemented in <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle270" underline="false">Maple ODETools</Font> another method, applicable for ODEs of any order, when integrating factor is polynomial in the <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle271" underline="false">(n-1)th</Font> derivative of dependent variable. Unfortunately, there are not available details of this method.

In this contribution we propose the method, based on examination of structures of denominator and numerator of the ODEs' right-hand-side,  which can determine the explicit expression of an integrating factor if its denominator is the product of co-factors each has at least one missing independent variable and consider the ways to extend the method beyond this restriction.

The method proposed here resembles the Prelle-Singer approach in some features. It starts from the same integrating factor structure of the form <Equation input-equation="mu = product(phi[j]^X[j],j = 1 .. N);" style="2D Comment">NiMvJSNtdUctJShwcm9kdWN0RzYkKSYlJHBoaUc2IyUiakcmJSJYR0YrL0YsOyIiIiUiTkc=</Equation>, where <Equation input-equation="phi[j]" style="2D Comment">NiMmJSRwaGlHNiMlImpH</Equation>  are some functions (Darboux polynomials), <Equation input-equation="X[j]" style="2D Comment">NiMmJSJYRzYjJSJqRw==</Equation> are constants. But instead of finding candidates to the set of <Equation input-equation="{phi[j]};" style="2D Comment">NiM8IyYlJHBoaUc2IyUiakc=</Equation> by the very expensive method of undetermined parameters (coefficients of unknown Darboux polynomials), in proposed method it is used a substitution procedure, which admits the extraction of <Equation input-equation="phi[j]" style="2D Comment">NiMmJSRwaGlHNiMlImpH</Equation>  (for some restricted ODEs) by blocks without embedding any undetermined parameters and notorious degree bounds on this stage. The undetermined parameters arise only on final stage for obtaining constants <Equation input-equation="X[j]" style="2D Comment">NiMmJSJYRzYjJSJqRw==</Equation>. It results in the more compact, efficient and fast procedure for finding integrating factors which is proved to be workable for sufficiently high order ODEs.<Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle272" underline="false">

2  The base of the method</Font>

</Text-field><Text-field layout="Normal" style="Normal">For <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle273" underline="false">nth</Font> order ODE in solved form </Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"><Equation input-equation="diff(y[0],`$`(x,n))-f(x,y[0],y[1] .. y[n-1]) = 0;" style="2D Comment">NiMvLCYtJSVkaWZmRzYkJiUieUc2IyIiIS0lIiRHNiQlInhHJSJuRyIiIi0lImZHNiVGL0YoOyZGKTYjRjEmRik2IywmRjBGMUYxISIiRjtGKw==</Equation>                                                                       (1)</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">where  <Equation input-equation="y[0] = y(x);" style="2D Comment">NiMvJiUieUc2IyIiIS1GJTYjJSJ4Rw==</Equation> ,    <Equation input-equation="y[j] = diff(y(x),`$`(x,j));" style="2D Comment">NiMvJiUieUc2IyUiakctJSVkaWZmRzYkLUYlNiMlInhHLSUiJEc2JEYtRic=</Equation></Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">by standard definition [see,e.g.,1]  <Equation input-equation="mu;" style="2D Comment">NiMlI211Rw==</Equation>  is an integrating factor if   <Equation input-equation="mu*(y[n]-f);" style="2D Comment">NiMqJiUjbXVHIiIiLCYmJSJ5RzYjJSJuR0YlJSJmRyEiIkYl</Equation>  is a total derivative of some function  <Equation input-equation="zeta(x,y[0],y[1] .. y[n-1]);" style="2D Comment">NiMtJSV6ZXRhRzYlJSJ4RyYlInlHNiMiIiE7JkYoNiMiIiImRig2IywmJSJuR0YuRi4hIiI=</Equation> , that is </Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"><Equation input-equation="mu*(diff(y[0],`$`(x,n))-f) = diff(zeta,x)+sum(y[j+1]*diff(zeta,y[j]),j = 0 .. n-1);" style="2D Comment">NiMvKiYlI211RyIiIiwmLSUlZGlmZkc2JCYlInlHNiMiIiEtJSIkRzYkJSJ4RyUibkdGJiUiZkchIiJGJiwmLUYpNiQlJXpldGFHRjJGJi0lJHN1bUc2JComJkYsNiMsJiUiakdGJkYmRiZGJi1GKTYkRjkmRiw2I0ZBRiYvRkE7Ri4sJkYzRiZGJkY1RiY=</Equation>  .                                          (2)</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">Let </Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"><Equation input-equation="mu = diff(zeta,y[n-1]);" style="2D Comment">NiMvJSNtdUctJSVkaWZmRzYkJSV6ZXRhRyYlInlHNiMsJiUibkciIiJGLiEiIg==</Equation>                                                                                                           (3)</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">then (2) becomes</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"><Equation input-equation="D(zeta)+f*diff(zeta,y[n-1]) = 0;" style="2D Comment">NiMvLCYtJSJERzYjJSV6ZXRhRyIiIiomJSJmR0YpLSUlZGlmZkc2JEYoJiUieUc2IywmJSJuR0YpRikhIiJGKUYpIiIh</Equation>                                                                                         (4)</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">where   <Equation input-equation="D(zeta) = diff(zeta,x)+sum(y[j+1]*diff(zeta,y[j]),j = 0 .. n-2);" style="2D Comment">NiMvLSUiREc2IyUlemV0YUcsJi0lJWRpZmZHNiRGJyUieEciIiItJSRzdW1HNiQqJiYlInlHNiMsJiUiakdGLUYtRi1GLS1GKjYkRicmRjM2I0Y2Ri0vRjY7IiIhLCYlIm5HRi0iIiMhIiJGLQ==</Equation> .</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">So we conclude that the integrating factor of ODE (1) is  <Equation input-equation="mu = diff(zeta,y[n-1])" style="2D Comment">NiMvJSNtdUctJSVkaWZmRzYkJSV6ZXRhRyYlInlHNiMsJiUibkciIiJGLiEiIg==</Equation>  , where the function  <Equation input-equation="zeta" style="2D Comment">NiMlJXpldGFH</Equation>  satisfy the linear first-order PDE (4).

Let us suppose that ODE (1) has a rational integrating factor in the following form</Text-field><Text-field layout="Normal" style="Normal"><Equation input-equation="mu = A/product(B[j]^X[j],j = 1 .. N);" style="2D Comment">NiMvJSNtdUcqJiUiQUciIiItJShwcm9kdWN0RzYkKSYlIkJHNiMlImpHJiUiWEdGLi9GLztGJyUiTkchIiI=</Equation>
                                                                                                           (5)</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">where <Equation input-equation="A" style="2D Comment">NiMlIkFH</Equation> and <Equation input-equation="B" style="2D Comment">NiMlIkJH</Equation> are polynomials, <Equation input-equation="X[j]" style="2D Comment">NiMmJSJYRzYjJSJqRw==</Equation>  are constants. So as it follows from the well-known theory of integration of rational functions there exists the corresponding solution of PDE (4) whith the following structure</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"><Equation input-equation="zeta = product(P[j]^alpha[j],j = 1 .. n1)/product(Q[k]^beta[k],k = 1 .. n2)+sum(eta[s]*ln(p[s]),s = 1 .. m1)+sum(theta[r]*arctan(q[r]),r = 1 .. m2);" style="2D Comment">NiMvJSV6ZXRhRywoKiYtJShwcm9kdWN0RzYkKSYlIlBHNiMlImpHJiUmYWxwaGFHRi0vRi47IiIiJSNuMUdGMy1GKDYkKSYlIlFHNiMlImtHJiUlYmV0YUdGOi9GOztGMyUjbjJHISIiRjMtJSRzdW1HNiQqJiYlJGV0YUc2IyUic0dGMy0lI2xuRzYjJiUicEdGSEYzL0ZJO0YzJSNtMUdGMy1GQzYkKiYmJSZ0aGV0YUc2IyUickdGMy0lJ2FyY3Rhbkc2IyYlInFHRldGMy9GWDtGMyUjbTJHRjM=</Equation>                                    (6)</Text-field><Text-field layout="Normal" style="Normal">
where  <Equation input-equation="P[j]" style="2D Comment">NiMmJSJQRzYjJSJqRw==</Equation>,  <Equation input-equation="Q[k]" style="2D Comment">NiMmJSJRRzYjJSJrRw==</Equation>,  <Equation input-equation="p[s]" style="2D Comment">NiMmJSJwRzYjJSJzRw==</Equation>,  <Equation input-equation="q[r]" style="2D Comment">NiMmJSJxRzYjJSJyRw==</Equation>  are polynomials, and <Equation input-equation="alpha[j]" style="2D Comment">NiMmJSZhbHBoYUc2IyUiakc=</Equation> , <Equation input-equation="beta[k]" style="2D Comment">NiMmJSViZXRhRzYjJSJrRw==</Equation> are positive constants,  <Equation input-equation="eta[s]" style="2D Comment">NiMmJSRldGFHNiMlInNH</Equation>, <Equation input-equation="theta[r]" style="2D Comment">NiMmJSZ0aGV0YUc2IyUickc=</Equation>   are any constants.
</Text-field><Text-field layout="Normal" style="Normal">If now express</Text-field><Text-field layout="Normal" style="Normal"><Equation input-equation="f = -D(zeta)/diff(zeta,y[n-1]);" style="2D Comment">NiMvJSJmRywkKiYtJSJERzYjJSV6ZXRhRyIiIi0lJWRpZmZHNiRGKiYlInlHNiMsJiUibkdGK0YrISIiRjRGNA==</Equation>
                                                                                                           (7)</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">and <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation>   (3) in in terms of  <Equation input-equation="P[j]" style="2D Comment">NiMmJSJQRzYjJSJqRw==</Equation>,  <Equation input-equation="Q[k]" style="2D Comment">NiMmJSJRRzYjJSJrRw==</Equation>,  <Equation input-equation="p[s]" style="2D Comment">NiMmJSJwRzYjJSJzRw==</Equation>,  <Equation input-equation="q[r]" style="2D Comment">NiMmJSJxRzYjJSJyRw==</Equation> , we obtain that (the matter is not so simple in general as it can be happened that numerator and denominator of (8) may have common factors due to corresponding interferences of items and a cancellation can occur so as a result the numerator of <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation> will differ from denominator of <Equation input-equation="f" style="2D Comment">NiMlImZH</Equation> on some co-factor which is not controlled in present approach)<Equation input-equation="f = -(sum(alpha[i]*product((j &lt;&gt; i)*P[j]^alpha[j],j = 1 .. n1)*product(Q[k],k = 1 .. n2)*product(p[s],s = 1 .. m1)*product(q[r]^2+1,r = 1 .. m2)*P[i]^(alpha[i]-1)*D(P[i]),i = 1 .. n1)-sum(beta[i]*product(P[j]^alpha[j],j = 1 .. n1)*product((k &lt;&gt; i)*Q[k],k = 1 .. n2)*product(p[s],s = 1 .. m1)*product(q[r]^2+1,r = 1 .. m2)*D(Q[i]),i = 1 .. n2)+sum(eta[i]*product(Q[k]^(beta[k]+1),k = 1 .. n2)*product((s &lt;&gt; i)*p[s],s = 1 .. m1)*product(q[r]^2+1,r = 1 .. m2)*D(p[i]),i = 1 .. m1)+sum(theta[i]*product(Q[k]^(beta[k]+1),k = 1 .. n2)*product(p[s],s = 1 .. m1)*product((r &lt;&gt; i)*(q[r]^2+1),r = 1 .. m2)*D(q[i]),i = 1 .. m2))/(sum(alpha[i]*product((j &lt;&gt; i)*P[j]^alpha[j],j = 1 .. n1)*product(Q[k],k = 1 .. n2)*product(p[s],s = 1 .. m1)*product(q[r]^2+1,r = 1 .. m2)*P[i]^(alpha[i]-1)*diff(P[i],y[n-1]),i = 1 .. n1)-sum(beta[i]*product(P[j]^alpha[j],j = 1 .. n1)*product((k &lt;&gt; i)*Q[k],k = 1 .. n2)*product(p[s],s = 1 .. m1)*product(q[r]^2+1,r = 1 .. m2)*diff(Q[i],y[n-1]),i = 1 .. n2)+sum(eta[i]*product(Q[k]^(beta[k]+1),k = 1 .. n2)*product((s &lt;&gt; i)*p[s],s = 1 .. m1)*product(q[r]^2+1,r = 1 .. m2)*diff(p[i],y[n-1]),i = 1 .. m1)+sum(theta[i]*product(Q[k]^(beta[k]+1),k = 1 .. n2)*product(p[s],s = 1 .. m1)*product((r &lt;&gt; i)*(q[r]^2+1),r = 1 .. m2)*diff(q[i],y[n-1]),i = 1 .. m2));" style="2D Comment">NiMvJSJmRywkKiYsKi0lJHN1bUc2JCowJiUmYWxwaGFHNiMlImlHIiIiLSUocHJvZHVjdEc2JComMCUiakdGL0YwKSYlIlBHNiNGNiZGLUY6RjAvRjY7RjAlI24xR0YwLUYyNiQmJSJRRzYjJSJrRy9GRDtGMCUjbjJHRjAtRjI2JCYlInBHNiMlInNHL0ZNO0YwJSNtMUdGMC1GMjYkLCYqJCYlInFHNiMlInJHIiIjRjBGMEYwL0ZYO0YwJSNtMkdGMCkmRjlGLiwmRixGMEYwISIiRjAtJSJERzYjRmhuRjAvRi9GPUYwLUYpNiQqLiYlJWJldGFHRi5GMC1GMjYkRjdGPEYwLUYyNiQqJjBGREYvRjBGQUYwRkVGMEZIRjBGUUYwLUZcbzYjJkZCRi5GMC9GL0ZGRmpuLUYpNiQqLCYlJGV0YUdGLkYwLUYyNiQpRkEsJiZGY29GQ0YwRjBGMEZFRjAtRjI2JComMEZNRi9GMEZKRjBGTkYwRlFGMC1GXG82IyZGS0YuRjAvRi9GT0YwLUYpNiQqLCYlJnRoZXRhR0YuRjBGY3BGMEZIRjAtRjI2JComMEZYRi9GMEZTRjBGWkYwLUZcbzYjJkZWRi5GMC9GL0ZlbkYwRjAsKi1GKTYkKjBGLEYwRjFGMEY/RjBGSEYwRlFGMEZnbkYwLSUlZGlmZkc2JEZobiYlInlHNiMsJiUibkdGMEYwRmpuRjBGXm9GMC1GKTYkKi5GYm9GMEZkb0YwRmZvRjBGSEYwRlFGMC1GYnI2JEZccEZkckYwRl1wRmpuLUYpNiQqLEZhcEYwRmNwRjBGaHBGMEZRRjAtRmJyNiRGXnFGZHJGMEZfcUYwLUYpNiQqLEZjcUYwRmNwRjBGSEYwRmVxRjAtRmJyNiRGW3JGZHJGMEZcckYwRmpuRmpu</Equation>

                                     (8)</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">and integrating factor is in the case when all <Equation input-equation="1 &lt; alpha[i]" style="2D Comment">NiMyIiIiJiUmYWxwaGFHNiMlImlH</Equation><Equation input-equation="mu = denom(f)/(product(Q[k]^(beta[k]+1),k = 1 .. n2)*product(p[s],s = 1 .. m1)*product(q[r]^2+1,r = 1 .. m2));" style="2D Comment">NiMvJSNtdUcqJi0lJmRlbm9tRzYjJSJmRyIiIiooLSUocHJvZHVjdEc2JCkmJSJRRzYjJSJrRywmJiUlYmV0YUdGMkYqRipGKi9GMztGKiUjbjJHRiotRi02JCYlInBHNiMlInNHL0Y/O0YqJSNtMUdGKi1GLTYkLCYqJCYlInFHNiMlInJHIiIjRipGKkYqL0ZKO0YqJSNtMkdGKiEiIg==</Equation>

                                                           (9)</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">or if exist some <Equation input-equation="alpha[i] &lt; 1;" style="2D Comment">NiMyJiUmYWxwaGFHNiMlImlHIiIi</Equation>  (  <Equation input-equation="0 &lt; alpha[i];" style="2D Comment">NiMyIiIhJiUmYWxwaGFHNiMlImlH</Equation> )</Text-field><Text-field layout="Normal" style="Normal"><Equation input-equation="mu = denom(f)/(product((alpha[i] &lt; 1)*P[i]^(1-alpha[i]),i = 1 .. n1)*product(Q[k]^(beta[k]+1),k = 1 .. n2)*product(p[s],s = 1 .. m1)*product(q[r]^2+1,r = 1 .. m2));" style="2D Comment">NiMvJSNtdUcqJi0lJmRlbm9tRzYjJSJmRyIiIioqLSUocHJvZHVjdEc2JComMiYlJmFscGhhRzYjJSJpR0YqRiopJiUiUEdGMywmRipGKkYxISIiRiovRjQ7RiolI24xR0YqLUYtNiQpJiUiUUc2IyUia0csJiYlJWJldGFHRkJGKkYqRiovRkM7RiolI24yR0YqLUYtNiQmJSJwRzYjJSJzRy9GTztGKiUjbTFHRiotRi02JCwmKiQmJSJxRzYjJSJyRyIiI0YqRipGKi9GWjtGKiUjbTJHRipGOQ==</Equation>
             (10)</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">We can conclude here, that in the case under consideration, for obtaining <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation>  it is sufficient to find all <Equation input-equation="Q[k]" style="2D Comment">NiMmJSJRRzYjJSJrRw==</Equation>,  <Equation input-equation="p[s]" style="2D Comment">NiMmJSJwRzYjJSJzRw==</Equation>,  <Equation input-equation="q[r]^2+1;" style="2D Comment">NiMsJiokJiUicUc2IyUickciIiMiIiJGKkYq</Equation>  and <Equation input-equation="beta[k]" style="2D Comment">NiMmJSViZXRhRzYjJSJrRw==</Equation>  (plus <Equation input-equation="P[i]" style="2D Comment">NiMmJSJQRzYjJSJpRw==</Equation>  and <Equation input-equation="alpha[i]" style="2D Comment">NiMmJSZhbHBoYUc2IyUiaUc=</Equation>  for cases when <Equation input-equation="alpha[i] &lt; 1;" style="2D Comment">NiMyJiUmYWxwaGFHNiMlImlHIiIi</Equation>  (  <Equation input-equation="0 &lt; alpha[i];" style="2D Comment">NiMyIiIhJiUmYWxwaGFHNiMlImlH</Equation> )).<Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle274" underline="false">

For given ODE we know only</Font> <Equation input-equation="f" style="2D Comment">NiMlImZH</Equation> <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle275" underline="false">as a whole. The main problem here is: how can we obtain parameters of</Font> <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation> <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle276" underline="false">from known rational</Font> <Equation input-equation="f" style="2D Comment">NiMlImZH</Equation> <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle277" underline="false">?</Font>

Let us impose additional restriction on components in the structure of <Equation input-equation="zeta" style="2D Comment">NiMlJXpldGFH</Equation>   (6):<Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle278" underline="false">

(R)</Font>.  <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle279" underline="false">Each of all components</Font> <Equation input-equation="Q[k]" style="2D Comment">NiMmJSJRRzYjJSJrRw==</Equation>,  <Equation input-equation="p[s]" style="2D Comment">NiMmJSJwRzYjJSJzRw==</Equation>,  <Equation input-equation="q[r]^2+1;" style="2D Comment">NiMsJiokJiUicUc2IyUickciIiMiIiJGKkYq</Equation>   (plus <Equation input-equation="P[i]" style="2D Comment">NiMmJSJQRzYjJSJpRw==</Equation>  for cases when <Equation input-equation="alpha[i] &lt; 1;" style="2D Comment">NiMyJiUmYWxwaGFHNiMlImlHIiIi</Equation>  (  <Equation input-equation="0 &lt; alpha[i];" style="2D Comment">NiMyIiIhJiUmYWxwaGFHNiMlImlH</Equation> )) <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle280" underline="false">do not depend at least on one of the arguments</Font>   <Equation input-equation="{x, y[0], y[1] .. y[n-1]};" style="2D Comment">NiM8JSUieEcmJSJ5RzYjIiIhOyZGJjYjIiIiJkYmNiMsJiUibkdGLEYsISIi</Equation>.

If given ODE leads to PDE (4) with a solution in form (6) which parameters satisfy aforesaid condition <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle281" underline="false">(R)</Font>, then the procedure of finding of an integrating factor is reduced to two stages. On the first one we successively find all components of the denominator of <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation>, and then, on the second stage, we can find theirs powers.

Note here that if one of the parameters of the denominator of <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation> (9) or (10) is a function in only <Equation input-equation="y[n-1]" style="2D Comment">NiMmJSJ5RzYjLCYlIm5HIiIiRighIiI=</Equation>  then this parameter is one of the co-factors of the numerator of <Equation input-equation="f" style="2D Comment">NiMlImZH</Equation>. And if one of such parameters does not depend on <Equation input-equation="y[n-1]" style="2D Comment">NiMmJSJ5RzYjLCYlIm5HIiIiRighIiI=</Equation> then it is obvious from (8) that this parameter is one of co-factors of the denominator of <Equation input-equation="f" style="2D Comment">NiMlImZH</Equation>.

Let us suppose here for a moment, that we know a priori one of the parameters  {<Equation input-equation="Q[k]" style="2D Comment">NiMmJSJRRzYjJSJrRw==</Equation>,  <Equation input-equation="p[s]" style="2D Comment">NiMmJSJwRzYjJSJzRw==</Equation>,  <Equation input-equation="q[r]^2+1;" style="2D Comment">NiMsJiokJiUicUc2IyUickciIiMiIiJGKkYq</Equation>} , for example,  <Equation input-equation="Q[1];" style="2D Comment">NiMmJSJRRzYjIiIi</Equation> = <Equation input-equation="Q[1](y[0], y[1] .. y[n-1]);" style="2D Comment">NiMtJiUiUUc2IyIiIjYkJiUieUc2IyIiITsmRipGJiZGKjYjLCYlIm5HRidGJyEiIg==</Equation>.  If now substitute one of the roots of equation  <Equation input-equation="Q[1](y[0],y[1] .. y[n-1]) = 0;" style="2D Comment">NiMvLSYlIlFHNiMiIiI2JCYlInlHNiMiIiE7JkYrRicmRis2IywmJSJuR0YoRighIiJGLQ==</Equation>, for example,<Equation input-equation="y[0] = RootOf(Q[1](y[0],y[1] .. y[n-1]),y[0]);" style="2D Comment">NiMvJiUieUc2IyIiIS0lJ1Jvb3RPZkc2JC0mJSJRRzYjIiIiNiRGJDsmRiVGLiZGJTYjLCYlIm5HRi9GLyEiIkYk</Equation>

                                                                          (11)</Text-field><Text-field layout="Normal" style="Normal">
to the numerator of  <Equation input-equation="f" style="2D Comment">NiMlImZH</Equation>  then all items of the numerator get annul except one of them , and after simplification and factorization we have
</Text-field><Text-field layout="Normal" style="Normal"><Equation input-equation="subs(y[0] = RootOf(Q[1] = 0,y[0]),numer(f)) = -beta[1]*product(P[j]^alpha[j],j = 1 .. n1)*product(Q[k],k = 2 .. n2)*product(p[l],l = 1 .. m1)*product(q[r],r = 1 .. m2)*D(Q[1]);" style="2D Comment">NiMvLSUlc3Vic0c2JC8mJSJ5RzYjIiIhLSUnUm9vdE9mRzYkLyYlIlFHNiMiIiJGK0YoLSUmbnVtZXJHNiMlImZHLCQqLiYlJWJldGFHRjJGMy0lKHByb2R1Y3RHNiQpJiUiUEc2IyUiakcmJSZhbHBoYUdGQi9GQztGMyUjbjFHRjMtRj02JCZGMTYjJSJrRy9GTTsiIiMlI24yR0YzLUY9NiQmJSJwRzYjJSJsRy9GVztGMyUjbTFHRjMtRj02JCYlInFHNiMlInJHL0ZqbjtGMyUjbTJHRjMtJSJERzYjRjBGMyEiIg==</Equation>     </Text-field><Text-field layout="Normal" style="Normal">                                                                                                   (<Equation input-equation="y[0] = RootOf(Q[1],y[0]);" style="2D Comment">NiMvJiUieUc2IyIiIS0lJ1Jvb3RPZkc2JCYlIlFHNiMiIiJGJA==</Equation>)        (12)</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">On imposed restriction <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle282" underline="false">(R)</Font> there may be such <Equation input-equation="Q[k]" style="2D Comment">NiMmJSJRRzYjJSJrRw==</Equation>,  <Equation input-equation="p[s]" style="2D Comment">NiMmJSJwRzYjJSJzRw==</Equation>,  <Equation input-equation="q[r]^2+1;" style="2D Comment">NiMsJiokJiUicUc2IyUickciIiMiIiJGKkYq</Equation>  which do not depend on <Equation input-equation="y[0]" style="2D Comment">NiMmJSJ5RzYjIiIh</Equation>, and correspondingly the substitution (11) do not affect on them and such parameters are developed as co-factors in (12). In fact on this stage we have to consider almost all non-constant co-factors (except co-factors which do not depend on <Equation input-equation="y[n-1]" style="2D Comment">NiMmJSJ5RzYjLCYlIm5HIiIiRighIiI=</Equation> or which depend only on <Equation input-equation="y[n-1]" style="2D Comment">NiMmJSJ5RzYjLCYlIm5HIiIiRighIiI=</Equation> as they are developed directly in the denominator and numerator of <Equation input-equation="f" style="2D Comment">NiMlImZH</Equation>  as candidates to components to the denominator of <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation>  (9) or (10).

If substitute further (11) to the denominator of <Equation input-equation="f" style="2D Comment">NiMlImZH</Equation> we obtain by the same way another set of candidates to components to the denominator of <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation>. It is seen that on this stage proper components to the denominator of <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation> must appear in both sets of candidates.

Analogously, if substitute further<Equation input-equation="y[1] = RootOf(Q[1](y[0],y[1] .. y[n-1]),y[1]);" style="2D Comment">NiMvJiUieUc2IyIiIi0lJ1Jvb3RPZkc2JC0mJSJRR0YmNiQmRiU2IyIiITtGJCZGJTYjLCYlIm5HRidGJyEiIkYk</Equation>

                                                                             (13)

to the numerator and denominator of  <Equation input-equation="f" style="2D Comment">NiMlImZH</Equation>  we can obtain another set of candidates to components to the denominator of <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation> which do not depend on <Equation input-equation="y[1]" style="2D Comment">NiMmJSJ5RzYjIiIi</Equation> and so on.

Unfortunately among co-factors of types (12) there are nonproper candidates (phantoms) and it is very desirable to remove them as early as possible.

As it is easily seen from (8)

 <Font executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle283" underline="false">Proposition:</Font>  <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle284" underline="false">If polynomial</Font> <Equation input-equation="B[i];" style="2D Comment">NiMmJSJCRzYjJSJpRw==</Equation> <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle285" underline="false">is one of the set</Font> {<Equation input-equation="Q[k]" style="2D Comment">NiMmJSJRRzYjJSJrRw==</Equation>,  <Equation input-equation="p[s]" style="2D Comment">NiMmJSJwRzYjJSJzRw==</Equation>,  <Equation input-equation="q[r]^2+1;" style="2D Comment">NiMsJiokJiUicUc2IyUickciIiMiIiJGKkYq</Equation>} <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle286" underline="false">then under substitution of</Font>   <Equation input-equation="z = RootOf(B[i],z);" style="2D Comment">NiMvJSJ6Ry0lJ1Jvb3RPZkc2JCYlIkJHNiMlImlHRiQ=</Equation>
</Text-field><Text-field layout="Normal" style="Normal"><Equation input-equation="subs(z = RootOf(B[i] = 0,z),numer(f)*diff(B[i],y[n-1])+denom(f)*D(B[i])) = 0;" style="2D Comment">NiMvLSUlc3Vic0c2JC8lInpHLSUnUm9vdE9mRzYkLyYlIkJHNiMlImlHIiIhRigsJiomLSUmbnVtZXJHNiMlImZHIiIiLSUlZGlmZkc2JEYtJiUieUc2IywmJSJuR0Y4RjghIiJGOEY4KiYtJSZkZW5vbUdGNkY4LSUiREc2I0YtRjhGOEYx</Equation>                    (14)
</Text-field><Text-field layout="Normal" style="Normal"><Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle287" underline="false">where</Font> <Equation input-equation="z" style="2D Comment">NiMlInpH</Equation> <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle288" underline="false">is any of variables involved in</Font> <Equation input-equation="B[i]" style="2D Comment">NiMmJSJCRzYjJSJpRw==</Equation>.

So we can by using this proposition effectively select (remove nonproper) candidates.

For each new candidate we can repeat substitution and selection procedures until no new candidates appears. To find full set of parameters of the denominator of <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation>  (9) in aforesaid condition it is sufficient to make <Equation input-equation="n;" style="2D Comment">NiMlIm5H</Equation> substitutions. As we select real candidates and the set of real candidates are finite then this procedure <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle289" underline="false">always terminates</Font>. It is obvious that described procedure of finding candidates to components would be very fast.

So the problem of finding an integrating factor of type (9) or (10) with condition <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle290" underline="false">(R)</Font> is reduced to the problem of obtaining at least one of the parameters from the set {<Equation input-equation="P[j]" style="2D Comment">NiMmJSJQRzYjJSJqRw==</Equation>,  <Equation input-equation="Q[k]" style="2D Comment">NiMmJSJRRzYjJSJrRw==</Equation>,  <Equation input-equation="p[s]" style="2D Comment">NiMmJSJwRzYjJSJzRw==</Equation>,  <Equation input-equation="q[r]^2+1;" style="2D Comment">NiMsJiokJiUicUc2IyUickciIiMiIiJGKkYq</Equation>} (which is not a function only on  <Equation input-equation="y[n-1]" style="2D Comment">NiMmJSJ5RzYjLCYlIm5HIiIiRighIiI=</Equation>).

As we have stated above if  one of the parameters of the denominator of  <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation>  (9) or (10) does not depend on <Equation input-equation="y[n-1]" style="2D Comment">NiMmJSJ5RzYjLCYlIm5HIiIiRighIiI=</Equation> then it appears as co-factor of the denominator of  <Equation input-equation="f" style="2D Comment">NiMlImZH</Equation>. So in second case we can start roots substitution procedure to the numerator of  <Equation input-equation="f" style="2D Comment">NiMlImZH</Equation>.

Are there ways to find at least one of the parameters when self-developing parameters of above mentioned type are absent?

Let use a new angle on the problem .  Let  <Equation input-equation="mu = A/B;" style="2D Comment">NiMvJSNtdUcqJiUiQUciIiIlIkJHISIi</Equation>.  The  <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation>  is an integrating factor for the following ODEs family with</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"><Equation input-equation="f = B*(y[n-1]*int(diff(A,y[n-2])/B,y[n-1])+int(D[n-2](A)/B,y[n-1])-y[n-1]*int(A*diff(B,y[n-2])/(B^2),y[n-1])-int(A*D[n-2](B)/(B^2),y[n-1])+xi)/A;" style="2D Comment">NiMvJSJmRyooJSJCRyIiIiwsKiYmJSJ5RzYjLCYlIm5HRidGJyEiIkYnLSUkaW50RzYkKiYtJSVkaWZmRzYkJSJBRyZGKzYjLCZGLkYnIiIjRi9GJ0YmRi9GKkYnRictRjE2JComLSYlIkRHRjk2I0Y3RidGJkYvRipGJyomRipGJy1GMTYkKihGN0YnLUY1NiRGJkY4RicqJEYmRjtGL0YqRidGLy1GMTYkKihGN0YnLUZANiNGJkYnRklGL0YqRi8lI3hpR0YnRidGN0Yv</Equation>       (15)</Text-field><Text-field layout="Normal" style="Normal">
where <Equation input-equation="D[n-2](zeta) = diff(zeta,x)+sum(y[j+1]*diff(zeta,y[j]),j = 0 .. n-3);" style="2D Comment">NiMvLSYlIkRHNiMsJiUibkciIiIiIiMhIiI2IyUlemV0YUcsJi0lJWRpZmZHNiRGLiUieEdGKi0lJHN1bUc2JComJiUieUc2IywmJSJqR0YqRipGKkYqLUYxNiRGLiZGOTYjRjxGKi9GPDsiIiEsJkYpRioiIiRGLEYq</Equation>,      <Equation input-equation="xi = (x, y[0], y[1] .. y[n-2]);" style="2D Comment">NiMvJSN4aUc2JSUieEcmJSJ5RzYjIiIhOyZGKDYjIiIiJkYoNiMsJiUibkdGLiIiIyEiIg==</Equation> is an arbitrary function.

We can see here that not all co-factors of denominator <Equation input-equation="f" style="2D Comment">NiMlImZH</Equation> which do not depend on <Equation input-equation="y[n-1]" style="2D Comment">NiMmJSJ5RzYjLCYlIm5HIiIiRighIiI=</Equation> are related to the <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation>  ( <Equation input-equation="denom(mu) = denom(f)/denom(xi);" style="2D Comment">NiMvLSUmZGVub21HNiMlI211RyomLUYlNiMlImZHIiIiLUYlNiMlI3hpRyEiIg==</Equation>).

Note now, that if <Equation input-equation="A" style="2D Comment">NiMlIkFH</Equation> and <Equation input-equation="B" style="2D Comment">NiMlIkJH</Equation> are polynomials in <Equation input-equation="y[n-1]" style="2D Comment">NiMmJSJ5RzYjLCYlIm5HIiIiRighIiI=</Equation> , then all integrands are rational in <Equation input-equation="y[n-1]" style="2D Comment">NiMmJSJ5RzYjLCYlIm5HIiIiRighIiI=</Equation>  and as it follows from the well-known theory of rational functions integration the denominator of <Equation input-equation="int(P/(B^n),y[n-1]);" style="2D Comment">NiMtJSRpbnRHNiQqJiUiUEciIiIpJSJCRyUibkchIiImJSJ5RzYjLCZGK0YoRihGLA==</Equation> is <Equation input-equation="B^(n-1);" style="2D Comment">NiMpJSJCRywmJSJuRyIiIkYnISIi</Equation> if  <Equation input-equation="1 &lt; n;" style="2D Comment">NiMyIiIiJSJuRw==</Equation> and is <Equation input-equation="1" style="2D Comment">NiMiIiI=</Equation> if  <Equation input-equation="n = 1;" style="2D Comment">NiMvJSJuRyIiIg==</Equation>. So if we annul by any way <Equation input-equation="A" style="2D Comment">NiMlIkFH</Equation> (that is, one co-factor of the <Equation input-equation="denom(f)" style="2D Comment">NiMtJSZkZW5vbUc2IyUiZkc=</Equation>) in (15), then components of integrals with <Equation input-equation="B" style="2D Comment">NiMlIkJH</Equation> in denominators annul too and we have to receive
</Text-field><Text-field layout="Normal" style="Normal"><Equation input-equation="subs(A = 0,numer(f)) = B*Y;" style="2D Comment">NiMvLSUlc3Vic0c2JC8lIkFHIiIhLSUmbnVtZXJHNiMlImZHKiYlIkJHIiIiJSJZR0Yw</Equation>       (<Equation input-equation="modulo(A = 0);" style="2D Comment">NiMtJSdtb2R1bG9HNiMvJSJBRyIiIQ==</Equation>)                                                          (16)</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">where <Equation input-equation="Y = Y(x, y[0], y[1] .. y[n-1]);" style="2D Comment">NiMvJSJZRy1GJDYlJSJ4RyYlInlHNiMiIiE7JkYpNiMiIiImRik2IywmJSJuR0YvRi8hIiI=</Equation> is some rational function.
That is on condition <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle291" underline="false">(R)</Font> we can find as co-factor of <Equation input-equation="numer(f)" style="2D Comment">NiMtJSZudW1lckc2IyUiZkc=</Equation> under substitution, for example, <Equation input-equation="x = RootOf(denom(f) = 0,x);" style="2D Comment">NiMvJSJ4Ry0lJ1Jvb3RPZkc2JC8tJSZkZW5vbUc2IyUiZkciIiFGJA==</Equation> the component of <Equation input-equation="B" style="2D Comment">NiMlIkJH</Equation> which does not depend on <Equation input-equation="x" style="2D Comment">NiMlInhH</Equation>. Successive substitution of all possible roots of <Equation input-equation="denom(f)" style="2D Comment">NiMtJSZkZW5vbUc2IyUiZkc=</Equation>  (<Equation input-equation="y[i] = RootOf(denom(f) = 0,y[i]);" style="2D Comment">NiMvJiUieUc2IyUiaUctJSdSb290T2ZHNiQvLSUmZGVub21HNiMlImZHIiIhRiQ=</Equation>) to the numerator of <Equation input-equation="f" style="2D Comment">NiMlImZH</Equation> supplies us a set of initial candidates to components of the denominator of <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation>. This procedure is workable only when denominator of  <Equation input-equation="f" style="2D Comment">NiMlImZH</Equation>  is different from unity (see comment before eq.(8)).

The similar procedure suits for rational  <Equation input-equation="f" style="2D Comment">NiMlImZH</Equation>  for obtaining candidates when we substitute roots of numerator to the denominator of  <Equation input-equation="f" style="2D Comment">NiMlImZH</Equation>. It can be proved analogously to considered case. If we solve for <Equation input-equation="zeta;" style="2D Comment">NiMlJXpldGFH</Equation> (solvable) equation <Equation input-equation="D(zeta) = C/B;" style="2D Comment">NiMvLSUiREc2IyUlemV0YUcqJiUiQ0ciIiIlIkJHISIi</Equation>, where <Equation input-equation="C" style="2D Comment">NiMlIkNH</Equation> and <Equation input-equation="B" style="2D Comment">NiMlIkJH</Equation> are polynomials in all variables, we can receive that <Equation input-equation="f = C/(B*I);" style="2D Comment">NiMvJSJmRyomJSJDRyIiIiomJSJCR0YnJSJJR0YnISIi</Equation>, where <Equation input-equation="I" style="2D Comment">NiMlIklH</Equation>  has the similar integral structure as in numerator of <Equation input-equation="f" style="2D Comment">NiMlImZH</Equation> in (15). So we can conclude the same.

As it follows from (8) and from procedure of finding of parameters in some cases we could automatically obtain some of the exponents <Equation input-equation="alpha[i]" style="2D Comment">NiMmJSZhbHBoYUc2IyUiaUc=</Equation>  and <Equation input-equation="beta[k]" style="2D Comment">NiMmJSViZXRhRzYjJSJrRw==</Equation> . But generally speaking in described procedure of roots substitutions we do not able to find all needed exponents. And what is more we really do not know a priori whether the given candidate is a part of particular <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation> structure. That is on the first stage we are able only to form a hypothesis on the structure of the integrating factor of the type
</Text-field><Text-field layout="Normal" style="Normal"><Equation input-equation="mu = denom(f)/product(B[i]^X[i],i = 1 .. N);" style="2D Comment">NiMvJSNtdUcqJi0lJmRlbm9tRzYjJSJmRyIiIi0lKHByb2R1Y3RHNiQpJiUiQkc2IyUiaUcmJSJYR0YxL0YyO0YqJSJORyEiIg==</Equation>                                                                                                                 (17)
</Text-field><Text-field layout="Normal" style="Normal">where <Equation input-equation="B[i]" style="2D Comment">NiMmJSJCRzYjJSJpRw==</Equation>  are all found and remained after selections <Equation input-equation="N" style="2D Comment">NiMlIk5H</Equation>  candidates to components of the denominator of <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation> , include co-factors of the denominator of  <Equation input-equation="f" style="2D Comment">NiMlImZH</Equation>  which do not depend on  <Equation input-equation="y[n-1]" style="2D Comment">NiMmJSJ5RzYjLCYlIm5HIiIiRighIiI=</Equation>  and co-factors of numerator of <Equation input-equation="f" style="2D Comment">NiMlImZH</Equation>  which depend only on  <Equation input-equation="y[n-1];" style="2D Comment">NiMmJSJ5RzYjLCYlIm5HIiIiRighIiI=</Equation>,   <Equation input-equation="X[i];" style="2D Comment">NiMmJSJYRzYjJSJpRw==</Equation>  are unknown constants which we need to obtain on the following stage.

We can find unknown  <Equation input-equation="X[i]" style="2D Comment">NiMmJSJYRzYjJSJpRw==</Equation>  on the base of PDE system for integrating factor. As this PDE system have to be satisfied by  <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation>  under any <Equation input-equation="x, y[0], y[1] .. y[n-1]" style="2D Comment">NiUlInhHJiUieUc2IyIiITsmRiU2IyIiIiZGJTYjLCYlIm5HRitGKyEiIg==</Equation>,  then substitution (17) to the PDE system will lead to relatively simple system of algebraic equations for <Equation input-equation="X[i]" style="2D Comment">NiMmJSJYRzYjJSJpRw==</Equation>. If the solution of this algebraic system exists, then this is automatically the test that <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation>  in form (17) with obtained values of <Equation input-equation="X[i]" style="2D Comment">NiMmJSJYRzYjJSJpRw==</Equation> is an integrating factor of given ODE.
</Text-field><Text-field layout="Normal" style="Normal">The method described above is implemented in demonstration procedure <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle292" underline="false">koif_1</Font>. Although in principle the method can find an integrating factor for any of above mentioned type of ODEs, in practice the procedure<Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle293" underline="false"> koif_1</Font> heavily relies on some basic <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle294" underline="false">Maple</Font> procedures  such as <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle295" underline="false">factor</Font>, <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle296" underline="false">simplify</Font> and so on and in some cases fails. As a result sometimes it is observed different outputs in different <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle297" underline="false">Maple</Font> versions for the same ODE.<Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle298" underline="false">

3  Short remarks on extension of the method</Font>
</Text-field><Text-field layout="Normal" style="Normal">It is very essential that in the process of obtaining the integrating factor we treat only algebraic (non differential) objects. In fact in previous section we obtain the set of <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle299" underline="false">projections</Font> of candidates for <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation> structure and then the restriction <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle300" underline="false">(R)</Font> guarantees that real candidate coincide with some of its projection.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">So to extend the method beyond restriction <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle301" underline="false">(R)</Font> and remain in algebraic framework we have to <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle302" underline="false">recover</Font> the candidates from available set of its projections. The main problem here is ambiguities in dealing with multivariate polynomials. </Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">There are some different strategies to overcome obstacles on this way. In demonstration procedure <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle303" underline="false">koif_2</Font> we use the simplified version of such process to show that the extended method can be fruitful.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="_cstyle304"><Font bold="false" family="Times New Roman" foreground="[0,0,0]" italic="false" underline="false">4 Conclusion</Font></Text-field><Text-field layout="Normal" style="Normal">
The aim here has been to present the simple and relatively fast method for finding an integrating factor of some rational high order ODEs without solving any differential equations. The experimentations with procedures implemented in <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle305" underline="false">Maple</Font> confirmed consistence and efficiency of proposed method for sufficiently high order ODEs. We can conclude that our procedures are workable for rational ODEs (and for <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle306" underline="false">koif_1 </Font>surprisingly for many transcendental ODEs) (even with symbolic constant parameters) of orders from n=1 to n=4-5. The first stage - finding candidates and hypothesis on structure of integrating factor is very fast. The relatively resource consuming is the second stage - finding the unknown parameters <Equation input-equation="X[i];" style="2D Comment">NiMmJSJYRzYjJSJpRw==</Equation> of the structure of integrating factor. Sufficiently often our procedures produce more than one integrating factor (for example, the output may contain set of <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation>s or <Equation input-equation="mu" style="2D Comment">NiMlI211Rw==</Equation> with arbitrary parameters <Equation input-equation="_X[i];" style="2D Comment">NiMmJSNfWEc2IyUiaUc=</Equation> ) and sometimes they are lead to independent first integrals.
</Text-field><Text-field layout="Normal" style="Normal"> This method allows <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle343" underline="false">Maple</Font> to extend their solving abilities to solve high order ODEs missed by their own in-house solvers.
</Text-field><Text-field layout="Normal" style="Normal">
</Text-field><Text-field layout="Normal" style="Normal"><Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle307" underline="false">
References</Font>

[1]  P.J. Olver, Applications of Lie Groups to Differential Equations, Springer-Verlag, New York, (1993).

[2]  M. Prelle, and M. Singer, Elementary first integral of differential equations.  <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle344" underline="false">Trans. Amer. Math. Soc</Font>.,  <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle308" underline="false">279</Font>(1), 215-229 (1983).

[3]  M. Singer, Liouvillian first integrals of differential equations. <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle345" underline="false"> Trans. Amer. Math. Soc</Font>.,   <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle309" underline="false">333</Font>(2), 673-688 (1992).

[4]  Y.K. Man and M.A.H. MacCallum, A rational approach to the Prelle-Singer algorithm J. Symb. Comp. 24, 31-43 (1997).

[5]  Y.K. Man, First integrals of autonomous systems of differential equations and Prelle-Singer procedure. <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle310" underline="false">J.Phys.A: Math.Gen</Font>.,  <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle311" underline="false">27</Font>, L329-L332 (1994).

[6]  L.G.S. Duarte, S.E.S. Duarte and L.A.C.P. da Mota, Analyzing the Structure  of the Integrating Factor for First Order Differential Equations with Liouvillian  Functions  in the Solutions. <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle312" underline="false">J. Phys. A: Math. Gen.</Font>  <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle313" underline="false">35</Font>, 1001-1006 (2002).

[7]  L.G.S. Duarte, S.E.S. Duarte and L.A.C.P. da Mota, A Method to  tackle first-order ordinary differential equations with Liouvillian functions  in the solution. <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle314" underline="false">J. Phys. A: Math. Gen.</Font>},  <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle315" underline="false">35</Font>, issue 17, 3899-3910 (2002).

[8]  Yu.N. Kosovtsov, The structure of general solutions and integrability conditions for rational first-order ODEs. <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle316" underline="false">arXiv:math-ph/0207032v1 24 Jul 2002</Font>.

[9]  Yu.N. Kosovtsov, The rational generalized integrating factors for first-order ODEs. <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle317" underline="false">arXiv:math-ph/0211069v1 29 Nov 2002</Font>.

[10] R. Shtokhamer, N. Glinos, B.F. Caviness, Computing elementary first integrals of differential equations. In <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle318" underline="false">Computers and Mathematic Conference Manuscript</Font>. Stanford (1986).

[11] Y.K. Man, Computing closed form solutions of first order ODEs using the Prelle-Singer procedure. <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle319" underline="false">J. Symbolic Computation</Font>,  <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle320" underline="false">16</Font>, 423-443 (1993).

[12] L.G.S. Duarte, S.E.S. Duarte, L.A.C.P. da Mota and J.E. Skea, An Extension  of the Prelle-Singer Method and a MAPLE implementation. <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle321" underline="false">Computer Physics  Communications</Font>,  <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle322" underline="false">144</Font>(1), 46-62, (2002).

[13] L.G.S. Duarte, L.A. da Mota and J.E.F. Skea, Solving second order equations by extending the PS method. <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle323" underline="false">arXiv:math-ph/0001004v1 3 Jan 2000</Font>.

[14]  E.S. Cheb-Terrab and A.D. Roche, Integrating factors for second order ODEs, <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle324" underline="false">J.Symb. Comp</Font>. <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle325" underline="false">27</Font>, No. 5, pp. 501-519, (1999).

</Text-field></Input></Group><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"/></Section><Section><Title><Text-field layout="Heading 1" style="Heading 1">2. Procedures description</Text-field></Title><Group><Input><Text-field layout="Normal" style="ParagraphStyle2"><Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle326" underline="false">koif_1 </Font><Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle337" underline="false">and</Font><Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle338" underline="false"> koif_2</Font><Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle327" underline="false"> -</Font><Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle330" underline="false">look for an integrating factor for </Font><Font executable="false" family="Times New Roman" foreground="[0,0,0]" style="_cstyle328" underline="false">rational</Font><Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" style="_cstyle329" underline="false"> ODEs of any order</Font></Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="_cstyle331"><Font family="Times New Roman" foreground="[0,0,0]" italic="false" underline="false">Calling Sequences</Font></Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">koif_1(ode,y(x),con);</Text-field><Text-field layout="Normal" style="Normal">koif_2(ode,y(x),con);</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="_cstyle332"><Font family="Times New Roman" foreground="[0,0,0]" italic="false" underline="false">Parameters</Font></Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">ode                              - ordinary differential equation (any order). </Text-field><Text-field layout="Normal" style="Normal">                                   NOTE: In present implementation of <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle333" underline="false">koif_2 </Font> ode <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle336" underline="false">must be rational.</Font> </Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">y(x)                             - ODE's dependent variable. The <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle340" underline="false">first</Font> argument of y(x) <Font bold="false" executable="false" family="Times New Roman" foreground="[0,0,0]" size="12" style="_cstyle339" underline="false">must be ODE`s </Font>independent variable.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal">con                           - (optional) if there stands <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle334" underline="false">str</Font> the procedure is ended after calculation of hypothesis of integrating</Text-field><Text-field layout="Normal" style="Normal">                                    factor structure only.</Text-field><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="_cstyle335"><Font family="Times New Roman" foreground="[0,0,0]" italic="false" underline="false">Output</Font></Text-field><Text-field layout="Normal" style="Normal">       - computed integrating factor(s) of given ODE .  The output may contain set of integrating factors or integrating factor with arbitrary parameters <Equation input-equation="_X[i];" style="2D Comment">NiMmJSNfWEc2IyUiaUc=</Equation></Text-field><Text-field layout="Normal" style="Normal">with option <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle342" underline="false">str</Font>        - hypothesis of integrating  factor structure <Font executable="false" family="Times New Roman" foreground="[0,0,0]" italic="false" size="12" style="_cstyle341" underline="false">.</Font></Text-field></Input></Group><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"/></Section><Section><Title><Text-field layout="Heading 1" style="Heading 1">3. Procedures</Text-field></Title><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">restart;</Font></Text-field></Input></Group><Section><Title><Text-field layout="Heading 2" style="Heading 2">koif_1</Text-field></Title><Text-field layout="Normal" style="Normal"/><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">koif_1 :=proc(ode,y,con)
local f1,nu,num,d,_x,n,Largs,Sargs,F,f,j0,CC,B,a1,b1,c1,s1,SEL,Cand_Sel,nu1,nu2,i,d1,d2,j,den,F1,F2,F3,k,ard1,i1,a,k1,ard2,j1,b,BB,FF,v,k2,ard3,i2,c,s,BB1,ard4,j2,din,did,din1,did1,A,mu1,hyp1,unn,sols2,ik,mu,ode1;
option `Copyright (c) 2003-2004 by Yuri N. Kosovtsov. All rights reserved.`;

 CC :=proc(Q,P,ar)
  factor(a_a*simplify(subs(ar=RootOf(Q,ar),P))); RETURN(%);
 end proc;

  SEL :=proc(Ar,n)
   local Ar2,i,j,B1;
       Ar2 :={};
     B1 :={};
     for i to nops (Ar) do
       if type(op(i,Ar),`^`)=true then Ar2 :=Ar2 union {op(1,op(i,Ar))}
       else Ar2 :=Ar2 union {op(i,Ar)}; 
       fi;
     od;
     for j to nops (Ar2) do
       if  select(type,indets(op(j,Ar2)),name)&lt;&gt;{op(n+1,Largs)} and select(type,indets(op(j,Ar2)),name)intersect{op(n+1,Largs)}&lt;&gt;{} then  
         B1 :=B1 union {op(j,Ar2)};
       fi;
     od;
     RETURN(B1); 
  end proc:

Cand_Sel := proc(FF, nu,d,n)
 local a,aa,ab,B2,Br,EQ,dd,jj,R1;
  B2 :={};
  for jj to nops(FF) do
      Br :=op(jj,FF);
      a :=diff(Br,op(n+1,Largs));
      ab := [seq(diff(Br,op(g,Largs)),g=2..n)];
      dd := diff(Br,op(1,Largs))+sum(op(gg+2,Largs)*op(gg,ab),gg=1..n-1);
      aa :=op(n+1,Largs);
      if select(type,indets(Br),name) intersect {aa} &lt;&gt;{} then
         R1 :=aa=RootOf(Br,aa);
         EQ :=simplify(numer(factor(subs(R1,nu*a+d*dd))));
          if EQ=0 then B2 :=B2 union {Br} fi;
      fi;
  od;
RETURN(B2);
end proc;


_x :=op(1,select(type,indets(y),name));
n :=PDEtools[difforder](ode);
Largs :=[_x,seq(_y[m],m=0..n-1)];
Sargs :=convert(Largs,set);
F :=subs({seq(diff(y,`$`(_x,i0))=_y[i0],i0=1..n),y=_y[0]},ode);
f :=[solve(F,_y[n])];
for j0 from 1 to nops(f) do
  f1 :=op(j0,f);
  nu :=numer(f1);
  d :=denom(f1);
  B :={};
  F :={};
  a1 :={};
  b1 :={};
  c1 :={};
  s1 :={};

if type(nu,`*`)=true then nu1 :={op(nu)} else nu1 :={nu}; fi;
  nu2 :=nu1;
  for i to nops(nu1) do
      if select(type,indets(op(i,nu1)),name)={op(n+1,Largs)} then
      nu2 :=nu2 minus {op(i,nu1)};
        if type(op(i,nu1),`^`) then B :=B union {op(1,op(i,nu1))};
      else B :=B union {op(i,nu1)};
        fi;
      fi;
  od;
  num :=convert(nu2,`*`);
  if type(d,`*`)=true then d1 :={op(d)}; else d1 :={d}; fi;
  d2 :=d1;
  for j to nops(d1) do
      if type(op(j,d1),constant) then d2 :=d2 minus {op(j,d1)}; fi;
      if select(type,indets(op(j,d1)),name) intersect {op(n+1,Largs)}={}
      and not type(op(j,d1),constant) then
        if type(op(j,d1),`^`) then B :=B union {op(1,op(j,d1))};
      else B :=B union {op(j,d1)};
        fi;
      fi; 
  od;
  den :=convert(d2,`*`);

#1
  F1 :={};
  F2 :={};

  for k to nops(d2) do
  ard1 := select(type,indets(op(k,d2)),name)minus{op(n+1,Largs)};
    for i1 to nops(ard1) do
      a :=CC(op(k,d2),num, op(i1,ard1));
      if type(a,`*`)=true then a1 :={op(a)}; else a1 :={a}; fi;
      F1 :=F1 union SEL(a1,n);
    od;
  od;
  for k1 to nops(nu2) do
  ard2 := select(type,indets(op(k1,nu2)),name) minus {op(n+1,Largs)};
    for j1 to nops(ard2) do
      b :=CC(op(k1,nu2),den, op(j1,ard2));
      if type(b,`*`)=true then b1 :={op(b)}; else b1 :={b}; fi;
       F2 :=F2 union SEL(b1,n);
    od;
  od;
F3 :=F1 intersect F2;
BB :=Cand_Sel(F3, nu,d,n);
B :=B union BB; F :=F union BB;
#2
FF[1]:=F;
 for v from 1 by 1 to 3 do
   if FF[v]&lt;&gt;{} then
     F1 :={};
     F2 :={};
     FF[v+1] :={};
     for k2 to nops(FF[v]) do
      ard3 :=         select(type,indets(op(k2,FF[v])),name)minus{op(n+1,Largs)};
        for i2 to nops(ard3) do     
          c :=CC(op(k2,FF[v]),num, op(i2,ard3));
          s :=CC(op(k2,FF[v]),den, op(i2,ard3));
          if type(c,`*`)=true then c1 :={op(c)}; else c1 :={c}; fi;
          if type(s,`*`)=true then s1 :={op(s)}; else s1 :={s}; fi;
          F1 :=F1 union SEL(c1,n);
          F2 :=F2 union SEL(s1,n);
        od;
     od;
     F3 :=F1 intersect F2;
     BB :=Cand_Sel(F3, nu,d,n); BB1 :=B; B :=B union BB;
     FF[v+1] :=FF[v+1] union (B minus BB1);
   fi;
 od;
#3
if B={} then
  F1 :={};
  F2 :={};
  ard4 := Sargs minus {op(n+1,Largs)};
  for j2 to nops(ard4) do
   din :=factor(a_a*simplify(diff(num,op(j2,ard4)))); 
   did :=factor(a_a*simplify(diff(den,op(j2,ard4))));
   if type (din,`*`)=true then din1 :={op(din)}; else din1 :={din}; fi;
   if type (did,`*`)=true then did1 :={op(did)}; else did1 :={did}; fi;
   F1 :=F1 union SEL(din1,n);
   F2 :=F2 union SEL(did1,n);
  od;

  BB :=Cand_Sel(F1, nu,d,n); B :=B union BB;
  BB :=Cand_Sel(F2, nu,d,n); B :=B union BB;
fi;
A :=product(op(l,B)^_X[l],l=1..nops(B));
mu1 :=d/A;
hyp1 :=subs(seq(_y[i3]=diff(y,`$`(_x,i3)),i3=1..(n-1)),_y[0]=y,mu1);
ode1 :=diff(y,`$`(_x,n))-subs(seq(_y[i3]=diff(y,`$`(_x,i3)),i3=1..(n-1)),_y[0]=y,f1);
 if args[nargs]&lt;&gt;str then 
   unn :={seq(_X[l1],l1=1..nops(B))};
   sols2 :={solve({ODETools[gensys](ode1, _mu = hyp1)},unn)};
   for ik from 1 to nops(sols2) do
     if has(op(ik,sols2),Largs)=false then 
       mu:=subs(op(ik,sols2),hyp1);
     RETURN(mu)
     fi;
   od;
  else print(mu_hyp=hyp1);
  fi;
od;
end proc:
</Font>
</Text-field></Input></Group><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"/></Section><Text-field layout="Normal" style="Normal"/><Section><Title><Text-field layout="Heading 2" style="Heading 2">koif_2</Text-field></Title><Text-field layout="Normal" style="Normal"/><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">koif_2 :=proc(ode,y,con)
local f1,nu,num,d,den,Pro_Cand_Sel,Cand_Sel,Min_Ord,G_Cand,A,B,B1,B2,B3,F,d1,d2,nu1,nu2,ar1,ar10,a1,b,f,g,j,j0,i,ik,k,kk,kmm,km,s,ss,n,_x,hyp1,mu,mu1,ode1,unn,sols2,mug,L,Largs,Sargs;
option `Copyright (c) 2004 by Yuri N. Kosovtsov. All rights reserved.`;

Pro_Cand_Sel :=proc(Q,P,ar1,Sargs,Min_Ord)
local a_a,i,ii,ar2,ar20,KK,KK1,KK2,RR;
KK :={};
KK2 :={};
RR :=simplify(subs(ar1=RootOf(Q,ar1),P));
ar20 :=select(type,indets(RR),name) intersect Sargs;
if ar20&lt;&gt;{} then
  ar2 :=Min_Ord(P,ar20,0);
  if simplify(diff(RR,ar2))&lt;&gt;0 then
    KK1 :=factor(a_a*lhs(ODETools[remove_RootOf](ar2=RootOf(RR,ar2))));
    if type(KK1,`*`)=true then
     for i from 1 to nops(KK1) do
      if select(type,indets(op(i,KK1)),name) intersect Sargs &lt;&gt; {} 
and has(op(i,KK1),RootOf)=false then
        KK2 :=KK2 union {op(i,KK1)}
      fi;
     od;
     for ii from 1 to nops(KK2) do
       if type(op(ii,KK2),`^`)=true then 
         KK :=KK union {op(1,op(ii,KK2))} else KK :=KK union {op(ii,KK2)};
       fi;
     od;
      else KK :=KK union {KK2}
    fi;
  fi;
fi;
RETURN(KK)
end proc:

Cand_Sel :=proc(Q,nu,d,Largs,Min_Ord,n)
local a_a,aaa,ar11,A,k,jjj,sols1,R1,DD,EQ1,YY,W,Can,Cand,RD_Cand;
Cand :={};
YY :={seq(Y[j], j=1..nops(Q))};
W :=sum(Y[ik]*op(ik,Q), ik=1..nops(Q));
RD_Cand :=diff(W,op(nops(Largs),Largs));
A :=[seq(diff(W,op(g,Largs)), g=2..n)];
DD :=diff(W,op(1,Largs))+sum(op(gg+2,Largs)*op(gg,A),gg=1..n-1);
aaa :=select(type,indets(W),name)  intersect convert(Largs,set);
if aaa&lt;&gt;{}then
  ar11 :=Min_Ord(W,aaa,0);
  R1 :=ar11=RootOf(W,ar11);
  EQ1 :=numer(factor(subs(R1,nu*RD_Cand+d*DD)));
  sols1 :={solve({EQ1},YY)};
  for k from 1 to nops(sols1) do
    if has(op(k,sols1),Largs)=false then 
      Can :=factor(a_a*subs(seq(Y[jj]=1,jj=1..nops(Q)),subs(op(k,sols1),W)));
      for jjj from 1 to nops(Can) do
        if (select(type,indets(op(jjj,Can)),name) intersect convert(Largs,set))&lt;&gt;{} then
          Cand := Cand union {op(jjj,Can)};
        fi;
      od;
    fi;
  od;
fi;
RETURN(Cand)
end proc:


Min_Ord :=proc(Q,Sargs,Ra)
local A,C,Args;
Args :=(Sargs minus {Ra}) intersect select(type,indets(Q),name);
if Args &lt;&gt; {} then
  A :=sort(convert({seq(op(l,Args)^degree(Q,op(l,Args)),l=1..nops(Args))},`+`));
  if nops(Args)&gt;1 then
    if type(op(nops(A),A),`^`)=true then
      C :=op(1,op(nops(A),A))
      else C :=op(nops(A),A)
    fi;
    else C :=op(1,Args);
  fi;
  else C :=NULL
fi;
RETURN(C)
end proc:

G_Cand :=proc(PC,num,d,Sargs,Pro_Cand_Sel,Min_Ord,n)
local a,ar11,G;
G :={};
ar11 :=Min_Ord(PC,Sargs,0);
if {ar11}&lt;&gt;{} then
  a :=Pro_Cand_Sel(PC,num,ar11,Sargs,Min_Ord) intersect   Pro_Cand_Sel(PC,d,ar11,Sargs,Min_Ord);
  G :={PC} union a;
fi;
RETURN(G)
end proc:

_x :=op(1,select(type,indets(y),name));
n :=PDEtools[difforder](ode);
Largs :=[_x,seq(_y[m],m=0..n-1)];
Sargs :=convert(Largs,set);
F :=subs({seq(diff(y,`$`(_x,i0))=_y[i0],i0=1..n),y=_y[0]},ode);
f :=[solve(F,_y[n])];
for j0 from 1 to nops(f) do
  f1 :=op(j0,f);
  nu :=numer(f1);
  d :=denom(f1);
  B :={};  
  if type(nu,`*`)=true then nu1 :={op(nu)} else nu1 :={nu}; fi;
    nu2 :=nu1;
    for i to nops(nu1) do
      if select(type,indets(op(i,nu1)),name)={op(n+1,Largs)} then
      nu2 :=nu2 minus {op(i,nu1)};
        if type(op(i,nu1),`^`) then B :=B union {op(1,op(i,nu1))};
      else B :=B union {op(i,nu1)};
        fi;
      fi;
    od;
    num :=convert(nu2,`*`);
    if type(d,`*`)=true then d1 :={op(d)}; else d1 :={d}; fi;
    d2 :=d1;
      for j to nops(d1) do
        if type(op(j,d1),constant) then d2 :=d2 minus {op(j,d1)}; fi;
        if select(type,indets(op(j,d1)),name) intersect {op(n+1,Largs)}={}
          and not type(op(j,d1),constant) then
          if type(op(j,d1),`^`) then B :=B union {op(1,op(j,d1))};
           else B :=B union {op(j,d1)};
          fi;
        fi; 
      od;
    den :=convert(d2,`*`);

#1
  B1 :={};
  for k from 1 to nops(d2) do
    B2 :={};
    ar10 :=(select(type,indets(op(k,d2)),name) intersect     select(type,indets(num),name) ) intersect Sargs;
      if ar10&lt;&gt;{} then
        for km from 1 to nops(ar10) do
          ar1 :=op(km,ar10);
          a1 :=sort(convert(Pro_Cand_Sel(op(k,d2),num,ar1,Sargs,Min_Ord),list),length);
          for kk from 1 to nops(a1)-1 do
            if select(type,indets(op(kk,a1)),name) intersect Sargs &lt;&gt;{}
              then
              g :=G_Cand(op(kk,a1),num,d,Sargs,Pro_Cand_Sel,Min_Ord);
              B2 :=B2 union Cand_Sel(g,nu,d,Largs,Min_Ord,n);
              B1 :=B1 union B2;
            fi;
          od;
        od; 
      fi;
    od;
  B :=B union B1;

#2
  for L from 1 to 2 do
    B3 :={};
    for s from 1 to nops(B1) do
      ar10 :=((select(type,indets(op(s,B1)),name) intersect select(type,indets(num),name) )intersect select(type,indets(d),name)) intersect Sargs;
      if ar10 &lt;&gt;{} then
        for kmm from 1 to nops(ar10) do
          ar1 :=op(kmm,ar10);
          B2 :={};
          a1 :=Pro_Cand_Sel(op(s,B1),num,ar1,Sargs,Min_Ord) intersect Pro_Cand_Sel(op(s,B1),d,ar1,Sargs,Min_Ord);
          for ss from 1 to nops(a1) do
            g :=G_Cand(op(ss,a1),num,d,Sargs,Pro_Cand_Sel,Min_Ord);
            B2 :=B2 union Cand_Sel(g,nu,d,Largs,Min_Ord,n);
            B3 :=B3 union B2;
          od;
        od; 
      fi;
    od;
    B1 :=B3;
    B :=B union B3;
  od;

  A :=product(op(l,B)^_X[l],l=1..nops(B));
  mu1 :=d/A;
  hyp1 :=subs(seq(_y[i3]=diff(y,`$`(_x,i3)),i3=1..(n-1)),_y[0]=y,mu1);
  ode1 :=diff(y,`$`(_x,n))-subs(seq(_y[i3]=diff(y,`$`(_x,i3)),i3=1..(n-1)),_y[0]=y,f1);
  if args[nargs]&lt;&gt;str then 
    unn :={seq(_X[l1],l1=1..nops(B))};
    sols2 :={solve({ODETools[gensys](ode1, _mu = hyp1)},unn)};
    for ik from 1 to nops(sols2) do
      if has(op(ik,sols2),Largs)=false then 
        mu:=subs(op(ik,sols2),hyp1);
        RETURN(mu)
      fi;
    od;
    else
    print(mu_hyp=hyp1);
  fi;
od;
end proc:
</Font>
</Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"/><Text-field layout="Normal" style="Normal"/></Section><Text-field layout="Normal" style="Normal"/></Section><Group><Input><Text-field layout="Normal" style="Normal">Execute p.3 before runing examples!</Text-field></Input></Group><Section><Title><Text-field layout="Heading 1" style="Heading 1">Examples</Text-field></Title><Text-field layout="Normal" style="Normal"/><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">PDEtools[declare](y(x),prime=x);</Font></Text-field></Input></Group><Section><Title><Text-field layout="Heading 1" style="Heading 1">2nd order ODE (koif_1)</Text-field></Title><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">ode := diff(y(x),`$`(x,2)) = diff(y(x),x)*(-2*diff(y(x),x)-y(x)-2+2*x^2*diff(y(x),x)+x^2-x*diff(y(x),x))/x/(-y(x)-2+2*x+2*x*y(x));</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">mu :=koif_1(ode,y(x));</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">ODETools[mutest](mu,ode);</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Text-field layout="Normal" style="Normal"/></Section><Section><Title><Text-field layout="Heading 1" style="Heading 1">3rd order ODE (koif_1)</Text-field></Title><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">ode := diff(y(x),`$`(x,3)) = -(-x*alpha*diff(y(x),x)*diff(y(x),`$`(x,2))+y(x)*diff(y(x),`$`(x,2))^2+y(x)*beta+diff(y(x),x)*x^3+diff(y(x),x)*x*diff(y(x),`$`(x,2))^2+diff(y(x),x)*x*beta+diff(y(x),`$`(x,2))^2*alpha*x^2+diff(y(x),`$`(x,2))^4*alpha+diff(y(x),`$`(x,2))^2*alpha*beta)/(-diff(y(x),`$`(x,2))*x*y(x)+alpha*diff(y(x),x)*x^2+alpha*diff(y(x),x)*beta);</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">mu :=koif_1(ode,y(x));</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">ODETools[mutest](mu,ode);</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Text-field layout="Normal" style="Normal"/></Section><Section><Title><Text-field layout="Heading 1" style="Heading 1">2nd order ODE with trigonometric functions (koif_1)</Text-field></Title><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">ode := diff(y(x),`$`(x,2)) = -(cos(y(x)+diff(y(x),x))*(x^2+2*x*diff(y(x),x)+beta*diff(y(x),x)^2)+(x+diff(y(x),x))*x*sin(y(x)+diff(y(x),x))*diff(y(x),x)*(beta*diff(y(x),x)+x))/(cos(y(x)+diff(y(x),x))*x*(beta-1)+sin(y(x)+diff(y(x),x))*(x+diff(y(x),x))*(beta*diff(y(x),x)+x))/x;</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">mu :=koif_1(ode,y(x));</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">ODETools[mutest](mu,ode);</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Text-field layout="Normal" style="Normal"/></Section><Section><Title><Text-field layout="Heading 1" style="Heading 1">2nd order ODE with an arbitrary function (koif_1)</Text-field></Title><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">ode := diff(y(x),`$`(x,2)) = -(g(y(x)+diff(y(x),x))*(2*x+beta*diff(y(x),x))+diff(y(x),x)*D(g)(y(x)+diff(y(x),x)))/(beta*x*g(y(x)+diff(y(x),x))+D(g)(y(x)+diff(y(x),x)));</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">mu :=koif_1(ode,y(x));</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">ODETools[mutest](mu,ode);</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Text-field layout="Normal" style="Normal"/></Section><Group><Input><Text-field layout="Normal" style="Normal"/></Input></Group><Section><Title><Text-field layout="Heading 1" style="Heading 1">2nd order ODE (koif_2)</Text-field></Title><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">ode := diff(y(x),`$`(x,2)) = -(-x^2-2*y(x)*x-2*x*diff(y(x),x)^2+y(x)+diff(y(x),x)-diff(y(x),x)*x-diff(y(x),x)^3+diff(y(x),x)*x^2+diff(y(x),x)^2)/(-x-y(x)+diff(y(x),x)^2+2*diff(y(x),x)*x^2+2*diff(y(x),x)*y(x));</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">mu :=koif_2(ode,y(x));</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">ODETools[mutest](mu,ode);</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Text-field layout="Normal" style="Normal"/></Section><Section><Title><Text-field layout="Heading 1" style="Heading 1">3rd order ODE (koif_2)</Text-field></Title><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">ode := diff(y(x),`$`(x,3)) = -(-x^2*y(x)-2*x*diff(y(x),x)*diff(y(x),`$`(x,2))+y(x)^2*diff(y(x),x)+y(x)*diff(y(x),`$`(x,2))^2-diff(y(x),x)^3*diff(y(x),`$`(x,2))+diff(y(x),x)*x^3+diff(y(x),x)*x*diff(y(x),`$`(x,2))^2-diff(y(x),`$`(x,2))*x*y(x)^2+x^2*diff(y(x),`$`(x,2))^2+diff(y(x),`$`(x,2))^4)/(-2*diff(y(x),`$`(x,2))*x*y(x)-diff(y(x),x)*diff(y(x),`$`(x,2))^2+x^2*diff(y(x),x)+y(x)*diff(y(x),x)^2);</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">mu :=koif_2(ode,y(x));</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">ODETools[mutest](mu,ode);</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Text-field layout="Normal" style="Normal"/></Section><Section><Title><Text-field layout="Heading 1" style="Heading 1">4th order ODE (koif_2)</Text-field></Title><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">ode := diff(y(x),`$`(x,4)) = (x*diff(y(x),x)^2*diff(y(x),`$`(x,2))*diff(y(x),`$`(x,3))+y(x)*diff(y(x),x)*diff(y(x),`$`(x,2))*diff(y(x),`$`(x,3))+diff(y(x),`$`(x,2))^2*x*y(x)*diff(y(x),`$`(x,3))+diff(y(x),`$`(x,3))^2*x*y(x)*diff(y(x),x)+diff(y(x),`$`(x,3))*x*y(x)^2*diff(y(x),x)+diff(y(x),`$`(x,3))*x^2*y(x)*diff(y(x),x)+diff(y(x),`$`(x,3))*x*y(x)*diff(y(x),x)^2+x*diff(y(x),x)^3*diff(y(x),`$`(x,2))+x^2*diff(y(x),x)^2*diff(y(x),`$`(x,2))+y(x)*diff(y(x),x)*diff(y(x),`$`(x,2))^2+y(x)*diff(y(x),x)^2*diff(y(x),`$`(x,2))+y(x)^2*diff(y(x),x)*diff(y(x),`$`(x,2))+x*y(x)*diff(y(x),`$`(x,2))^3+diff(y(x),`$`(x,2))^2*x*y(x)^2+diff(y(x),`$`(x,2))^2*x^2*y(x)+x*diff(y(x),x)^2*diff(y(x),`$`(x,2))^2-diff(y(x),`$`(x,3))-alpha-diff(y(x),`$`(x,3))*alpha-diff(y(x),`$`(x,2))*diff(y(x),`$`(x,3))-diff(y(x),`$`(x,2))*alpha-diff(y(x),x)*alpha-diff(y(x),x)*diff(y(x),`$`(x,3))-diff(y(x),`$`(x,3))^2)/(x*y(x)*diff(y(x),x)*diff(y(x),`$`(x,2))+alpha-x-y(x)-diff(y(x),x)-diff(y(x),`$`(x,2)));</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">mu :=koif_2(ode,y(x));</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"><Font italic="false" size="12" underline="false">ODETools[mutest](mu,ode);</Font></Text-field></Input></Group><Group><Input><Text-field layout="Normal" prompt="&gt; " style="Maple Input"/></Input></Group><Text-field layout="Normal" style="Normal"/></Section><Text-field layout="Normal" style="Normal"/></Section><Group><Input><Text-field layout="AC - Disclaimer" style="AC - Disclaimer"><Font executable="false" family="Times New Roman" foreground="[0,0,0]" size="9" style="_cstyle262" underline="false">Disclaimer:</Font> While every effort has been made to validate the solutions in this worksheet, Waterloo Maple Inc. and the contributors are not responsible for any errors contained and are not liable for any damages resulting from the use of this material.</Text-field></Input></Group><Text-field/><Text-field/></Worksheet>