Plotting the solution of the heat equation as a function of x and t


Here are two ways you can use MATLAB to produce the plot in Figure 10.5.5 of Boyce and DiPrima. In Example 1 of Section 10.5, the solution has been found to be be

$$u(x,t)= \frac {80}\pi \sum _{n=1,3,5,...}^\infty \frac 1n\, e^{\mbox{--} n^2
\pi ^2 \alpha ^2 t/2500} \, \sin \frac {n\pi x}{50}.$$

For the plot, take $\alpha^2=1$.

First method, defining the partial sums symbolically and using ezsurf

Unfortunately, I haven't figured out how to get ezsurf to do the graph in a reasonable amount of time using an anonymous function (the kind defined with @) but an inline function works.

syms x t n
u = inline((80/pi)*symsum(exp(-(2*n-1)^2*pi^2*t/2500)*sin((2*n-1)*pi*x/50)/(2*n-1),n,1,20));
ezsurf(u,[0 250 0 50])

Second method, using surf

I start by defining the grid of x and t values where the values of u will be computed. Be careful not to use too many points in your meshgrid command; if you do you won't get a clear plot.

x = linspace(0,50,50); t = linspace(0,250,100); [X,T]= meshgrid(x,t);

Alternatively, I could create the meshgrid by giving the command

[X,T]= meshgrid(0:1:50,0:2.5:250);

Next I define u using a for loop to add terms, starting with u=0.

for n=1:20
    u = u + exp(-(2.*n-1).^2.*pi.^2.*T./2500).*sin((2.*n-1).*pi.*X./50)./(2.*n-1);