1 Proceedings 13th IMACS World Congress on Computation and Applied Mathematics, Dublin, July 22-26, 1991. Eds.: R. vichnevetsky and J. J. H. Miller, Criterion Press, Dublin, Vol. 2, pp. 842-843 (1991). A MACSYMA Program for the Hirota Method W. Hereman and W. Zhuang Abstract – Hirota’s method for finding soliton solutions of nonlinear evolution and wave equations is briefly discussed and illustrated. A MACSYMA program that automatically carries out the lengthy algebraic computations is included. I. INTRODUCTION Hirota’s direct method [1,2] allows to construct exact soliton solutions of nonlinear evolution and wave equations. The lengthy but straightforward calculations inherent to this method can easily be performed with any symbolic manipulation program. In this paper we present a sample program in MACSYMA to illustrate the symbolic calculation of one, two and three soliton solutions of well-known nonlinear PDEs such as the Korteweg-de Vries, the Boussinesq, the Kadomtsev-Petviashvili, the Sawada-Kotera and the shallow water wave equations [1-5]. II. THE HIROTA METHOD Hirota’s method requires: (i) a clever change of dependent variable, (ii) the introduction of a novel differential operator, (iii) a perturbation expansion to solve the resulting bilinear equation. Details about the method can be found in almost any book on soliton theory [1-4], here we merely outline the procedure. Our leading example is the Korteweg-de Vries equation [1-4], ut + 6uux + u3x = 0 . (1) Substitution of ∂ 2 ln f (x, t) ∂x2 into (1) and one integration with respect to x yields, u(x, t) = 2 2 f fxt − fx ft + f f4x − 4fx f3x + 3f2x =0 . (2) (3) This quadratic equation in f can then be written in bilinear form, def B(f ·f ) = Dx Dt + Dx4 (f ·f ) = 0 . (4) 2 where the new operator is given by Dxm Dtn (f ·g) = (∂x − ∂x ) (∂t − ∂t ) f (x, t) g(x , t ) 0 m 0 n 0 0 . (5) x0 =x,t0 =t Introducing a book keeping parameter , we look for a solution f =1+ ∞ X n fn . (6) n=1 Substituting (6) into (4) and equating to zero the powers of , yields O(0 ) : B(1·1) = 0 , (7) 1 (8) 2 (9) 3 (10) O( ) : B(1·f1 + f1 ·1) = 0 , O( ) : B(1·f2 + f1 ·f1 + f2 ·1) = 0 , O( ) : B(1·f3 + f1 ·f2 + f2 ·f1 + f3 ·1) = 0 , 4 O( ) : B(1·f4 + f1 ·f3 + f2 ·f2 + f3 ·f1 + f4 ·1) = 0 , O(n ) : B( n X fj ·fn−j ) = 0 , with f0 = 1 , (11) (12) j=0 This scheme is general whatever the explicit expression of the bilinear operator B is. For the KdV equation B is given in (4). If the original PDE admits a N-soliton solution then (6) will truncate at level n = N provided f1 is the sum of precisely N simple exponential terms. For simplicity, consider the case of a three soliton solution (N = 3). Then, f1 = 3 X exp(θi ) = i=1 3 X exp (ki x − ωi t + δi ) , (13) i=1 where ki , ωi and δi are constants. Of course, (7) is trivially satisfied, whereas (8) determines the dispersion law, ωi = ki3 , i = 1, 2, 3. (14) The terms generated by B(f1 , f1 ) in (9) justify the choice f2 = a12 exp(θ1 + θ2 ) + a13 exp(θ1 + θ3 ) + a23 exp(θ2 + θ3 ) = a12 exp [(k1 + k2 ) x − (ω1 + ω2 ) t + δ1 + δ2 ] + a13 exp [(k1 + k3 ) x − (ω1 + ω3 ) t + δ1 + δ3 ] + a23 exp [(k2 + k3 ) x − (ω2 + ω3 ) t + δ2 + δ3 ] , (15) and (9) allows to calculate the constants a12 , a13 and a23 . With (14) one obtains aij = (ki − kj )2 , (ki + kj )2 i, j = 1, 2, 3. (16) 3 Then, B(f1 ·f2 + f2 ·f1 ) in (10) motivates the particular solution f3 = b123 exp(θ1 + θ2 + θ3 ) = b123 exp [(k1 + k2 + k3 )x − (ω1 + ω2 + ω3 )t + δ1 + δ2 + δ3 ], (17) and one calculates b123 = a12 a13 a23 = (k1 − k2 )2 (k1 − k3 )2 (k2 − k3 )2 . (k1 + k2 )2 (k1 + k3 )2 (k2 + k3 )2 (18) Subsequently, (11) allows to verify that indeed f4 = 0. In the sixth equation of the scheme B(f2 ·f3 + f3 ·f2 ) should equal zero in order to assure that f5 = 0. If so, it will be possible to take fi = 0 for i > 6. Finally setting = 1 in (6), we obtain f = 1 + exp θ1 + exp θ2 + exp θ3 + a12 exp(θ1 + θ2 ) + a13 exp(θ1 + θ3 ) + a23 exp(θ2 + θ3 ) + b123 exp(θ1 + θ2 + θ3 ) , (19) which upon substitution in (2) generates the well-known three soliton solution of (1). The construction of N-soliton solutions [1-6] with N ≥ 3 is tedious and the necessary algebraic simplifications and factorizations are bound to fail if carried out by hand. Hence the need for a symbolic program that relieves us of the elaborate calculations. III. MACSYMA PROGRAM FOR THE HIROTA METHOD This preliminary program calculates the one, two and three soliton solutions of a fairly simple completely integrable PDE, provided it can be transformed into a single bilinear equation for the new variable f . The program is written in such a way that the extension for the N-soliton is straightforward. The structure should also allow to ’translate’ it into the language of e.g. MATHEMATICA, MAPLE or REDUCE. The user must select the value of N and also provide the bilinear operator B for the PDE. /* MACSYMA program for the HIROTA METHOD */ writefile(”three soliton sawada kotera.out”); n:3; B(f,g):=Dxt[1,1](f,g)+Dx[6](f,g)$ showtime:true $ depends([f,g],[x,y,t])$ 4 Dx[n](f,g):=sum((-1)∧(n-j)*n!*diff(f,x,j)*diff(g,x,n-j) /(j!*(n-j)!),j,0,n)$ Dy[n](f,g):=sum((-1)∧(n-j)*n!*diff(f,y,j)*diff(g,y,n-j) /(j!*(n-j)!),j,0,n)$ Dxt[m,n](f,g):=sum((-1)∧(m-j)*m!*sum((-1)∧(n-i)*n!* diff(diff(f,x,j),t,i)*diff(diff(g,x,m-j),t,n-i) /(i!*(n-i)!),i,0,n)/(j!*(m-j)!),j,0,m)$ for i:1 thru n do f[i]:0 $ f[1]:sum(exp(th(i,x,y,t)),i,1,n)$ gradef(th(i,x,y,t),0,k[i],l[i],-om[i])$ bonf1:expand(ev(B(1,f[1]),diff))$ bonf1:expand(ev(bonf1))$ for i:1 thru n do (eqone[i]:ratcoef(bonf1,exp(th(i,x,y,t)),1), om[i]:factor(rhs(part(solve(eqone[i],om[i]),1))), if n>1 then(tf[2]:sum(a[i,j]*exp(th(i,x,y,t))*exp(th(j,x,y,t)),j,i+1,n), f[2]:ev(f[2]+tf[2])))$ om[1]; om[2]; om[3]; bonf2:expand(ev(b(1,f[2])+b(f[1],f[1])+b(f[2],1),diff))$ bonf2:expand(ev(bonf2))$ if n>1 then(for i:1 thru n do (for j:i+1 thru n do( eqtwo[i,j]:ratcoef(bonf2,exp(th(i,x,y,t))*exp(th(j,x,y,t)),1), a[i,j]:factor(rhs(part(solve(eqtwo[i,j],a[i,j]),1))), if n>2 then(tf[3]:sum(b[i,j,k]*exp(th(i,x,y,t))*exp(th(j,x,y,t))* exp(th(k,x,y,t)),k,j+1,n), f[3]:ev(f[3]+tf[3])))))$ a[1,2]; a[1,3]; a[2,3]; bonf3:expand(ev(b(1,f[3])+b(f[1],f[2])+b(f[2],f[1])+b(f[3],1),diff))$ bonf3:expand(ev(bonf3))$ length(bonf3); if n>2 then(for i:1 thru n do (for j:i+1 thru n do (for k:j+1 thru n do(eqthree[i,j,k]:ratcoef(bonf3,exp(th(i,x,y,t))*exp(th(j,x,y,t))* exp(th(k,x,y,t)),1), b[i,j,k]:factor(rhs(part(solve(eqthree[i,j,k],b[i,j,k]),1)))))))$ f:1+sum(f[i],i,1,n); b[1,2,3]; closefile(); quit(); 5 IV. EXAMPLES AND TEST CASES • For the KdV equation [1-6], ut + 6uux + u3x = 0, one uses (2) and B(f, g) := Dxt[1, 1](f, g) + Dx[4](f, g). The output of the program confirmed the results in (14), (16) and (18). • For the Kadomtsev-Petviashvili equation [2-6], (ut + 6uux + u3x )x + 3u2y = 0, one has u = 2 ∂x2 ln f (x, y, t) and B(f, g) := Dxt[1, 1](f, g) + Dx[4](f, g) + 3 ∗ Dy[2](f, g). In this case θi = ki x + li y − ωi t, and for simplicity we selected li = ki mi (i = 1, 2, 3). Note: insert the line l[i] := k[i] ∗ m[i] at the beginning of the program. We obtained ωi = ki (ki2 + 3m2i ), i = 1, 2, 3, and aij = (ki − kj − mi + mj )(ki − kj + mi − mj ) , (ki + kj + mi − mj )(ki + kj − mi + mj ) i, j = 1, 2, 3. (20) The program could not calculate b123 = a12 a13 a23 in a reasonable amount of time because the equation for b123 has 267 terms in exp(θ1 + θ2 + θ3 ). • For the Boussinesq equation [1-6], u2t − u2x − 3(u2 )2x − u4x = 0, one has again (2) and B(f, g) q := Dxt[0, 2](f, g) − Dx[2](f, g) − Dx[4](f, g). The results then are ωi = −ki 1 + ki2 , i = 1, 2, 3, and q q 1 + ki2 1 + kj2 − 2ki2 + 3ki kj − 2kj2 − 1 aij = q , i, j = 1, 2, 3. q 1 + ki2 1 + kj2 − 2ki2 − 3ki kj − 2kj2 − 1 (21) The program did also determine the explicit form of b123 = a12 a13 a23 . • For the Sawada-Kotera equation [2,5,6], ut + 45u2 ux + 15ux u2x + 15uu3x + u5x = 0, one has (2) and B(f, g) := Dxt[1, 1](f, g) + Dx[6](f, g). Furthermore, ωi = ki5 , i = 1, 2, 3. The coefficients are given by aij = = (ki − kj )2 (ki2 − ki kj + kj2 ) (ki + kj )2 (ki2 + ki kj + kj2 ) (ki − kj )3 (ki3 + kj3 ) (ki + kj )3 (ki3 − kj3 ) b123 = a12 a13 a23 . , i, j = 1, 2, 3 , (22) (23) 6 • For the shallow water wave equation [5], R uxxt + 3uut − 3ux x ut dx0 − ux − ut = 0, one uses u = ∂x2 ln f and B(f, g) := Dxt[3, 1](f, g) − Dx[2](f, g) − Dxt[1, 1](f, g). The program calculated that ωi = aij = ki , (1 + ki )(1 − ki ) i = 1, 2, 3, (ki − kj )2 (ki2 − ki kj + kj2 − 3) (ki + kj )2 (ki2 + ki kj + kj2 − 3) , (24) i, j = 1, 2, 3. (25) The program could not determine b123 = a12 a13 a23 due to the large number of terms in f3 . Hirota’s bilinear operators used in these examples, Dxt[m, n](f, g), Dx[n](f, g), and Dy[n](f, g) are defined in the program itself. REFERENCES [1] R. Hirota, in: Bäcklund Transformations, the Inverse Scattering Method, Solitons, and Their Applications, Lecture Notes in Mathematics 515, ed. R.M. Miura, Springer-Verlag, Berlin, 1976, pp. 40-68. [2] R. Hirota, in: Solitons, Topics in Physics 17, eds. R.K. Bullough and P.J. Caudrey, Springer-Verlag, Berlin, 1980, pp. 157-76. [3] M.J. Ablowitz and H. Segur, Solitons and the Inverse Scattering, SIAM Studies in Applied Mathematics 4, SIAM, Philadelphia, 1981. [4] P.G. Drazin and R.S. Johnson, Solitons: University Press, Cambridge, 1989. [5] J. Hietarinta, A search for bilinear equations passing Hirota’s three-soliton condition, Parts I-IV, J. Math. Phys. 28, 1732-42, 1987; ibid. 2094-101, 1987; ibid. 2586-92, 1987; ibid. 29 628-35, 1988. [6] J. Hietarinta, in: Partially Integrable Evolution Equations in Physics, Proceedings of the Summer School for Theoretical Physics, Les Houches, France, March 21-28, 1989, eds: R. Conte and N. Boccara, Kluwer Academic Publishers, pp. 459-78, 1990. an introduction, Cambridge