Info
この質問は閉じられています。 編集または回答するには再度開いてください。
solving heat equation using explicit method
1 回表示 (過去 30 日間)
古いコメントを表示
I need a help for the following code to locate the error since the numerical solution is not approximate the exact one. The heat equation have 0 boundary conditions
clear all;
clc;
L = 2; % Length of the wire
T =1; % Final time
% Parameters needed to solve the equation within the explicit method
maxk = 210; % Number of time steps
dt = T/maxk;
n = 10; % Number of space steps
dx = L/n;
a = 1;
r= a*dt/(dx*dx); % b should be less than 0.5
% Initial temperature of the wire: a sinus.
for i = 1:n+1
x(i) =(i-1)*dx;
u(i,1) =sin((pi/2)*x(i));
end
% boundary
for t=1:maxk+1
time(t) = (t-1)*dt;
u(1,t) = 0;
u(n+1,t) = 0;
end
% Implementation of the explicit method
for t=1:maxk % Time Loop
for i=2:n; % Space Loop
u(i,t+1) =u(i,t) + r*(u(i-1,t)+u(i+1,t)-2.*u(i,t)) + dt*(x(i)-time(t));
end
end
%Exact= @(x, t) exp(-(pi^2/4)*t) .* sin((pi/2) * x);
%f = Exact(x, t);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%55
% Parameters
LL = 2; % Length of the domain (0 to 2)
xx = linspace(0, LL, 100); % Discretize the x domain (0 to 2)
t_values = [0, 0.05, 0.1]; % Time values to plot
% Define the function u(x,t)
u_exact = @(xx, tt) exp(-pi^2/4 * tt) .* sin(pi/2 * xx);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Graphical representation of the temperature at different selected times
figure(1)
plot(x,u(:,1),'-',x,u(:,10),'-',x,u(:,45),'-',x,u(:,30),'-',x,u(:,60),'-')
title('numerical')
xlabel('X')
ylabel('T')
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
figure(2);
hold on;
for tt = t_values
uu = u_exact(xx, tt);
plot(xx, uu, 'DisplayName', ['t = ', num2str(tt)]);
end
% Labels and legend
xlabel('x');
ylabel('u(x,t)');
title('Exact solution ');
legend show;
grid on;
hold of
4 件のコメント
Torsten
2024 年 9 月 5 日
If you plot the exact solution at the correct times, namely
t_values = [0, 9*dt, 29*dt,44*dt,59*dt]; % Time values to plot
you will see that exact and numerical solution agree.
回答 (0 件)
この質問は閉じられています。
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!