You are on page 1of 5

Jacobi code:

>> close all

% give data

x0=0;

xL=10;

dx=2;

T0=200;

TL=40;

Ta=10;

h=0.02;

m=((xL-x0)/dx)+1; %no. of points

n=m-2; %Matrix Size

A=zeros(n,n);

for i=1:n

if i==1

A(i,i)=2+h*dx*dx;

A(i,i+1)=-1;

elseif i==n

A(i,i)=2+h*dx*dx;

A(i,i-1)=-1;

else

A(i,i)=2+h*dx*dx;

A(i,i+1)=-1;

A(i,i-1)=-1;

end

end

%Matrix B

B=zeros(n,1);

for i=1:n

if i==1

B(i,1)=h*dx*dx*Ta+T0;

elseif i==n

B(i,1)=h*dx*dx*Ta+TL;
else

B(i,1)=h*dx*dx*Ta;

end

end

% Jacobi Method

% Initial Guess

T=zeros(n,1);

% iterations

iterations=50;

for itr=1:50

Told=T;

for i=1:1:n

factor=0;

factor1=0;

for j=1:1:i-1

factor1=A(i,j)*Told(j,1);

factor=factor1+factor;

end

for j=i+1:1:n

factor1=A(i,j)*Told(j,1);

factor=factor1+factor;

end

T(i,1)=(1/A(i,i))*(B(i,1)-factor);

end

end

% Plotting

T=[T0;T;TL];

fprintf('Temperatures is T = \n');

Temperatures is T =

>> disp(T)

200.0000

150.8898

113.0511
83.4564

59.7387

40.0000

>> plot([x0:dx:xL]',T)

>> xlabel('length x')

>> ylabel('Temperature in ^o C')

>>
Gauss Seidal code:
>> close all

% give data

x0=0;

xL=10;

dx=2;

T0=200;

TL=40;

Ta=10;

h=0.02;

m=((xL-x0)/dx)+1; %no. of points

n=m-2; %Matrix Size

A=zeros(n,n);

for i=1:n

if i==1

A(i,i)=2+h*dx*dx;

A(i,i+1)=-1;

elseif i==n

A(i,i)=2+h*dx*dx;

A(i,i-1)=-1;

else

A(i,i)=2+h*dx*dx;

A(i,i+1)=-1;

A(i,i-1)=-1;

end
end

%Matrix B

B=zeros(n,1);

for i=1:n

if i==1

B(i,1)=h*dx*dx*Ta+T0;

elseif i==n

B(i,1)=h*dx*dx*Ta+TL;

else

B(i,1)=h*dx*dx*Ta;

end

end

>> % Gauss Seidal Method

>> % Initial guess

>> T=zeros(n,1);

% iterations

iterations=50;

for itr=1:50

Told=T;

for i=1:1:n

factor=0;

factor1=0;

for j=1:1:n

factor =0;

factor1=0;

for j=1:1:n

if j~=i

factor1=A(i,j)*T(j,1);

factor=factor1+factor;

end

end

T(i,1)=(1/A(i,i))*(B(i,1)-factor);

end
end

% Plotting

T=[T0;T;TL];

fprintf('Temperatures is T = \n');

disp(T)

plot([x0:dx:xL]',T)

xlabel('length x')

ylabel('Temperature in ^o C')

You might also like