Finite-difference implicit method
Show older comments
I tried to solve with matlab program the differential equation with finite difference IMPLICIT method. The problem: With finite difference implicit method solve heat problem
with initial condition:
and boundary conditions:
,
. Graphs not look good enough. I believe the problem in method realization(%Implicit Method part).
and boundary conditions:
,
. Graphs not look good enough. I believe the problem in method realization(%Implicit Method part). In the pic above are explicit method two graphs (not this code part here) and below - implicit. I think they shouldn't be like these, they are with hips now, so need help with method realization.
clear;
L = 1.; % Lenth of the wire 0<x<L
T =1; % Number of space steps 0<t<T
% Parameters needed to solve the equation within the fully implicit methodv
maxk = 1000; % Number of time steps
dt = T/maxk;
n = 10; % Number of space steps
dx = L/n;
a = 1;
b = (a^2)*dt/(dx*dx); % b Parameter of the method
% Initial temperature of the wire:
for i = 1:n+1
x(i) =(i-1)*dx;
u(i,1) =sin(x(i));
end
% Temperature at the boundary
for t=1:maxk+1
time(t) = (t-1)*dt;
u(1,t) = exp(time(t));
u(n+1,t) = sin(1)*exp(time(t));
end
% Implicit Method
aa(1:n-1) = -b;
b1=-b;
bb(1:n-1) = 1.+2.*b;
a1=1.+2.*b;
cc(1:n-1) = -b;
c1=-b;
for t = 2:maxk % Time loop
uu = u(2:n,t) + dt*(x(2:n)-time(t)).';
v = zeros(n-1,1);
w = a1;
u(2,t) = uu(1)/w;
for i=2:(n-1)
v(i-1) = c1/w;
w = a1 - b1*v(i-1);
u(i+1,t) = (uu(i) - b1*u(i,t))/w;
end
for j=(n-2):-1:1
u(j+1,t) = u(j+1,t) - v(j)*u(j+2,t);
end
end
% Graphical representation of the temperature at different selected times
subplot(2,2,3);
plot(x,u(:,1),'-',x,u(:,10),'-',x,u(:,45),'-',x,u(:,30),'-',x,u(:,60),'-')
title('Temperatura neisreikstiniu metodu')
xlabel('X')
ylabel('T')
subplot(2,2,4);
mesh(x,time,u')
title('Temperatura neisreikstiniu metodu')
xlabel('X')
ylabel('Temp')

Answers (0)
Categories
Find more on Mathematics in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!