Directory UMM :Data Elmu:jurnal:J-a:Journal of Computational And Applied Mathematics:Vol102.Issue2.1999:

Journal of Computational and Applied Mathematics 102 (1999) 195–220

Symbolic computation of normal forms for semi-simple cases
Qinsheng Bi1 , Pei Yu∗
Department of Applied Mathematics, University of Western Ontario, London, Ont., Canada N6A 5B7
Received 8 December 1997; received in revised form 23 July 1997

Abstract
This paper presents a method and computer programs for computing the normal forms of ordinary di erential equations
whose Jacobian matrix evaluated at an equilibrium involves semi-simple eigenvalues. The method can be used to deal
with systems which are not necessarily described on a center manifold. An iterative procedure is developed for nding
the closed-form expressions of the normal forms and associated nonlinear transformations. Computer programs using
a symbolic computer language Maple are developed to facilitate the application of the method. The programs can be
conveniently executed on a main frame, a workstation or a PC machine without any interaction. A number of examples
are presented to demonstrate the applicability of the method and the computation eciency of the Maple programs.
c 1999 Elsevier Science B.V. All rights reserved.

AMS classi cation: 34C20; 58F36; 34A34
Keywords: Normal forms; Semi-simple; Center manifold; Symbolic computation; Maple

1. Introduction


The theory of normal forms has played an important role in the study of dynamic behavior of
nonlinear systems near equilibria because it greatly simpli es the analysis and formulations. The
method of normal forms has been extensively discussed and references can be found, for example,
in [1, 5–7]. The normal form theory is usually applied together with center manifold theory. With
the conventional approach, rst a series of successive nonlinear transformations are used to nd a
locally invariant small-dimensional manifold called center manifold which can exhibit bifurcation
and other dynamic behavior of the original system near an equilibrium. Then additional nonlinear
transformations are employed to transform the center manifold to a new system in a simpler form
called a normal form. In general, to obtain a “form” of a normal form, a homogeneous polynomial

1

Corresponding author. Tel.: (519) 679-2111 ext 8783; fax: (519) 661-3523; e-mail: [email protected].
Permanent address: Department of Mechanics, Tianjin University, P. R. China, 300072.

c 1999 Elsevier Science B.V. All rights reserved.
0377-0427/99/$ – see front matter
PII: S 0 3 7 7 - 0 4 2 7 ( 9 8 ) 0 0 2 2 2 - 2


196

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

vector eld of degree k is found rst and then the original vector eld is decomposed into two
parts, of which the so-called non-resonant terms are eliminated and the remaining resonant terms
form a normal form. This simple form can be used conveniently for analyzing the dynamic behavior
of the original system in the vicinity of an equilibrium.
However, it is not a simple task to nd a normal form for a given system of di erential equations.
In particular, it is dicult to derive the explicit formulas of a normal form in terms of the coecients
of the original nonlinear system. Therefore, the crucial part in computing normal forms is the
computation eciency in nding the coecients of the normal forms and associated nonlinear
transformations. Furthermore, algebraic manipulations become very involved as the order of normal
forms increases. Thus, symbolic computations using symbolic computer languages such as Maple,
Mathematica and Macsyma have been introduced to computing normal forms. For example, Chen
and Zhang [3] have coded a symbolic computer program for computing the explicit coecients of
the normal form of Hopf bifurcation. Rand and Keith [8] developed a simple and elegant program
to compute the coecients of a normal form. However, they do not compute the “form” of the
form, but assume that the “form” of the normal form is already known. Later, Chow et al. [4]
developed computer programs to improve the method of Rand and Keith. They compute not only

the coecients of a normal form, but also the “form” of the normal form. They rst calculate the
“form” of a xed matrix A and then compute the normal form of the original di erential equations.
Their method is, as usual, applicable only to systems described on a center manifold and it rst needs
to nd the normal form of the linear operator A . Moreover, their method requires for computing
inverse matrices, which might be very time consuming especially when the dimension of the system
or the order of the normal form is high.
In this paper, ecient symbolic computation programs are developed for computing explicit normal forms and associated nonlinear transformations based on the coecients of the original di erential equations. The approach used in this paper combines the center manifold theory and normal
form theory into one step to simultaneously obtain the closed-form expressions. It does not require
for calculating large dimension inverse matrices and therefore, greatly reduces computation time. In
fact, although the method deals with a full-dimensional system (including both center manifold and
noncenter manifold), the dimension of the matrix system generated from the iterative procedure is
the same as that of the center manifold for any high-order normal forms. It has been shown that
the approach is very computational ecient and fast, and therefore, is particularly useful for the
computation of high-dimensional systems and high-order normal forms [2].
The methodology is described in the next section. Section 3 outlines the symbolic computer
programs, and a number of examples are presented in Section 4. Conclusions are drawn in the last
section.
2. Methodology

Consider a set of nonlinear ordinary di erential equations, described by

x˙ = Ax + F (x);

x ∈ Rn ;

F (x) : Rn → Rn ;

(1)

where A is an n × n matrix and Ax represents the linear part of system (1). It is assumed that the
nonlinear function F is analytic, satisfying Fi = 0 and @Fi =@xj = 0 at the origin x = 0, ∀i; j = 1; 2; : : : ; n

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

197

where Fi and xj are components of F and x, respectively. Eq. (1) can be transformed into
y˙ = J y + f ( y)

(2)


under the linear transformation
x = T y;

(3)

such that J is now in Jordan canonical form. The main attention of this paper focuses on the study
of semi-simple cases. By letting the eigenvalues of A with zero real parts be 1 ; 2 ; : : : ; n0 , and
those with nonzero real parts be n0 +1 ; n0 +1 ; : : : ; n , one can write J = T −1 AT = diag(J0 ; J1 ), where
J0 = diag(1 ; 2 ; : : : ; n0 ) corresponding to the eigenvalues of J with zero real parts, J1 = diag(n0 +1 ;
n0 +2 ; : : : ; n ) corresponding to the eigenvalues of J with nonzero real parts. Further, let y = (w; C)T ,
where w and C are variables associated with the eigenvalues of J with zero real parts and nonzero
real parts, respectively. Then, Eq. (2) can be rewritten as
w˙ = J0 w + f1 (w; C)
C˙ = J1 C + f2 (w; C):

(4)

With the aid of the center manifold theory, one may de ne C in the form
C = V (w);


V (0) = 0;

@Vj (0)
=0
@wi

(i = 1; 2; : : : ; n0 ; j = n0 + 1; : : : ; n);

(5)

satisfying
Dw V (w)[ J0 w + f 1 (w; V (w))] = J1 V (w) + f 2 (w; V (w)):

(6)

Once V (w) is found from the above equation, the center manifold may be described as
w˙ = J0 w + f 1 (w; V (w)):

(7)


Furthermore, Eq. (7) can be transformed into a set of simpler di erential equations — the normal
form
u˙ = J0 u + C (u)

(8)

by using a series of successive nonlinear transformations
w=u +

X

W k (u) = u + W (u);

(9)

k¿2

where W k (u) represents a k th-order homogeneous polynomial of u. Now substituting (9) into (7)
results in
(I + Du W )u˙ = J0 (u + W ) + f 1 (u + W (u); V (u + W (u))):


(10)

A conventional approach for solving Eq. (10) is to use the Taylor expansion
[I + Du W ]−1 = I − Du W + (Du W )2 − (Du W )3 + · · ·

(11)

198

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

and substitute it into (10) to obtain
u˙ = [I + Du W ]−1 [ J0 (u + W ) + f 1 (u + W (u); V (u + W (u)))]

= [I − Du W + (Du W )2 − (Du W )3 + · · ·][J0 u + J0 W + f 1 (u + W (u); V (u + W (u)))]:

(12)

The diculties involved in the above procedure are not only that one has to handle a large amount

of algebraic manipulations, but also that one does not know how to choose the number of terms
given in (11) for a given order of normal forms. In order to overcome the diculties due to the
computation of the inverse of (I + Du W ) an alternative approach may be used. This can be achieved
as follows: rst substituting (8) into (10) yields
(I + Du W (u)) [J0 u + C (u)] = J0 (u + W (u)) + f 1 (u + W (u); V (u + W (u)))

(13)

which can be rearranged as
Du W (u) J0 u − J0 W (u) = f 1 (u + W (u); V (u + W (u))) − Du W (u)C (u) − C (u):

(14)

Next, to nd the expression of the center manifold, one may substitute (9) into (6) to obtain
Dw V (w){J0 (u + W (u)) + f 1 (u + W (u); V (u + W (u)))}

= J1 V (u + W (u)) + f 2 (u + W (u); V (u + W (u))):

(15)


Now, rewrite (14) as
J0 W (u) + f 1 (u + W (u)) = Du W (u) J0 u + Du W (u) C (u) + C (u);

(16)

and then substitute the above equation into (15) to give
Dw V (w)(I + Du W (u))(J0 u + C (u))

= J1 V (u + W (u)) + f2 [u + W (u); V (u + W (u))]

(17)

which can be rewritten as
Du V (u + W (u)) J0 u − J1 V (u + W (u))

= f2 [u + W (u); V (u + W (u))] − Du V (u + W (u)) C (u):

(18)

Finally, combining (18) with (14) yields

W (u)
V˜ (u)

Du

=

!



0
J1



f 1 (u + W (u); V˜ (u))
f 2 (u + W (u); V˜ (u))

!

J
J0 u − 0
0

W (u)
V˜ (u)
− Du

!

W (u )
V˜ (u)

!

C (u) −





C (u )
;
0

(19)

where V˜ (u) = V (u + W (u)), Let
H (u ) =

!

W (u )
;
V˜ (u)

!

f (u + W (u); V˜ (u))
;
f (u ) = 1
f 2 (u + W (u); V˜ (u))

C =





C (u )
;
0

(20)

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

199

then (19) can be written in a compact form
Du H (u) J0 u − J H (u) = f (u) − Du H (u) C (u) − C (u):

(21)

Eq. (21) is all what we need for computing the normal forms and nonlinear transformations of
system (1). If one can nd the expressions of H (u) and C (u) from Eq. (21), one then have
obtained the normal forms and associated nonlinear transformations. In general, however, the closedform solutions of Eq. (21) cannot be found. Thus, approximate solutions may be assumed in the
form of
X

H (u ) =

H m (u) =

m¿2

X

m¿2

and
X

C (u) =

m

C (u) =

m¿2

X

m¿2



mn

X



m1 +m2 +···+mn0 = m



X



m1 +m2 +···+mn0 = m



(22)



(23)

Hm1 m2 ::: mn0 u1m1 u2m2 : : : un0 0 

mn
C m1 m2 :::mn0 u1m1 u2m2 : : : un0 0 :

Further, suppose that f (u) − Du H (u)C (u) is given in the form
f (u) − Du H (u)C (u) ≡

X

m¿2

˜m

f (u ) =

X

m¿2




X

m1 +m2 +···+mn0 = m

f˜m1 m2 ::: mn u1m1 u2m2
0






mn
: : : un0 0 ;

(24)

then it can be shown that f˜m (u) depends upon H m (u) and C m (u) for m′ ¡m only. Therefore, once


H m (u) and C m (u) (m′ ¡m) are determined, the expression of f˜m (u) is then de nitely de ned. The
main results obtained using the procedure discussed above are summarized below.
If the eigenvalues of A with zero real parts are all semi-simple; then Eq. (21) can be written
in the form
(0 I − J ) Hm1 m2 ::: mn0 = f˜m1 m2 ::: mn0 − C m1 m2 ::: mn0 ;

(25)

where C m1 m2 ::: mn0 = (Cm1 m2 ::: mn0 0)T and 0 = m1 1 + m2 2 + · · · + mn0 n0 ; n0 is the number of eigenvalues
with zero real parts.
This can be shown as follows. First note that when the eigenvalues of A with zero real parts are
all semi-simple, then J0 can be put in the form
J0 = diag (1 ; 2 ; : : : ; n0 ):

(26)

Thus, for a xed integer m, the expression of Du H (u) J0 u can be written as


Du

X

m1 +···+mn0 =m



=

X



mn
Hm1 m2 ::: mn0 u1m1 u2m2 : : : un0 0  (J0

m1 +···+mn0 = m

u)



mn
Du Hm1 m2 ::: mn0 u1m1 u2m2 : : : un0 0  (J0

u)

200

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

=

X

m1 +···+mn0 = m

=

X

"

n0
X
@
i=1

@ui

(Hm1 m2 ::: mn0

u1m1 u2m2

mn
: : : un0 0 )i ui

#
mn

(m1 1 + m2 2 + · · · + mn0 n0 )Hm1 m2 ::: mn0 u1m1 u2m2 : : : un0 0

m1 +···+mn0 =m

=

X

m1 +···+mn0 = m

mn

0 Hm1 m2 ::: mn0 u1m1 u2m2 · · · un0 0 :

(27)

Finally, substituting Eq. (27) into (21) and comparing the coecients of the components u1m1
mn
u2m2 : : : un0 0 in the resulting equation yields Eq. (25), and this completes the proof.
It is noted that the solution of Eq. (25) is related to the singularity of the matrix
A0 = 0 I − J:

(28)

So, according to the normal form theory, C m1 m2 ::: mn0 must be in the complementary space of range A0 .
If we can nd all the coecients Hm1 m2 ::: mn0 and Cm1 m2 ::: mn0 which satisfy Eq. (25), then we have
solved the problem. To achieve this, we need to treat the nonresonant and resonant terms separately.
(1) Nonresonant terms. In this case, it can be shown that (A0 ) 6= 0 (the notation (A0 ) denotes
the eigenvalues of A0 ) implying that A0 is nonsingular. Therefore, Hm1 m2 ::: mn0 can always be
determined for a given Cm1 m2 ::: mn0 . In order to obtain a normal form for this particular order as
simple as possible, one may choose Cm1 m2 ::: mn0 = 0, and thus,
Cm1 m2 ···mn0 = 0;

˜
Hm1 m2 ···mn0 = A−1
0 fm1 m2 ···mn :
0

(29)

(2) Resonant terms. For this case, (A0 ) = 0, which implies that A0 is singular, and thus, Hm1 m2 ···mn0
cannot be uniquely determined from Eq. (25) for a given Cm1 m2 ···mn0 . The procedure of nding
the coecients of Hm1 m2···mn0 and Cm1 m2 ···mn0 for this case is as follows. Suppose that the number
of zero eigenvalues of A0 is s, then the eigenvalues of A0 can be expressed as {0; 0; : : : ; 0;
s+1 ; s+2 ; : : : ; n }, and thus the matrix A0 can be written as
A0 = diag (0; 0; : : : ; 0; s+1 ; s+2 ; : : : ; n ):

Further, de ne the complementary linear operator of A0 as A∗ , given by
A∗ = diag(1; 1; : : : ; 1; 0; 0; : : : ; 0);

(30)

(31)

where the number of 1’s is s and the number of 0’s is n − s. Consequently, A = A0 + A∗ is
nonsingular, and Eq. (25) becomes
(32)
(A − A∗ )Hm1 m2 ···mn0 = f˜m1 m2 ···mn0 − C m1 m2 ···mn0 ;
where A − A∗ = A0 is singular. In order to uniquely determine Hm1 m2 ···mn0 and Cm1 m2 ···mn0 from
Eq. (32), the following procedure is developed. First, introduce a variable H m1 m2 ···mn0 in the
auxiliary equation
AH m1 m2 ···mn0 = f˜m1 m2 ···mn

0

(33)

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

201

from which H m1 m2 ···mn0 can be uniquely determined as
H m1 m2 ···mn0 = A−1 f˜m1 m2 ···mn

(34)

0

because A is nonsingular. Next, choose
C m1 m2 ···mn0 = A∗ H m1 m2 ···mn0

(35)

which indicates that the n0 -dimensional vector Cm1 m2 ··· mn0 , having at most s nonzero components,
yields a simple form in this order. Finally, Hm1 m2 ···mn0 can be determined from the equation
Hm1 m2 ···mn0 = A−1 ( f˜m1 m2 ···mn − C m1 m2 ···mn0 ):

(36)

0

It is easy to show that the uniquely determined coecients Cm1 m2 ···mn0 , given by Eq. (35), and
Hm1 m2 ···mn0 , described by Eq. (36), satisfy Eq. (32).
We summarize the above results below:
For a xed m; the coecients; Cm1 m2 ···mn0 ; of the normal form and the corresponding coecients;
Hm1 m2 ···mn0 ; of the nonlinear transformation are determined from the following formulas.
(i) If A0 is nonsingular; then
Cm1 m2 ···mn0 = 0;

˜
Hm1 m2 ···mn0 = A−1
0 f m1 m2 ···mn :
0

(ii) If A0 is singular; then
C m1 m2 ···mn0 = A∗ A−1 f˜m1 m2 ··· mn ;
0

Hm1 m2 ···mn0

= A−1 ( f˜m1 m2 ··· mn0 − C m1 m2 ::: mn0 );

where A = A0 + A∗ .
(iii) In order to nd the explicit expression of the center manifold; let Hm1 m2 ···mn0 = (Hm(1)1 m2 ···mn0 ;
Hm(2)1 m2 ···mn0 )T ; where the superscripts (1) and (2) denote the parts of Hm1 m2 ···mn0 corresponding
to J0 and J1 of J; respectively. Then combining Eqs. (5), (19) and (21) yields the center
manifold; described by
H (u ) =

X

m¿2




X

m1 +m2 +···+mn0 = m

mn



Hm(2)1 m2 ···mn0 u1m1 u2m2 : : : un0 0 :

3. Outline of symbolic computer programs

All the formals presented in the previous section are given explicitly in terms of the coecients
of the original di erential equations, and thus can be easily implemented on a symbolic computation system. The symbolic manipulation language Maple has been used to code these explicit

202

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

formulas. The symbolic computer programs including the source code and the input le are listed
in Appendices A and B. In this section, we shall outline the computer programs.
3.1. Create the input le
(a) Set the variables:
m1 — the number of the zero eigenvalues of the Jacobian.
m2 — the number of pairs of pure imaginary eigenvalues of the Jacobian.
m3 — the number of the nonzero real eigenvalues of the Jacobian.
m4 — the number of pairs of complex conjugate eigenvalues of the Jacobian.
norder — the order of normal forms to be computed.
cc — the dimension of center manifold.
(b) Create the vector eld, i.e., the functions fi ; i = 1; 2; : : : ; n; n = m1 + 2m2 + m3 + 2m4 is the
dimension of the system.
3.2. Compute the normal form and nonlinear transformation
(a) Read a prepared input le.
(b) Transform the original system given in real coordinates (x1 ; x2 ; : : : ; xn )T to a new system described in complex coordinates (v1 ; v2 ; : : : ; vn )T .
(c) Compute the j th-order vector eld, Gi .
(d) Compute the j th-order normal form, Fj , and the j th-order nonlinear transformation, Tj .
(i) Compute the coecients of the j th-order normal form, Ci1 ; j1 ; j2 ;:::; jcc , and the j th-order nonlinear transformation, Hi2 ; j1 ; j2 ;:::; jcc , where i1 = 1; 2; : : : ; cc; i2 = 1; 2; : : : ; n.
(ii) Use the coecients Ci1 ; j1 ; j2 ;:::; jcc and Hi2 ; j1 ; j2 ;:::; jcc to form the j th-order normal form, Fj , and
the j th-order nonlinear transformation, Tj .
(e) When j¡norder, repeat step (d).
(f) Transform the normal form and nonlinear transformation obtained in complex form back to real
form.
(g) Write the normal form and nonlinear transformation into the output les NF and NT, respectively.
4. Examples

In this section, several examples are presented to show the applicability of the method and the
eciency of the symbolic programs. The normal forms and corresponding nonlinear transformations
are obtained by executing the Maple programs on a SGI Octane R10000 workstation. (One sample
of computer output for Example 5 is shown in Appendix C.) All the results given below are up
to 5th order. Since the recursive symbolic program is straightforward, using only simple algebraic
manipulations, so the computation is very ecient. In fact, each example took CPU time of the SGI
Octane R10000 workstation from only few seconds to 1 min to get the results. Moreover, all the
results presented in this paper have been veri ed using the so-called “system veri cation” scheme
described in [9].

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

203

Example 1. The system is described by the following di erential equations:
x˙ 1 = −x2 − (x3 − x1 )2 ;
x˙ 2 = x1 ;

(37)

2

x˙ 3 = −(x3 − x1 ) :

This is a three-dimensional system having an equilibrium x1 = x2 = x3 = 0, and its Jacobian matrix
evaluated at the equilibrium has a simple zero and a pair of pure imaginary eigenvalues, ± i. Chow
et al. have studied this system and given the normal form of this system in cylindrical coordinates
up to 4th-order [4]. By executing our Maple program, we obtained the following normal form up
to 5th-order in cylindrical coordinates:
r˙ = rz +

41 3
r z
36

˙ = 1 −



17 3
rz ;
4

2237 4
1 2
r + 23 z 2 − 6912
r + 191
r 2 z2
24
24
z˙ = − 12 r 2 − z 2 − 271
r 4 + 89 r 2 z 2 + 4z 4 ;
288



75 4
z ;
8

(38)

and the nonlinear transformation (up to 5th-order) is in the form
xi = yi + fi (y1 ; y2 ; y3 );

i = 1; 2; 3

(39)

which is not listed here for brevity, but its postscript le is available from the web site: http:== pyu1.
apmaths.uwo.ca= p˜ yu= pub= preprints (the le’s name is Nontr2.ps= Nontr2.dvi). The relation between
the Cartesian coordinates (y1 ; y2 ; y3 ) and the cylindrical coordinates (r; ; z ) is given by
y1 = r cos ;

y2 = r sin ;

y3 = z:

(40)

It is noted that the normal form (38) is identical to that given by Chow et al. [4] if the last three
terms involved in the second equation of (38) are dropped, which are contributed from the 5th-order
terms of the normal form.
Example 2. This example is a ve-dimensional system:
x˙ 1 = x2 + x12 − x1 x3 ;

x˙ 2 = −x1 + x22 + x1 x4 + x23 ;

x˙ 3 = −x3 + x12 ;

x˙ 4 = −x4 + x5 +
x˙ 5 = −x4 − x5 +

(41)

x12 ;
x22 :

The Jacobian matrix of this system evaluated at the equilibrium xk = 0; k = 1; 2; : : : ; 5 has the eigenvalues ± i; −1 and −1 ± i, two of them have zero real parts, implying that the center manifold is
two dimension. The computer output from the SGI Octane R10000 workstation gives the following
normal form in polar coordinates up to 5th-order:
r˙ = 403 r 3 −

˙ = 1 −

14 867 5
r ;
68 000

7 2
r
12

+

5 691 403 4
r :
14 688 000

(42)

204

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

The nonlinear transformations are given in the form of
x1 = y1 + f1 (y1 ; y2 );
x2 = y2 + f2 (y1 ; y2 );
xi = fi (y1 ; y2 );

(43)

i = 3; 4; 5;

of which the rst two equations give the nonlinear transformation between the coordinates (x1 ; x2 )
and (y1 ; y2 ), while the remaining three equations actually represent the projection of the original
system to the two-dimensional center manifold. The detailed nonlinear transformation again can be
found from http:== pyu1.apmaths.uwo.ca/ ˜pyu= pub= preprints ( le name Nontr2.ps= Nontr2.dvi). The
transformation between the Cartesian coordinates (y1 ; y2 ) and the polar coordinates (r; ) is given by
y1 = r cos ;

y2 = r sin :

(44)

Example 3. Consider the following system:
x˙ 1 = −(x1 − x2 − x4 )2 ;

x˙ 2 = x3 − (x1 − x2 + x5 )2 ;

x˙ 3 = −x2 − (x2 − x3 + x4 )2 ;

(45)

x˙ 4 = −x4 + (x1 − x5 )2 ;

x˙ 5 = −x5 + x6 + (x1 − x4 )2 ;
x˙ 6 = −x5 − x6 + (x2 + x5 )2

whose Jacobian matrix evaluated at the origin involves a simple zero and a pair of pure imaginary
eigenvalues, ± i. So, this example has the same center manifold as that of Example 1, but it includes
noncritical eigenvalues. However, the formulas and programs given in this paper can still be used to
obtain the normal form of the system in one step without using center manifold theory. Executing
our Maple programs gives the following normal form up to 5th-order:
y˙ = − y2 − 21 r 2 + 2y3 − 2yr 2 + 5y4 −
r˙ = yr −

˙ = 1 −

1 3
r
40

67 2
r
40

+ 21 y2 r −

+ 32 y2 +

53 3
yr
20

33 3
y
10

+

+

83
yr 3
50

7
yr 2
100



411 4
r
160



33 2 2
y r − 112 y5 + 1013
y3 r 2
8
40
75597 5
7423 2 3
r + 759
y4 r + 1000
yr ;
136 000
100

219 4
y
50

+



9 022 679 4
r
816 000

+



503
yr 4 ;
800

192391 2 2
yr ;
6000

and the nonlinear transformation can be found in the postscript le Nontr2.ps= Nontr2.dvi.
Example 4. The equations are described by
x˙ 1 = x2 + x13 − x12 x5 + x12 x7 ;

x˙ 2 = −x1 − 2x1 x32 ;

x˙ 3 = 2 x4 + x12 x3 − 4x53 ;

x˙ 4 = − 2x3 ;
x˙ 5 = −x5 + (x1 − x5 )2 ;

(46)

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

x˙ 6 = −x6 + x7 + (x1 − x4 )2 ;
x˙ 7 = −x6 − x7 + (x2 − x6 )2 :

205

(47)

The Jacobian
matrix evaluated at the origin involves two
√ pairs of pure imaginary eigenvalues: ± i

and ± 2i. (Thus, two frequencies are !1 = 1 and !2 = 2.) This is an internal nonresonant case.
The normal form up to 5th-order given in polar coordinates is as follows:
r˙1 = 38 r13 +

157 5
r
1360 1

˙1 = 1 + 12 r22 −



9 3 2
r r ;
40 1 2

5543 4
r
21760 1



1 4
r
16 2



3 2 2
r r ;
80 1 2

(48)

r˙2 = 41 r12 r2 − 161 r12 r23 ;


˙2 = 2 − 321 2r14 :

The nonlinear transformation between the coordinates xi and yi can also be found from the postscript
le Nontr2.ps= Nontr2.dvi. The relation between (y1 ; y2 ; y3 ; y4 ) and (r1 ; 1 ; r2 ; 2 ) is given by
y1 = r1 sin(1 );

y2 = r1 cos(1 );

y3 = r2 sin(2 );

y4 = r2 cos(2 ):

(49)

It should be noted from the normal form (48) that the equations describing the amplitudes r1 and
r2 are decoupled from the phases 1 and 2 , as expected from the characteristics of nonresonance.
Example 5. The equations of this example are given by
x˙ 1 = x2 + x13 − 2x1 x32 − x12 x5 + 5x2 x62 ;

x˙ 2 = −x1 + x33 − 2x22 x4 + x1 x5 x6 ;

x˙ 3 = x4 + x12 x3 + 3x12 x4 ;
x˙ 4 = −x3 + 4x33 − x32 x4 ;

(50)

2

x˙ 5 = −x5 + (x1 − x5 ) ;

x˙ 6 = −x6 + x7 + (x1 − x4 )2 ;
x˙ 7 = −x6 − x7 + (x2 − x6 )2 ;

where the last three equations are identical to that of Example 4. Now, the two frequencies are
equal, !1 = !2 = 1. This is called internal resonance. Computer output gives the following normal
form (up to 5th-order):
51 4
239 3 2
29 2 2
r r − 169 r1 r24 − ( 83 r22 − 189
r 4 + 256
r1 r2 + 64
r2 )r2 sin(1 −
320 1 2
320 1
2
2
1
7 2
9 2
21 2
r )r r sin 2(1 − 2 ) − ( 4 − 40 r1 + 64 r2 )r1 r2 cos 2(1 − 2 )
64 2 1 2

r˙1 = 83 r13 − 12 r1 r22 −

171 2
+ ( 320
r1 +
− ( 34 r12 + 159
r4
640 1

r1 ˙1 = r1 +

+
+



93 2 2
r r
256 1 2

+

37 4
r )r
256 2 2

cos(1 − 2 ) +

3 2 3
r r
256 1 2

2 )

cos 3(1 − 2 );

313 3 2
109 2 2
461 5
r + 320
r1 r2 + 323 r1 r24 + ( 41 r22 − 400
r1 r2 + 649 r24 )r1 sin 2(1 − 2 )
6400 1
1 2
51 4
147 4
69 2 2
r1 + 647 r22 )r1 r22 cos 2(1 − 2 ) − ( 83 r22 − 1600
r1 − 256
r1 r2 + 64
r2 )r2 cos(1 2 )
( 800
37 4
1 2
2677 4
243 2 2
3 2 3
( 4 r1 − 3200 r1 − 256 r1 r2 + 256 r2 )r2 sin(1 − 2 ) − 256 r1 r2 sin 3(1 − 2 );

206

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

r˙2 = 41 r12 r2 − 18 r23 +

+ ( 81 −

39 2
r
128 1

r3r2 −
− ( 15
64 1 2

9 2 3
r r
64 1 2

+

7 2 2
r )r r
128 2 1 2

17
r ) r24
128 1

r2 ˙2 = r2 + 34 r12 r2 − 23 r23 −
− ( 83 −

27 2
r
128 1

− ( 645 r12 −

− 18 r25 + ( 38 r12 −





45 4
r r
128 1 2

37 2 2
r )r r
64 2 1 2



1 3 2
r r
32 1 2

145 2 3
r r
64 1 2



35 2 2
r r )r
128 1 2 2

1 3 2
r r
64 1 2

cos 2(1 − 2 ) +

cos(1 − 2 ) +

21 2
r )r r 2
128 2 1 2

27 4
r
128 1

sin(1 − 2 ) +
3 3 2
r r
32 1 2

sin 3(1 −2 ) −

827 5
r
256 2

+ ( 18 −

7 2
cos 2(1 − 2 ) + ( 128
r2 −

cos(1 − 2 ) −

sin 2(1 − 2 )

3 3 2
r r
32 1 2

39 2
r
128 1

27 2
r )r r 2
64 1 1 2

sin(1 − 2 )

cos 3(1 −2 );

1 2 2
r )r r
64 2 1 2

+

sin 3(1 − 2 ) −

21
r r4
128 1 2

sin 2(1 − 2 )

sin(1 − 2 )

1 3 2
r r
32 1 2

cos 3(1 − 2 ):

(51)

The corresponding nonlinear transformation is given in the same le Nontr2.ps= Nontr2.dvi. The
transformation between the Cartesian system (y1 ; y2 ; y3 ; y4 ) and the polar system (r1 ; 1 ; r2 ; 2 ) is
given by still Eq. (49). However, the di erence between the resonant and nonresonant cases can be
observed from Eqs. (48) and (51) that the amplitudes r1 and r2 for the resonant case are coupled
with the phases 1 and 2 .
Example 6. The nal example illustrates a more complicated system, described by the ninedimensional system:
x˙ 1 = x2 ;
x˙ 2 = −x1 + x72 + x1 x5 ;
x˙ 3 = 2x4 ;

x˙ 4 = −2x3 + (x1 − x5 )2 + x12 x7 ;

x˙ 5 = 3x6 ;

2

x˙ 6 = −3x5 + (x1 − x5 ) −

(52)

x32 x9 ;

x˙ 7 = −x7 + (x1 − x5 )2 ;

x˙ 8 = −x8 + x9 + x12 ;
x˙ 9 = −x8 − x9 + x22 :

It is easy to see that the Jacobian of system (52) includes three pairs of pure imaginary eigenvalues
at the origin, and the frequencies are 1; 2 and 3, which is a 1 : 2 : 3 internal resonance. The following
listed is the normal form up to 5th-order obtained from the computer output.
527 5
r˙1 = 3000
r1 −

9 3 2
r r
400 1 2

− ( 203 r12 r3 −

+

1 446 271 3 2
r r
4 641 000 1 3

201 391 4
r r
1 428 000 1 3

91 061 4
r r +
+ ( 357
000 1 3



19 3
r
120 1



4 686 911
r r4
42 929 250 1 3

69 351 229 2 3
r r ) sin(31
343 434 000 1 3

224 141 809 2 3
r r ) cos(31
1 030 302 000 1 3

3 3 2
r1 r2 sin(41 − 22 ) −
+ 800

r1 ˙1 = r1 −

+

1
r r2
30 1 3

+

9 3 2
r r
800 1 2

787 5
r
6912 1



− 3 )

− 3 )

cos(41 − 22 );

3 3 2
r r
400 1 2

+

280 863 539 3 2
r r
1 169 532 000 1 3

+

2 338 739 297
r r4
27 818 154 000 1 3

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220
76 067 4
− ( 357
r r +
000 1 3

− ( 203 r12 r3 −

224 141 809 2 3
r r ) sin(31
1 030 302 000 1 3

2407 4
r r
11 424 1 3

9 3 2
r1 r2 sin(4 1 − 22 ) +
+ 800

r˙2 = −( 14 r12 +

347 4
r
960 1

− ( 12 r1 r3 +

+

r2 ˙2 = 2r2 − ( 14 r12 +

+ ( 12 r1 r3 +
3
r˙3 = − 2590
r35 −

3 3 2
r r
800 1 2

8443 2 2
r r ) cos(21
25 200 1 3

24 539 3
r r
61 200 1 3

347 4
r
960 1

+

24 539 3
r r
61 200 1 3

1009 4
r r
12 750 1 3

+

− 2 ) −



3 3 2
r r
200 1 2

9 3 2
− 200
r1 r2 cos(31 − 3 ) −

44 697 3 2
r r
1 100 750 1 3

11 3
r r
85 1 3

1 4
r
20 1

+

3 3
r
20 1

sin(31 − 3 )i +

sin(1 + 2 − 3 );

cos(21 − 2 )

+ 2 − 3 ) +

8509 2 3
r r
110 075 1 3

r 5 sin(31 − 3 ) +
+ 581739
800 1

sin(21 − 2 )

− 2 ) +

3901 3
r r ) sin(1
30 240 3 1

33 2 2
r r r
1700 1 2 3

1 4
r
20 1

+ 2 − 3 ) +

8443 2 2
r r ) sin(21
25200 1 3

+

− 3 )

cos(4 1 − 22 );

3901 3
r r ) cos(1
30 240 3 1

+

− 3 )

69 351 229 2 3
r r ) cos(31
343 434 000 1 3



11 3
r r
85 1 3

cos(1 + 2 − 3 );

sin(31 − 3 )

173 990 543 3 2
r r
951 048 000 1 3

cos(31 − 3 ) −

17 5
r
500 1

7
r r2r2
360 3 2 1

sin(21 − 23 + 22 )

9 3 2
− 400
r1 r2 cos(1 + 3 − 22 ) −

1
r r2r2
240 3 2 1

cos(21 − 23 + 22 );

r3 ˙3 = 3r3 −

5 3
16 2
280 761 5
26 750 357 4
r − 105
r1 r3 + 14
r − 419
r r
36 3
60 419 520 3
832 000 1 3
9 3 2
289 3 2
17 5
r1 + 3115
r r + 200
r1 r2 ) sin(31 − 3 )
− ( 500
302 250 1 3
1739 5
r
58 800 1

9 3 2
+ ( 400
r1 r2 −

3 3 2
+ ( 400
r1 r2 +

+

3 3 2
r r
200 1 2

+

+

1 2 2
r r r
425 1 2 3

1 658 476 391 3 2
r r ) cos(31
6 657 336 000 1 3

1 2 2
r r r ) sin(21 − 23 + 22 )
240 1 2 3
7 2 2
r r r ) cos(21 − 23 + 22 ):
360 1 2 3

sin(31 − 3 )

cos(31 − 3 )

3 3 2
r1 r2 sin(1 + 3 − 22 ) −
+ 400

− ( 203 r13 +

207

+

68 274 209 2 3
r r
146 853 000 1 3

− 3 )

(53)

The nonlinear transformation is again given in the postscript le Nontr2.ps= Nontr2.dvi. It can be seen
that the above normal form is much more complicated than the preceding ve examples because
more variables are involved in the internal resonances and therefore, more interactions between
amplitudes and phases exist. The complexity of the normal form indicates that the original system
may exhibit more complicated dynamic behavior.
5. Conclusions

Methodology and computer programs have been developed for computing explicit normal forms
for several semi-simple cases. For a given arbitrary n-dimensional system, it does not require the
application of center manifold theorem, because it combines the center manifold theory with the
normal form theory into one step to simultaneously obtain the normal forms and nonlinear transformations. The calculations and formulas are given in a explicit iterative procedure, and thus are very
easy to be implemented on a symbolic computation system. Symbolic computer programs written in
Maple have been developed for automating the computations. It has been shown by several examples

208

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

that the method is computationally ecient and fast, particularly suitable for the computations of
high-dimensional systems and higher-order normal forms.

Acknowledgements

The authors gratefully acknowledge the support of the Natural Sciences and Engineering Research
Council of Canada. Q. B. also would like to acknowledge partial support received from China
Scholarship Council.

Appendix A: The Maple source code

In this appendix, the source code written in Maple is listed, which can be used for computing the
normal form and nonlinear transformation of a given system associated with semi-simple cases: the
Jacobian of the system includes the combination of zero and pairs of pure imaginary eigenvalues.
Note: the Maple source code (named program4) and the input le (named input4) are available
from the web site http:== pyu1.apmaths.uwo.ca= ˜pyu= pub= software.
#
#
#
#
#
#
#
#

This symbolic Maple program was developed to find the
Normal Forms of ordinary differential equations
associated with semi-simple cases: the Jacobian of the
system includes the combination of zero and pairs of pure
imaginary eigenvalues. The theory and methodology are
described in paper "Symbolic computation for normal forms
of differential equations" by Q. Bi and P. Yu, published in
the Journal of Computational and Applied Mathematics.

###
#
#
#
#
#
#
#
#
#
#
#
#
#

DEFINITION OF VARIABLES
###
Eign = the eigenvalues of the Jacobian
x
= the variables of the original system in real form
v
= the variables of the system in complex form
u
= the variables of the normal form
d
= the Frechet derivative
C
= the coefficients of normal forms
F
= normal forms
H
= the coefficients of nonlinear transformations
T
= nonlinear transformations
G
= the jth order vector field
B
= the coefficients of G
NF
= output of normal form
NT
= output of nonlinear transformation

with(linalg):
read input:

# READ A PREPARED INPUT FILE

###
TRANSFORM THE REAL JORDAN FORM TO COMPLEX JORDAN FORM
if m1 0 then

###

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

for i from 1 to m1 do
x[i]
:= v[i]:
f[i]
:= f[i]:
Eign[i] := 0:
od:
fi:
if m2 0 then
mm2 := m1 + 2*m2 - 1:
for i from m1+1 by 2 to mm2 do
x[i]
:= (v[i] + v[i+1])/2:
x[i+1]
:= (v[i] - v[i+1])/2/I:
temp
:= f[i] + f[i+1]*I:
f[i+1]
:= f[i] - f[i+1]*I:
f[i]
:= temp:
Eign[i]
:= diff(f[i], v[i]):
Eign[i+1] := diff(f[i+1], v[i+1]):
od:
fi:
if m3 0 then
for i from m1+2*m2+1 to m1+2*m2+m3 do
x[i]
:= v[i]:
Eign[i] := diff(f[i], v[i]):
od:
fi:
if m4 0 then
for i from m1+2*m2+m3+1 by 2 to n-1 do
x[i]
:= (v[i] + v[i+1])/2:
x[i+1]
:= (v[i] - v[i+1])/2/I:
temp
:=
f[i] + f[i+1]*I:
f[i+1]
:=
f[i] - f[i+1]*I:
f[i]
:=
temp:
Eign[i]
:=
diff(f[i], v[i]):
Eign[i+1] :=
diff(f[i+1], v[i+1]):
od:
fi:
for i from 1 to n do
for k from 1 to n do
Eign[i] := subs(v[k]=0, Eign[i]):
od:
od:
#### INITIALIZATION #####
cm := m1+2*m2:
for i from 1 to n do
T[i] := 0:
F[i] := 0:
d[i] := 0:
od:
#### RECURSIVE PROCEDURE TO COMPUTE THE jth ORDER VECTOR FIELD
for j from 2 to norder do

####

209

210

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

for k from 1 to n do
G[k] := f[k]:
for m from 1 to n do
if m < cm+1 then
G[k] := subs(v[m]=u[m]+T[m], G[k]):
else
G[k] := subs(v[m]=T[m], G[k]):
fi:
od:
G[k] := G[k] - d[k]:
for m from 1 to cm do
G[k] := subs(u[m]=epsilon*u[m],G[k]):
od:
G[k] := subs(epsilon=0,diff(G[k],epsilon$j)/j!):
G[k] := expand(G[k]):
if cm = 2 then
for l from 0 to j do
B[k,l,j-l] := coeff(G[k],u[1],l):
B[k,l,j-l] := coeff(B[k,l,j-l],u[2],j-l):
B[k,l,j-l] := subs(u[1]=0,u[2]=0,B[k,l,j-l]):
od:
elif cm = 3 then
for l from 0 to j do
for m from 0 to j-l do
J := j-l-m:
B[k,l,m,J] := coeff(G[k],u[1],l):
B[k,l,m,J] := coeff(B[k,l,m,J],u[2],m):
B[k,l,m,J] := coeff(B[k,l,m,J],u[3],J):
B[k,l,m,J] := subs(u[1]=0,u[2]=0,u[3]=0,B[k,l,m,J]):
od:
od:
elif cm = 4 then
for l from 0 to j do
for m from 0 to j-l do
for p from 0 to j-l-m do
J := j-l-m-p:
B[k,l,m,p,J] := coeff(G[k],u[1],l):
B[k,l,m,p,J] := coeff(B[k,l,m,p,J],u[2],m):
B[k,l,m,p,J] := coeff(B[k,l,m,p,J],u[3],p):
B[k,l,m,p,J] := coeff(B[k,l,m,p,J],u[4],J):
B[k,l,m,p,J] := subs(u[1]=0,u[2]=0,u[3]=0,u[4]=0,
B[k,l,m,p,J]):
od:
od:
od:
elif cm = 5 then
for l from 0 to j do
for m from 0 to j-l do
for p from 0 to j-l-m do
for q from 0 to j-l-m do
J := j-l-m-p-q:

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

B[k,l,m,p,q,J]
B[k,l,m,p,q,J]
B[k,l,m,p,q,J]
B[k,l,m,p,q,J]
B[k,l,m,p,q,J]
B[k,l,m,p,q,J]

:=
:=
:=
:=
:=
:=

coeff(G[k],u[1],l):
coeff(B[k,l,m,p,q,J],u[2],m):
coeff(B[k,l,m,p,q,J],u[3],p):
coeff(B[k,l,m,p,q,J],u[4],q):
coeff(B[k,l,m,p,q,J],u[5],J):
subs(u[1]=0,u[2]=0,u[3]=0,u[4]=0,
u[5]=0, B[k,l,m,p,q,J]):

od:
od:
od:
od:
elif cm = 6 then
for l from 0 to j do
for m from 0 to j-l do
for p from 0 to j-l-m do
for q from 0 to j-l-m do
for s from 0 to j-l-m do
J := j-l-m-p-q-s:
B[k,l,m,p,q,s,J]:= coeff(G[k],u[1],l):
B[k,l,m,p,q,s,J]:=coeff(B[k,l,m,p,q,s,J],u[2],m):
B[k,l,m,p,q,s,J]:=coeff(B[k,l,m,p,q,s,J],u[3],p):
B[k,l,m,p,q,s,J]:=coeff(B[k,l,m,p,q,s,J],u[4],q):
B[k,l,m,p,q,s,J]:=coeff(B[k,l,m,p,q,s,J],u[5],s):
B[k,l,m,p,q,s,J]:=coeff(B[k,l,m,p,q,s,J],u[6],J):
B[k,l,m,p,q,s,J]:=subs(u[1]=0,u[2]=0,u[3]=0,
u[4]=0,u[5]=0,u[6]=0,B[k,l,m,p,q,s,J]):
od:
od:
od:
od:
od:
fi:
od:
##### COMPUTE THE jth ORDER NORMAL FORM AND NONLINEAR TRANSFORMATION
if cm = 2 then
for l from 0 to j do
for k from 1 to cm do
lambda0 := l*Eign[1]+(j-l)*Eign[2]-Eign[k]:
if lambda0 = 0 then
C[k,l,j-l] := B[k,l,j-l]:
H[k,l,j-l] := 0:
else
H[k,l,j-l] := B[k,l,j-l]/lambda0:
C[k,l,j-l] := 0:
fi:
od:
for k from cm+1 to n do
lambda0
:= l*Eign[1] + (j-l)*Eign[2] - Eign[k]:
H[k,l,j-l] := B[k,l,j-l]/lambda0:
C[k,l,j-l] := 0:

####

211

212

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

od:
od:
elif cm = 3 then
for l from 0 to j do
for m from 0 to j-l do
J := j-l-m:
for k from 1 to cm do
lambda0 := l*Eign[1] + m*Eign[2] + J*Eign[3] - Eign[k]:
if lambda0 = 0 then
C[k,l,m,J] := B[k,l,m,J]:
H[k,l,m,J] := 0:
else
H[k,l,m,J] := B[k,l,m,J]/lambda0:
C[k,l,m,J] := 0:
fi:
od:
for k from cm+1 to n do
lambda0
:= l*Eign[1]+m*Eign[2]+J*Eign[3]-Eign[k]:
H[k,l,m,J] := B[k,l,m,J]/lambda0:
C[k,l,m,J] := 0:
od:
od:
od:
elif cm = 4 then
for l from 0 to j do
for m from 0 to j-l do
for p from 0 to j-l-m do
J := j-l-m-p:
for k from 1 to cm do
lambda0 := l*Eign[1] + m*Eign[2] + p*Eign[3]
+ J*Eign[4] - Eign[k]:
if lambda0 = 0 then
C[k,l,m,p,J] := B[k,l,m,p,J]:
H[k,l,m,p,J] := 0:
else
H[k,l,m,p,J] := B[k,l,m,p,J]/lambda0:
C[k,l,m,p,J] := 0:
fi:
od:
for k from cm+1 to n do
lambda0 := l*Eign[1] + m*Eign[2] + p*Eign[3]
+ J*Eign[4] - Eign[k]:
H[k,l,m,p,J] := B[k,l,m,p,J]/lambda0:
C[k,l,m,p,J] := 0:
od:
od:
od:
od:
elif cm = 5 then
for l from 0 to j do
for m from 0 to j-l do

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

for p from 0 to j-l-m do
for q from 0 to j-l-m-p do
J := j-l-m-p-q:
for k from 1 to cm do
lambda0 := l*Eign[1] + m*Eign[2] + p*Eign[3]
+ q*Eign[4] + J*Eign[5]- Eign[k]:
if lambda0 = 0 then
C[k,l,m,p,q,J] := B[k,l,m,p,q,J]:
H[k,l,m,p,q,J] := 0:
else
H[k,l,m,p,q,J] := B[k,l,m,p,q,J]/lambda0:
C[k,l,m,p,q,J] := 0:
fi:
od:
for k from cm+1 to n do
lambda0 := l*Eign[1] + m*Eign[2] + p*Eign[3]
+ q*Eign[4] + J*Eign[5]- Eign[k]:
H[k,l,m,p,q,J] := B[k,l,m,p,q,J]/lambda0:
C[k,l,m,p,q,J] := 0:
od:
od:
od:
od:
od:
elif cm = 6 then
for l from 0 to j do
for m from 0 to j-l do
for p from 0 to j-l-m do
for q from 0 to j-l-m-p do
for r from 0 to j-l-m-p-q do
J := j-l-m-p-q-r:
for k from 1 to cm do
lambda0 := l*Eign[1] + m*Eign[2] + p*Eign[3]
+ q*Eign[4] + r*Eign[5] +J*Eign[6]- Eign[k]:
if lambda0 = 0 then
C[k,l,m,p,q,r,J] := B[k,l,m,p,q,r,J]:
H[k,l,m,p,q,r,J] := 0:
else
H[k,l,m,p,q,r,J]:= B[k,l,m,p,q,r,J]/lambda0:
C[k,l,m,p,q,r,J]:= 0:
fi:
od:
if cm < n then
for k from cm+1 to n do
lambda0 := l*Eign[1] + m*Eign[2] + p*Eign[3]
+ q*Eign[4] + r*Eign[5] +J*Eign[6]- Eign[k]:
H[k,l,m,p,q,r,J] := B[k,l,m,p,q,r,J]/lambda0:
C[k,l,m,p,q,r,J] := 0:
od:
fi:
od:

213

214

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

od:
od:
od:
od:
fi:
for k from 1 to n do
if cm = 2 then
for l from 0 to j do
xs
:= u[1]^l*u[2]^(j-l):
T[k] := T[k] + H[k,l,j-l]*xs:
F[k] := F[k] + C[k,l,j-l]*xs:
od:
elif cm = 3 then
for l from 0 to j do
for m from 0 to j-l do
J
:= j-l-m:
xs
:= u[1]^l*u[2]^m*u[3]^J:
T[k] := T[k] + H[k,l,m,J]*xs:
F[k] := F[k] + C[k,l,m,J]*xs:
od:
od:
elif cm = 4 then
for l from 0 to j do
for m from 0 to j-l do
for p from 0 to j-l-m do
J
:= j-l-m-p:
xs
:= u[1]^l*u[2]^m*u[3]^p*u[4]^J:
T[k] := T[k] + H[k,l,m,p,J]*xs:
F[k] := F[k] + C[k,l,m,p,J]*xs:
od:
od:
od:
elif cm = 5 then
for l from 0 to j do
for m from 0 to j-l do
for p from 0 to j-l-m do
for q from 0 to j-l-m-p do
J
:= j-l-m-p-q:
xs
:= u[1]^l*u[2]^m*u[3]^p*u[4]^q*u[5]^J:
T[k] := T[k] + H[k,l,m,p,q,J]*xs:
F[k] := F[k] + C[k,l,m,p,q,J]*xs:
od:
od:
od:
od:
elif cm = 6 then
for l from 0 to j do
for m from 0 to j-l do
for p from 0 to j-l-m do
for q from 0 to j-l-m-p do
for r from 0 to j-l-m-p-q do

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

J :=
xs:=
T[k]
F[k]

j-l-m-p-q-r:
u[1]^l*u[2]^m*u[3]^p*u[4]^q*u[5]^r*u[6]^J:
:= T[k] + H[k,l,m,p,q,r,J]*xs:
:= F[k] + C[k,l,m,p,q,r,J]*xs:

od:
od:
od:
od:
od:
fi:
od:
#### TO COMPUTE THE FRECHET DERIVATIVES ####
for i from 1 to n do
d[i] := 0:
if i < cm+1 then
TT[i] := u[i] + T[i]:
else
TT[i] := T[i]:
fi:
for l from 1 to cm do
d[i]:= d[i] + diff(TT[i],u[l])*F[l]:
od:
od:
od:
##### TRANSFORM BACK TO SYSTEM IN REAL FORM
for i from 1 to n do
if i < cm+1 then
F[i] := Eign[i]*u[i] + F[i]:
T[i] := u[i] + T[i]:
else
T[i] :=T[i]:
fi:
TT[i] := T[i]:
od:
if m1 0 then
for i from 1 to m1 do
u[i] := y[i]:
od:
fi:
if m2 0 then
for i from m1+1 by 2 to mm2 do
u[i]
:= y[i] + I*y[i+1]:
u[i+1] := y[i] - I*y[i+1]:
od:
for i from m1+1 by 2 to mm2 do
temp1 := (F[i] + F[i+1])/2:
temp2 := (T[i] + T[i+1])/2:
F[i+1] := (F[i] - F[i+1])/2/I:
T[i+1] := (T[i] - T[i+1])/2/I:

####

215

216

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

F[i]
T[i]

:= temp1:
:= temp2:

od:
fi:
if m1 0 then
for i from 1 to m1 do
T[i] := T[i]:
F[i] := F[i]:
od:
fi:
if m3 0 then
for i from m1+2*m2+1 + 2 to m1+2*m2+m3 do
T[i] := T[i]:
od:
fi:
if m4 0 then
for i from m1+2*m2+m3+1 by 2 to n-1 do
temp
:= (T[i] + T[i+1])/2:
T[i+1] := (T[i] - T[i+1])/2/I:
T[i]
:= temp:
od:
fi:
F := simplify(F):
save F,‘NF‘;
# OUTPUT OF NORMAL FORM
save T,‘NT‘;
# OUTPUT OF NONLINEAR TRANSFORMATION

Appendix B: The input le

A sample input le including all the examples considered in this paper is given below. The readers
can prepare their own input le by modifying the values of several parameters and the vector eld.
The modi cation is straightforward.
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#

d x_1 / dt = f_1
d x_2 / dt = f_2
...
d x_n / dt = f_n
The functions, f_i, must be put in the form such that the
Jacobian of the system is in block real Jordan canonical form:

J

=

[
|
|
]
[ J_0 |
|
]
[ - - | - - | - - ]
[
| J_1 |
]
[ - - | - - | - - ]
[
|
| J_2 ]
[
|
|
]

where J_0 represents the part of eigenvalues with zero real parts.

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

#
#
#
#
#
#
#

J_1 includes the part of real eigenvalues, and J_2 has the
part of complex conjugate eigenvalues, which must appear in pairs.
For the following examples,

###
#
#
#
#
#
#
#
#

DEFINITION OF VARIABLES
###
m1
= number of zero eigenvalues
m2
= number of pairs of purely imaginary eigenvalues
m3
= number of non-zero real eigenvalues
m4
= number of pairs of complex conjugate eigenvalues
n
= the dimension of the system
norder = the order of normal forms to be computed
cc
= the dimension of center manifold
f[i]
= the ith component of the vector field of the system

###
m1
m2
m3
m4
n
norder
cc

INPUT DATA FILE STARTS HERE
:= 0:
:= 3:
:= 1:
:= 1:
:= m1+2*m2+m3+2*m4:
:= 5:
:= m1+2*m2:

J_1

=

[ -1 ]

J_2

=

[ -1 1 ]
[
]
[ -1 -1 ]

###

####
A purely imaginary pair
###
if
cc = 2 then
f[1] :=
x[2] + x[1]^2 - x[1]*x[3]:
f[2] := - x[1] + x[2]^2 + x[1]*x[4] + x[2]^3:
f[3] := - x[3] + x[1]^2:
f[4] := - x[4] + x[5] + x[1]^2:
f[5] := - x[4] - x[5] + x[2]^2:
####
A simple zero and a purely imaginary pair
elif cc = 3 then
f[1] := - (x[1] - x[2] - x[4])^2:
f[2] :=
x[3] - (x[1] - x[2] + x[5] )^2:
f[3] := - x[2] - (x[2] - x[3] + x[4] )^2:
f[4] := - x[4] + (x[1] - x[5])^2:
f[5] := - x[5] + x[6] + (x[1] - x[4] )^2:
f[6] := - x[5] - x[6] + (x[2] + x[5] )^2:

###

####
Two purely imaginary pairs (non-resonance)
###
elif cc = 4 then
f[1] :=
x[2] + x[1]^3 - x[1]^2*x[5] + x[1]^2*x[7]:
f[2] := - x[1] - 2*x[1]*x[3]^2 :
f[3] :=
sqrt(2)*x[4] + x[1]^2*x[3] - 4*x[5]^3:
f[4] := - sqrt(2)*x[3]:
f[5] := - x[5] + (x[1]-x[5])^2:

217

218

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

f[6] := - x[6] + x[7] + (x[1] - x[4] )^2:
f[7] := - x[6] - x[7] + (x[2] - x[6] )^2:
####
Two purely imaginary pairs (resonance)
###
elif cc = 4 then
f[1] :=
x[2] + x[1]^3 - 2*x[1]*x[3]^2 - x[1]^2*x[5] + 5*x[2]*x[6]^2:
f[2] := - x[1] + x[3]^3 - 2*x[2]^2*x[4] + x[1]*x[5]*x[6]:
f[3] :=
x[4] + x[1]^2*x[3] + 3*x[1]^2*x[4]:
f[4] := - x[3] + 4*x[3]^3 - x[3]^2*x[4]:
f[5] := - x[5] + (x[1]-x[5])^2:
f[6] := - x[6] + x[7] + (x[1] - x[4] )^2:
f[7] := - x[6] - x[7] + (x[2] - x[6] )^2:
####
Three
elif cc = 6
f[1] :=
f[2] :=
f[3] :=
f[4] :=
f[5] :=
f[6] :=
f[7] :=
f[8] :=
f[9] :=
fi:

purely imaginary pairs (resonance)
###
then
x[2]:
- x[1] + x[7]^2 + x[1]*x[5]:
2*x[4]:
- 2*x[3] + (x[1] - x[5])^2 + x[1]^2*x[7]:
3*x[6]:
- 3*x[5] + (x[1] - x[5])^2 - x[3]^2*x[9]:
- x[7] + (x[1] - x[5])^2:
- x[8] + x[9] + x[1]^2:
- x[8] - x[9] + x[2]^2:

Appendix C: A sample of computer output

The computer output of the normal form (for Example 5 given in Section 4) of the case of two
pairs of pure imaginary eigenvalues (resoanance), obtained from a SGI Octane R10000 workstation
is listed below. Note that the normal form is given in Cartisian coordinate system yi .
y1dot:= 21/64*y[3]*y[4]^2*y[1]^2-51/32*y[3]^2*y[4]^3-1/2*y[1]*y[2]*y[4]
-217/200*y[1]^3*y[2]*y[4]+3/8*y[1]^3-71/320*y[1]^3*y[3]^2
-37/256*y[3]^5-399/800*y[1]^3*y[2]*y[3]-1/4*y[1]*y[4]^2
+3/8*y[3]^3*y[1]^2-3/4*y[1]*y[3]^2-3/4*y[1]^2*y[3]-45/64*y[1]*y[3]^4
-159/640*y[1]^4*y[3]+941/1600*y[1]^2*y[2]^2*y[3]
-29/256*y[3]^2*y[1]^2*y[4]+7/32*y[1]*y[3]^3*y[4]-9/32*y[2]*y[3]^3*y[4]
-9/8*y[1]*y[3]^2*y[4]^2+171/160*y[1]^3*y[3]*y[4]
-143/1600*y[1]^2*y[3]^2*y[2]+49/128*y[1]*y[2]*y[3]^3
-399/800*y[1]*y[2]^3*y[3]-217/200*y[1]*y[2]^3*y[4]
+311/200*y[1]^2*y[3]*y[2]*y[4]-33/64*y[3]^2*y[4]*y[1]*y[2]
-851/800*y[1]*y[2]^2*y[3]*y[4]+49/128*y[1]*y[2]*y[3]*y[4]^2
+273/400*y[1]^2*y[2]^2*y[4]+1563/1600*y[2]^3*y[3]^2
+2677/3200*y[2]^4*y[3]+461/3200*y[1]^2*y[2]^3
-1163/1600*y[1]*y[2]^2*y[3]^2+3273/1600*y[1]^2*y[4]^2*y[2]
+63/64*y[3]*y[4]^2*y[2]^2-39/64*y[4]^3*y[1]*y[2]
+7/32*y[1]*y[3]*y[4]^3+3/16*y[2]*y[3]^2*y[4]^2-9/32*y[2]*y[3]*y[4]^3
-27/64*y[1]*y[4]^4-29/256*y[4]^3*y[1]^2+69/256*y[4]^3*y[2]^2
-3/8*y[4]^3-51/64*y[4]^5-51/64*y[3]^4*y[4]-3/8*y[3]^2*y[4]

Q. Bi, P. Yu / Journal of Computational and Applied Mathematics 102 (1999) 195–220

+461/6400*y[2]^5-1/64*y[2]*y[3]^4+461/6400*y[1]^4*y[2]
+13/64*y[2]*y[4]^4+147/1600*y[2]^4*y[4]-37/256*y[3]*y[4]^4
+1567/1600*y[2]^3*y[4]^2-1227/1600*y[1]*y[2]^2*y[4]^2
+109/200*y[2]^3*y[3]*y[4]+69/256*y[3]^2*y[2]^2*y[4]
-407/320*y[1]^3*y[4]^2+189/320*y[1]^4*y[4]+3/8*y[1]*y[2]^2
-1/4*y[2]^2*y[3]+15/16*y[3]^3*y[2]^2-1/2*y[2]*y[3]*y[4]+y[2]
-37/128*y[3]^3*y[4]^2;
y2dot:=-69/256*y[3]*y[4]^2*y[1]^2-37/128*y[3]^2*y[4]^3
+399/800*y[1]^3*y[2]*y[4]-1567/1600*y[1]^3*y[3]^2+51/64*y[3]^5
-217/200*y[1]^3*y[2]*y[3]-69/256*y[3]^3*y[1]^2+3/8*y[3]^3
-13/64*y[1]*y[3]^4-147/1600*y[1]^4*y[3]-273/400*y[1]^2*y[2]^2*y[3]
+63/64*y[3]^2*y[1]^2*y[4]-9/32*y[1]*y[3]^3*y[4]-7/32*y[2]*y[3]^3*y[4]
-3/16*y[1]*y[3]^2*y[4]^2+109/200*y[1]^3*y[3]*y[4]
-1227/1600*y[1]^2*y[3]^2*y[2]-39/64*y[1]*y[2]*y[3]^3
-217/200*y[1]*y[2]^3*y[3]+399/800*y[1]*y[2]^3*y[4]
+851/800*y[1]^2*y[3]*y[2]*y[4]-49/128*y[3]^2*y[4]*y[1]*y[2]
+311/200*y[1]*y[2]^2*y[3]*y[4]-33/64*y[1]*y[2]*y[3]*y[4]^2
+941/1600*y[1]^2*y[2]^2*y[4]-407/320*y[2]^3*y[3]^2-189/320*y[2]^4*y[3]
-3273/1600*y[1]*y[2]^2*y[3]^2-1163/1600*y[1]^2*y[4]^2*y[2]
+29/256*y[3]*y[4]^2*y[2]^2-49/128*y[4]^3*y[1]*y[2]
-9/32*y[1]*y[3]*y[4]^3-9/8*y[2]*y[3]^2*y[4]^2-7/32*y[2]*y[3]*y[4]^3
+1/64*y[1]*y[4]^4+15/16*y[4]^3*y[1]^2+3/8*y[4]^3*y[2]^2
-37/256*y[4]^5-37/256*y[3]^4*y[4]-27/64*y[2]*y[3]^4
-45/64*y[2]*y[4]^4-159/640*y[2]^4*y[4]+51/64*y[3]*y[4]^4
-71/320*y[2]^3*y[4]^2+143/1600*y[1]*y[2]^2*y[4]^2
-171/160*y[2]^3*y[3]*y[4]+21/64*y[3]^2*y[2]^2*y[4]
-1563/1600*y[1]^3*y[4]^2+2677/3200*y[1]^4*y[4]+29/256*y[3]^3*y[2]^2
-y[1]+3/8*y[2]^3+51/32*y[3]^3*y[4]^2+3/8*y[1]^2*y[2]-1/4*y[1]^2*y[4]
-1/4*y[2]*y[3]^2-461/6400*y[1]*y[2]^4+3/8*y[3]*y[4]^2-3/4*y[2]^2*y[4]
-3/4*y[2]*y[4]^2-461/3200*y[1]^3*y[2]^2-1/2*y[1]*y[3]*y[4]
-1/2*y[1]*y[2]*y[3]-461/6400*y[1]^5;
y3dot:= 15/128*y[3]*y[4]^2*y[1]^2-827/128*y[3]^2*y[4]^3+1/4*y[1]*y[2]*y[4]
-39/64*y[1]^3*y[2]*y[4]-21/64*y[1]^3*y[3]^2-1/8*y[3]^5
+27/64*y[1]^3*y[2]*y[3]+25/128*y[3]^3*y[1]^2-1/8*y[3]^3
+3/8*y[1]^2*y[3]+17/128*y[1]*y[3]^4-39/128*y[1]^4*y[3]
-143/64*y[3]^2*y[1]^2*y[4]+21/64*y[1]*y[3]^3*y[4]+5/64*y[2]*y[3]^3*y[4]
+3/16*y[1]*y[3]^2*y[4]^2-7/64*y[1]^2*y[3]^2*y[2]
+35/64*y[1]*y[2]*y[3]^3+27/64*y[1]*y[2]^3*y[3]-39/64*y[1]*y[2]^3*y[4]
-3/8*y[1]^2*y[3]*y[2]*y[4]+3/16*y[3]^2*y[4]*y[1]*y[2]
-1/4*y[1]*y[2]^2*y[3]*y[4]+113/64*y[1]*y[2]*y[3]*y[4]^2
-45/64*y[1]^2*y[2]^2*y[4]+1/64*y[2]^3*y[3]^2+39/128*y[2]^4*y[3]
+3/64*y[1]*y[2]^2*y[3]^2+1/64*y[1]^2*y[4]^2*y[2]
+21/128*y[3]*y[4]^2*y[2]^2+1/32*y[4]^3*y[1]*y[2]+21/64*y[1]*y[3