This is an old revision of the document!
We will complete our determination of the Fourier series solution of the heat equation as presented in the previous lecture. This was the problem of: ut=κuxx,x∈[0,π],t≥0u(0,t)=0=u(π,t)u(x,0)=f(x)=1.
u(x,t)∼∞∑1[bnsin(nπxL)].
where bn will be the Fourier sine coefficients of the odd 2π extension of f(x) on [0,π].
The hardest part is to understand how to calculate the bn coefficients via an odd extension of the initial condition. In many ways, this is somewhat backwards (usually we ask “How do I compute a Fourier series for an odd extension” rather than to associate a Fourier series already given to an odd extension).
Solution of 1D heat equation with zero Dirichlet
- % Written for MA20223 Vectors & PDEs
- clear % Clear all variables
- close all % Close all windows
- N = 20; % How many Fourier modes to include?
- % Define an in-line function that takes in three inputs:
- % Input 1: n value [scalar]
- % Input 2: x value [vector]
- % Input 3: t value [scalar]
- R = @(n, t, x) -2/(n*pi)*((-1)^n - 1)*exp(-n^2*t)*sin(n*x);
- % Create a mesh of points between two limits
- x0 = pi;
- x = linspace(0, x0, 1000);
- % Create a mesh of points in time
- t = linspace(0, 5, 200);
- figure(1); % Open the figure
- plot([0, pi], [1, 1], 'b', 'LineWidth', 2); % Plot the base function
- ylim([-0.2,1.2]); % Set the y limits
- xlim([0, x0]); % Set the x limits
- xlabel('x'); ylabel('u(x,t)');
- hold on
- for j = 1:length(t)
- tj = t(j);
- u = 0;
- for n = 1:N
- u = u + R(n, tj, x);
- end
- % Plotting commands
- if j == 1
- p = plot(x, u, 'r');
- else
- set(p, 'YData', u);
- end
- drawnow
- title(['t = ', num2str(tj)]);
- pause(0.1);
- if j == 1
- pause
- end
- end