Question: How do I use the result of pdsolve(numeric)?

November 13 2011 Wavish 5

1

I am trying to use Maple to study a 1D wave equation with non-uniform coefficients. In general the problem does not have analytical solutions, hence I am using pdsolve(..., numeric). As the first test I am looking at the development of a Gaussian pulse in a uniform medium, doing:

PDE := diff(u(x, t), t, t) = diff(u(x, t), x, x);

IBC := {u(-10, t) = exp(-(-10)^2), u(10, t) = exp(-10^2), u(x, 0) = exp(-x^2), (D[2](u))(x, 0) = 0};

pds := pdsolve(PDE, IBC, numeric, time = t, range = -10 .. 10, spacestep = 1/100);

p1 := pds:-plot(t = 0); p3 := pds:-plot(t = 3); p5 := pds:-plot(t = 5); p4 := pds:-plot(t = 4);

plots[display]({p1, p3, p4, p5});

 

As the result I see the creation of two Gaussian pulses propagating in the opposite directions. So far so good.

But, what I need next is the possibility to study the resultant array u(x,t): to plot 1D "cross-sections" for given values of x or t, for example, or Fourier analyse these 1D "cross-sections", study cross-correlations of the 1D cross-sections etc. I am trying to learn how to make it on the simple test wave equation.So, what I actually need is to get the numerical values of the function u(x,t) - a 2D array of its values. In particular for fixed values of one of the independent variables.

I tried

U := subs(pds:-value(output = listprocedure), u(x, t));

But it does not seem to work, as when I am looking at the value U(0,0) it gives me 0.:

> print(U(0, 0));
                          0.

while it should be 1., as I understand.

Could someone tell me what I am doing wrong, and what it is the best solution? Thanks a lot in advance! (I am obviously new to Maple). In principle, for my purposes it would be sufficient if I could save the result of the numerical calculations, the resultant array u(x,t), to a text file, and then play with the function using, e.g. IDL. But, again, I have no idea how to save the resultant array.

Please Wait...