Example5.2.3 Rev 1.mw

Example 5.2.3 Nonlinear Radiation at the Surface 

> restart;
 

> with(linalg):with(plots):
 

> ge:=diff(u(x,t),t)=diff(u(x,t),x$2);
 

diff(u(x, t), t) = diff(diff(u(x, t), x), x) (1)
 

> bc1:=u(x,t)-1;
 

`+`(u(x, t), `-`(1)) (2)
 

> bc2:=diff(u(x,t),x)-1+(u(x,t))^4;
 

`+`(diff(u(x, t), x), `-`(1), `*`(`^`(u(x, t), 4))) (3)
 

> IC:=u(x,0)=0;
 

u(x, 0) = 0 (4)
 

> N:=4;
 

4 (5)
 

> L:=1;
 

1 (6)
 

> dydxf:=1/2*(-u[2](t)-3*u[0](t)+4*u[1](t))/h;
 

`+`(`/`(`*`(`/`(1, 2), `*`(`+`(`-`(u[2](t)), `-`(`*`(3, `*`(u[0](t)))), `*`(4, `*`(u[1](t)))))), `*`(h))) (7)
 

> dydxb:=1/2*(u[N-1](t)+3*u[N+1](t)-4*u[N](t))/h;
 

`+`(`/`(`*`(`/`(1, 2), `*`(`+`(u[3](t), `*`(3, `*`(u[5](t))), `-`(`*`(4, `*`(u[4](t))))))), `*`(h))) (8)
 

> dydx:=1/2/h*(u[m+1](t)-u[m-1](t));
 

`+`(`/`(`*`(`/`(1, 2), `*`(`+`(u[`+`(m, 1)](t), `-`(u[`+`(m, `-`(1))](t))))), `*`(h))) (9)
 

> d2ydx2:=1/h^2*(u[m-1](t)-2*u[m](t)+u[m+1](t));
 

`/`(`*`(`+`(u[`+`(m, `-`(1))](t), `-`(`*`(2, `*`(u[m](t)))), u[`+`(m, 1)](t))), `*`(`^`(h, 2))) (10)
 

> bc1:=subs(diff(u(x,t),x)=dydxf,u(x,t)=u[0](t),x=0,bc1);
 

`+`(u[0](t), `-`(1)) (11)
 

> bc2:=subs(diff(u(x,t),x)=dydxb,u(x,t)=u[N+1](t),x=1,bc2);
 

`+`(`/`(`*`(`/`(1, 2), `*`(`+`(u[3](t), `*`(3, `*`(u[5](t))), `-`(`*`(4, `*`(u[4](t))))))), `*`(h)), `-`(1), `*`(`^`(u[5](t), 4))) (12)
 

Differentiate the boundary conditions: 

> eq[0]:=diff(bc1,t);
 

diff(u[0](t), t) (13)
 

> eq[N+1]:=diff(bc2,t);
 

`+`(`/`(`*`(`/`(1, 2), `*`(`+`(diff(u[3](t), t), `*`(3, `*`(diff(u[5](t), t))), `-`(`*`(4, `*`(diff(u[4](t), t))))))), `*`(h)), `*`(4, `*`(`^`(u[5](t), 3), `*`(diff(u[5](t), t))))) (14)
 

> for i from 1 to N do eq[i]:=diff(u[i](t),t)= subs(diff(u(x,t),x$2) = subs(m=i,d2ydx2),diff(u(x,t),x) = subs(m=i,dydx),u(x,t)=u[i](t),x=i*h,rhs(ge));od;
 

 

 

 

diff(u[1](t), t) = `/`(`*`(`+`(u[0](t), `-`(`*`(2, `*`(u[1](t)))), u[2](t))), `*`(`^`(h, 2)))
diff(u[2](t), t) = `/`(`*`(`+`(u[1](t), `-`(`*`(2, `*`(u[2](t)))), u[3](t))), `*`(`^`(h, 2)))
diff(u[3](t), t) = `/`(`*`(`+`(u[2](t), `-`(`*`(2, `*`(u[3](t)))), u[4](t))), `*`(`^`(h, 2)))
diff(u[4](t), t) = `/`(`*`(`+`(u[3](t), `-`(`*`(2, `*`(u[4](t)))), u[5](t))), `*`(`^`(h, 2))) (15)
 

> h:=L/(N+1);
 

`/`(1, 5) (16)
 

> for i from 0 to N+1 do eq[i]:=eval(eq[i]);od;
 

 

 

 

 

 

diff(u[0](t), t)
diff(u[1](t), t) = `+`(`*`(25, `*`(u[0](t))), `-`(`*`(50, `*`(u[1](t)))), `*`(25, `*`(u[2](t))))
diff(u[2](t), t) = `+`(`*`(25, `*`(u[1](t))), `-`(`*`(50, `*`(u[2](t)))), `*`(25, `*`(u[3](t))))
diff(u[3](t), t) = `+`(`*`(25, `*`(u[2](t))), `-`(`*`(50, `*`(u[3](t)))), `*`(25, `*`(u[4](t))))
diff(u[4](t), t) = `+`(`*`(25, `*`(u[3](t))), `-`(`*`(50, `*`(u[4](t)))), `*`(25, `*`(u[5](t))))
`+`(`*`(`/`(5, 2), `*`(diff(u[3](t), t))), `*`(`/`(15, 2), `*`(diff(u[5](t), t))), `-`(`*`(10, `*`(diff(u[4](t), t)))), `*`(4, `*`(`^`(u[5](t), 3), `*`(diff(u[5](t), t))))) (17)
 

> eqs:=seq((eq[j]),j=0..N+1);
 

diff(u[0](t), t), diff(u[1](t), t) = `+`(`*`(25, `*`(u[0](t))), `-`(`*`(50, `*`(u[1](t)))), `*`(25, `*`(u[2](t)))), diff(u[2](t), t) = `+`(`*`(25, `*`(u[1](t))), `-`(`*`(50, `*`(u[2](t)))), `*`(25, `*...
diff(u[0](t), t), diff(u[1](t), t) = `+`(`*`(25, `*`(u[0](t))), `-`(`*`(50, `*`(u[1](t)))), `*`(25, `*`(u[2](t)))), diff(u[2](t), t) = `+`(`*`(25, `*`(u[1](t))), `-`(`*`(50, `*`(u[2](t)))), `*`(25, `*...
diff(u[0](t), t), diff(u[1](t), t) = `+`(`*`(25, `*`(u[0](t))), `-`(`*`(50, `*`(u[1](t)))), `*`(25, `*`(u[2](t)))), diff(u[2](t), t) = `+`(`*`(25, `*`(u[1](t))), `-`(`*`(50, `*`(u[2](t)))), `*`(25, `*...
(18)
 

Enter the initial conditions separately for the boundary values consistent with the boundary conditions: 

> Y:=seq(u[i](t),i=0..N+1);
 

u[0](t), u[1](t), u[2](t), u[3](t), u[4](t), u[5](t) (19)
 

> ICs:=u[0](0)=1,seq(u[i](0)=rhs(IC),i=1..N),u[N+1](0)=0;
 

u[0](0) = 1, u[1](0) = 0, u[2](0) = 0, u[3](0) = 0, u[4](0) = 0, u[5](0) = 0 (20)
 

> sol:=dsolve({eqs,ICs},{Y},type=numeric,output=listprocedure);
 

[t = proc (t) local res, data, solnproc, outpoint, t; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; `:=`(_EnvDSNumericSaveDigits, Digits); `:=`(Digits, 14); if _EnvInFsolve ...
[t = proc (t) local res, data, solnproc, outpoint, t; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; `:=`(_EnvDSNumericSaveDigits, Digits); `:=`(Digits, 14); if _EnvInFsolve ...
[t = proc (t) local res, data, solnproc, outpoint, t; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; `:=`(_EnvDSNumericSaveDigits, Digits); `:=`(Digits, 14); if _EnvInFsolve ...
(21)
 

> for i from 0 to N+1 do U[i]:=subs(sol,u[i](t));od:
 

> pp:=plot([seq(U[i](t),i=0..N+1)],t=0..1);
 

PLOT(CURVES([[0., 1.], [0.2179715416e-1, 1.000000000], [0.4076274145e-1, 1.], [0.6209152791e-1, 1.000000000], [0.8356169540e-1, 1.], [.1049298189, 1.], [.1247408048, 1.], [.1452539331, 1.000000000], [... (22)
 

> display(pp,axes=boxed,title="Figure Exp. 5.2.5.",thickness=4,labels=[t,"u"]);
 

Plot_2d
 

> tf:=.2;
 

.2 (23)
 

> M:=30;
 

30 (24)
 

> T1:=[seq(tf*i/M,i=0..M)];
 

[0., 0.6666666667e-2, 0.1333333333e-1, 0.2000000000e-1, 0.2666666667e-1, 0.3333333333e-1, 0.4000000000e-1, 0.4666666667e-1, 0.5333333333e-1, 0.6000000000e-1, 0.6666666667e-1, 0.7333333333e-1, 0.800000...
[0., 0.6666666667e-2, 0.1333333333e-1, 0.2000000000e-1, 0.2666666667e-1, 0.3333333333e-1, 0.4000000000e-1, 0.4666666667e-1, 0.5333333333e-1, 0.6000000000e-1, 0.6666666667e-1, 0.7333333333e-1, 0.800000...
[0., 0.6666666667e-2, 0.1333333333e-1, 0.2000000000e-1, 0.2666666667e-1, 0.3333333333e-1, 0.4000000000e-1, 0.4666666667e-1, 0.5333333333e-1, 0.6000000000e-1, 0.6666666667e-1, 0.7333333333e-1, 0.800000...
[0., 0.6666666667e-2, 0.1333333333e-1, 0.2000000000e-1, 0.2666666667e-1, 0.3333333333e-1, 0.4000000000e-1, 0.4666666667e-1, 0.5333333333e-1, 0.6000000000e-1, 0.6666666667e-1, 0.7333333333e-1, 0.800000...
[0., 0.6666666667e-2, 0.1333333333e-1, 0.2000000000e-1, 0.2666666667e-1, 0.3333333333e-1, 0.4000000000e-1, 0.4666666667e-1, 0.5333333333e-1, 0.6000000000e-1, 0.6666666667e-1, 0.7333333333e-1, 0.800000...
(25)
 

> PP:=matrix(N+2,M+1);
 

array( 1 .. 6, 1 .. 31, [ ] ) (26)
 

> for i from 1 to N+2 do PP[i,1]:=evalf(subs(x=(i-1)*h,rhs(IC)));od:
 

> for i from 1 to N+2 do for j from 2 to M+1 do PP[i,j]:=evalf(subs(t=T1[j],U[i-1](t)));od;od:
 

> plotdata := [seq([ seq([(i-1)*h,T1[j],PP[i,j]], i=1..N+2)], j=1..M+1)]:
 

> surfdata(plotdata,axes=boxed,title="Figure Exp. 5.2.6.",labels=[x,t,u],orientation=[-90,90]);
 

Plot
 

>