Application Center - Maplesoft

# Cauchy problems for wave equations (updated to Maple 7)

You can switch back to the summary page by clicking here.

wave_eqc.mws

Solving Cauchy problems for  wave equations

by Aleksas Domarkas

Vilnius University, Faculty of Mathematics and Informatics,

Naugarduko 24, Vilnius, Lithuania

aleksas@ieva.mif.vu.lt

NOTE: In this session we solve Cauchy problems for  wave equations.

Cauchy problem   for 1d wave equation (1)

Problem

from M.Kawski

ftp://math.la.asu.edu/pub/kawski/MAPLE/362/dAlembert2hats.mws

 > restart;

 > eq:=diff(u(x,t),t,t)=4*diff(u(x,t),x,x);#x>-infinity,x0;

 > ic:=u(x,0)=u0(x);ict:=D[2](u)(x,0)=u1(x);#x>-infinity,x

 > hat2:=x->1-abs(abs(x)-2);

 > ramp:=x->(x+abs(x))/2;

 > u0:=ramp@hat2;

 > u1:=0;

 > plot(u0,-4..4,-1..2,scaling=constrained,axes=boxed);

 > convert(u0(x),piecewise);

 > u0:=unapply(convert(u0(x),Heaviside),x);

 >

Solving(1 method)

We use  d'Alembert's  formula for solution:

 > a:=2:

 > sol1:=(u0(x-a*t)+u0(x+a*t))/2;

 >

Solving(2 method)

 > assume(t>0);

 > with(inttrans):

 > fourier(eq,x,w);

 > ode:=subs(fourier(u(x,t),x,w)=s(t),%);

 > dsolve({ode,s(0)=fourier(u0(x),x,w), D(s)(0)=fourier(u1(x),x,w)},s(t));

 > sol2:=simplify(invfourier(rhs(%),w,x));

 >

Checking the Solution

sol1=sol2 ???

 > simplify(sol1-sol2);

 > u:=unapply(sol1,(x,t)):

 > simplify(rhs(eq)-lhs(eq));

 > simplify(rhs(ic)-lhs(ic));

 > simplify(rhs(ict)-lhs(ict));

Plots

 > plot3d(sol1,x=-10..10,t=0..5,orientation=[-60,20],axes=framed);

 > with(plots):with(plottools):

```Warning, the name changecoords has been redefined
```

```Warning, the name arrow has been redefined
```

Animation, created by M.Kawski:

 > display([    seq(       display([          textplot([1.4,1.4,cat(`t = `,convert(tt,string))],              'align=RIGHT',font=[TIMES,ROMAN,18]),          plot(subs(t=tt,sol1),x=-6..6,-1..2,              thickness=3)          ]),       tt=[seq(evalf(k/20,3),k=0..100)])    ],insequence=true,    titlefont=[TIMES,BOLD,16],    title=`Animation: d'Alembert's solution`);

 >

Cauchy problem   for 1d wave equation (2)

Problem

 > restart;

 > eq:=diff(u(x,t),t,t)=a^2*diff(u(x,t),x,x);

 > ic:=u(x,0)=u0(x);ict:=D[2](u)(x,0)=u1(x);

 > u0:=unapply(randpoly([x]),x);

 > u1:=unapply(randpoly([x]),x);

 > assume(a>0,t>0);

Solving(1 method)

We use  d'Alembert's  formula for solution:

 > (u0(x-a*t)+u0(x+a*t))/2+int(u1(xi),xi = x-a*t .. x+a*t)/(2*a);

 > sol1:=simplify(%);

 >

Solving(2 method)

 > L:=f->diff(f,x,x);

 > d:=max(degree(u0(x)),degree(u1(x)));

 > Sum(a^(2*k)*t^(2*k)/(2*k)!*(L@@k)(u0(x))+ a^(2*k)*t^(2*k+1)/(2*k+1)!*(L@@k)(u1(x)),k=0..d);

 > sol2:=simplify(value(%));

 > is(sol1=sol2);

 >

Solving(3 method)

 > with(inttrans):

 > fourier(eq,x,w);

 > ode:=subs(fourier(u(x,t),x,w)=s(t),%);

 > dsolve({ode,s(0)=fourier(u0(x),x,w), D(s)(0)=fourier(u1(x),x,w)},s(t));

 > sol3:=invfourier(rhs(%),w,x);

 > is(sol1=sol3);

Checking the Solution

 > u:=unapply(sol1,(x,t)):

 > simplify(rhs(eq)-lhs(eq));

 > simplify(rhs(ic)-lhs(ic));

 > simplify(rhs(ict)-lhs(ict));

 >

Cauchy problem  for 2d wave equation

Problem( 2d wave equation)

 > restart;with(linalg,laplacian):with(student,Doubleint):

 > eq:=diff(u(x,y,t),t,t)=a^2*laplacian(u(x,y,t),[x,y]);

 > ic:=u(x,y,0)=u0(x,y);ict:=D[3](u)(x,y,0)=u1(x,y);

 > u0:=unapply(randpoly([x,y]),x,y);

 > u1:=unapply(randpoly([x,y]),x,y);

 > assume(a>0,t>0);

Solving(1 method)

We use  Poisson formula for solution:

where B={( ):  }.

For computing integrals we use polar coordinates:

 > T:={xi=x+r*cos(phi),eta=y+r*sin(phi)};

 > subs(T,1/(2*Pi*a)* Doubleint(u1(xi,eta)/sqrt((a*t)^2-r^2)*r, phi=0..2*Pi,r=0..a*t)+1/(2*Pi*a)*Diff( Doubleint(u0(xi,eta)/sqrt((a*t)^2-r^2)*r, phi=0..2*Pi,r=0..a*t),t));

 > sol1:=simplify(value(%));

Solving(2 method)

 > L:=f->laplacian(f,[x,y]);

 > d:=max(degree(u0(x,y)),degree(u1(x,y)));

 > Sum(a^(2*k)*t^(2*k)/(2*k)!*(L@@k)(u0(x,y))+ a^(2*k)*t^(2*k+1)/(2*k+1)!*(L@@k)(u1(x,y)),k=0..d);

 > sol2:=simplify(value(%));

 > is(sol1=sol2);

 >

Solving(3 method)

 > with(inttrans);

 > fourier(eq,x,w1);

 > fourier(%,y,w2);

 > subs(fourier(fourier(u(x,y,t),x,w1),y,w2)=s(t),%);

 > dsolve({%,s(0)=fourier(fourier(u0(x,y),x,w1),y,w2), D(s)(0)=fourier(fourier(u1(x,y),x,w1),y,w2)},s(t));

 > invfourier(rhs(%),w2,y);

 > sol3:=invfourier(%,w1,x);

 > is(sol1=sol3);

Checking the Solution

 > u:=unapply(sol1,(x,y,t)):

 > simplify(rhs(eq)-lhs(eq));

 > simplify(rhs(ic)-lhs(ic));

 > simplify(rhs(ict)-lhs(ict));

 >

Cauchy problem  for 3d wave equation

Problem

 > restart;with(linalg):with(student):

```Warning, the protected names norm and trace have been redefined and unprotected
```

 > eq:=diff(u(x,y,z,t),t,t)=a^2*laplacian(u(x,y,z,t),[x,y,z]);

 > ic:=u(x,y,z,0)=u0(x,y,z);ict:=D[4](u)(x,y,z,0)=u1(x,y,z);

 > u0:=unapply(randpoly([x,y,z]),x,y,z);

 > u1:=unapply(randpoly([x,y,z]),x,y,z);

 > assume(a>0,t>0);

Solving(1 method)

We use  Kirchhoff  formula for solution:

where  S={( ):  }.

 > sol:=Int(u1,S)/(4*Pi*a^2*t)+Diff(Int(u0,S)/t,t)/(4*Pi*a^2);

For computing integrals we use spherical coordinates:

 > T:={xi[1]=x+r*cos(phi)*sin(theta),xi[2]=y+r*sin(phi)*sin(theta), xi[3]=z+r*cos(theta)};

 > linalg[jacobian]([x+r*cos(phi)*sin(theta),y+r*sin(phi)*sin(theta), z+r*cos(theta)],[phi,r,theta]);

 > J:=simplify(det(%));

 > subs(Int(u1,S)=Doubleint(subs(T,u1(xi[1],xi[2],xi[3]))*J, theta=0..Pi,phi=0..2*Pi), Int(u0,S)=Doubleint(subs(T,u0(xi[1],xi[2],xi[3]))*J, theta=0..Pi,phi=0..2*Pi), r=a*t,sol);

 > sol1:=simplify(value(%));

Solving(2 method)

 > L:=f->laplacian(f,[x,y,z]);

 > d:=max(degree(u0(x,y,z)),degree(u1(x,y,z)));

 > Sum(a^(2*k)*t^(2*k)/(2*k)!*(L@@k)(u0(x,y,z))+ a^(2*k)*t^(2*k+1)/(2*k+1)!*(L@@k)(u1(x,y,z)),k=0..d);

 > sol2:=simplify(value(%));

 > is(sol1=sol2);

 >

Solving(3 method)

 > with(inttrans):

```Warning, the name hilbert has been redefined
```

 > fourier(eq,x,w1);

 > fourier(%,y,w2);

 > fourier(%,z,w3);

 > ode:=subs(fourier(fourier(fourier(u(x,y,z,t),x,w1),y,w2),z,w3)=s(t),%);

 > dsolve({ode,s(0)=fourier(fourier(fourier(u0(x,y,z),x,w1),y,w2),z,w3), D(s)(0)=fourier(fourier(fourier(u1(x,y,z),x,w1),y,w2),z,w3)},s(t));

 > invfourier(rhs(%),w3,z):

 > invfourier(%,w2,y):

 > sol3:=invfourier(%,w1,x);

 > is(sol1=sol3);

 >

Checking the Solution

 > u:=unapply(sol1,(x,y,z,t)):

 > simplify(rhs(eq)-lhs(eq));

 > simplify(rhs(ic)-lhs(ic));

 > simplify(rhs(ict)-lhs(ict));

 >

Non-homogenous wave equation

Problem

 > restart;with(linalg,laplacian):

 > eq:=diff(u(x,y,z,t),t,t)-a^2*laplacian(u(x,y,z,t),[x,y,z])=F(x,y,z,t);#-infty0

 > ic:=u(x,y,z,0)=0;#-infty

 > ict:=D[4](u)(x,y,z,0)=0;#-infty

The function F(x,y,z,t)  may be polynomial  respect to x,y,z . 

 > randpoly([x,y,z,t,t*sin(t),cos(t),exp(t)]):

 > F:=unapply(%,[x,y,z,t]);

procedure

 > wsol:=proc(u) option `Copyright Aleksas Domarkas, 2002`; local dsol; dsol:=proc(F) local  g,f,d,L; if has(F, t) and not has(F,[x,y,z]) then g:=unapply(F,t); f:=1; elif not has(F,t)  then g:=1;f:=F; else  f:=select(has,F,[x,y,z]); g:=unapply(F/f,t); end if; d:=max(degree(f),1); L:=f->linalg[laplacian](f,[x,y,z]); sum(a^(2*k)/(2*k+1)!*(L@@k)(f)*Int((t-tau)^(2*k+1)*g(tau),tau=0..t),k=0..d);value(%); end proc: if type(u,`+`) then map(dsol,u) else dsol(u) end if: end proc:

solution

 > sol:=wsol(F(x,y,z,t));

 >

test

 > u:=unapply(sol,(x,y,z,t)):

 > simplify(rhs(eq)-lhs(eq)):if %<>0 then combine(%,trig) else % fi;

 > simplify(rhs(ic)-lhs(ic));

 > simplify(rhs(ict)-lhs(ict));

 >

Decomposition method

 > restart;with(linalg,laplacian):with(inttrans,fourier,invfourier):

Proble m

From V.S.Vladimirov(ed.), Exercises book on Equations of Mathematical  Physics, Nauka, Moscow, 1982(in Russian) 12.38.7.

 > eq:=diff(u(x,y,z,t),t,t)-a^2*laplacian(u(x,y,z,t),[x,y,z])=exp(z)*sin(y)*cos(x);#-infty0

 > ic:=u(x,y,z,0)=x^2*exp(y+z);#-infty

 > ict:=D[4](u)(x,y,z,0)=sin(x)*exp(y+z);#-infty

I

 > eq1:=eq;

 > ic1:=u(x,y,z,0)=0;

 > ict1:=D[4](u)(x,y,z,0)=0;

Solving of I

 > subs(u(x,y,z,t)=v(t)*rhs(eq1),eq1);

 > simplify(%/rhs(eq1));

 > dsolve({%,v(0)=0,D(v)(0)=0},v(t));

 > sol1:=rhs(%)*rhs(eq1);

 >

II

 > eq2:=diff(u(x,y,z,t),t,t)-a^2*laplacian(u(x,y,z,t),[x,y,z])=0;

 > ic2:=u(x,y,z,0)=0;

 > ict2:=D[4](u)(x,y,z,0)=sin(x)*exp(y+z);

Solving of II

 > subs(u(x,y,z,t)=v(t)*rhs(ict2),eq2);

 > simplify(%/rhs(ict2));

 > dsolve({%,v(0)=0,D(v)(0)=1},v(t));convert(%,trig): combine(%,trig);

 > sol2:=rhs(%)*rhs(ict2);

 >

III

 > eq3:=eq2;

 > ic3:=u(x,y,z,0)=x^2*exp(y+z);

 > ict3:=D[4](u)(x,y,z,0)=0;

Solving of III

 > subs(u(x,y,z,t)=v(x,t)*exp(y+z),eq3);

 > eqn:=simplify(%/exp(y+z));

 > fourier(eqn,x,w);

 > subs(fourier(v(x,t),x,w)=s(t),%);

 > dsolve({%,s(0)=fourier(x^2,x,w),D(s)(0)=0},s(t));

 > subs(s(t)=fourier(v(x,t),x,w),%);

 > invfourier(%,w,x);

 > convert(%,trig): combine(%,trig);

 > sol3:=rhs(%)*exp(y+z);

 >

Solution

 > sol:=sol1+sol2+sol3;

Checking the Solution

 > u:=unapply(sol,(x,y,z,t)):

 > simplify(rhs(eq)-lhs(eq));

 > simplify(rhs(ic)-lhs(ic));

 > simplify(rhs(ict)-lhs(ict));

 >

Radial-symmetric solution

For radial-symmetric solutions of linear elliptic equations  see   radsymell.mws

Problem

 > restart;with(linalg,laplacian):

[vlad] 12.38.9.

 > eq:=diff(u(x,y,z,t),t,t)-a^2*laplacian(u(x,y,z,t),[x,y,z])=0;

 > ic:=u(x,y,z,0)=cos((x^2+y^2+z^2)^(1/2));

 > ict:=D[4](u)(x,y,z,0)=cos((x^2+y^2+z^2)^(1/2));

Solving problem

 > eqn:=diff(u(r,t),t,t)-a^2*expand(laplacian(u(r,t),[r,theta,phi],coords=spherical));

Solution we search in form    :

 > subs(u(r,t)=v(r,t)/r,eqn);

 > eq1:=simplify(%*r);

 > ic1:=v(r,0)=r*cos(r);

 > ict1:=D[2](v)(r,0)=r*cos(r);

 > phi:=unapply(rhs(ic1),r);

 > psi:=unapply(rhs(ict1),r);

By  d'Alembert's  formula :

 > v(r,t)=(phi(r+a*t)+phi(r-a*t))/2+Int(psi(xi),xi=r-a*t .. r+a*t)/2/a;

 > value(rhs(%))/r;

 > expand(%);

 > collect(%,{sin(r),cos(r)});

 > applyop(collect,[1,1],%,r):applyop(collect,[2,1],%,r);

Solution

 > sol:=subs(r=sqrt(x^2+y^2+z^2),%);

 >

Checking the Solution

 > u:=unapply(sol,(x,y,z,t)):

 > simplify(rhs(eq)-lhs(eq));

 > simplify(rhs(ic)-lhs(ic));

 > simplify(rhs(ict)-lhs(ict));

 >

While every effort has been made to validate the solutions in this worksheet, Waterloo Maple Inc. and the conevibutors are not responsible for any errors contained and are not liable for any damages resulting from the use of this material.
{"found_math": false, "script_math_tex": 0, "script_math_asciimath": 0, "math_annotations": 0, "math_alttext": 0, "mathml": 0, "mathjax_tag": 0, "mathjax_inline_tex": 0, "mathjax_display_tex": 0, "mathjax_asciimath": 0, "img_math": 0, "codecogs_latex": 0, "wp_latex": 0, "mimetex.cgi": 0, "/images/math/codecogs": 0, "mathtex.cgi": 0, "katex": 0, "math-container": 0, "wp-katex-eq": 0, "align": 0, "equation": 0, "x-ck12": 0, "texerror": 0}