summaryrefslogtreecommitdiff
path: root/845/CH9/EX9.4/Ex9_4.sce
blob: a50cc59023a1a87f9c0c3ab60bd41ad2c96236bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
//Example 9.4

clc
clear

delx = 0.25;
delt = 1/32;
xf = 1;
tf = delt;
x = 0:delx:xf;
t = 0:delt:tf;
m = length(x);
n = length(t);
r = delt/delx^2;


T = zeros(m,n);
T(1:m,1) = 1;
T(1,1:n) = 0;
T(m,1:n) = 0;

for j = 1:n-1
    M1 = zeros(m-2,m-2);
    M2 = zeros(m-2,1);
    for i = 2:m-1
        if i == 2 then
            M1(i-1,i-1)   = -2*(1+r);
            M1(i-1,i) = r;
            M2(i-1)     = -(r*T(i+1,j) + 2*(1-r)*T(i,j) + r*T(i-1,j));
        elseif i == m-1
            M1(i-1,i-2) = r;
            M1(i-1,i-1)   = -2*(1+r);
            M2(i-1)     = -(r*T(i+1,j) + 2*(1-r)*T(i,j) + r*T(i-1,j));
        else
            M1(i-1,i-2) = r;
            M1(i-1,i-1)   = -2*(1+r);
            M1(i-1,i) = r;
            M2(i-1)     = -(r*T(i+1,j) + 2*(1-r)*T(i,j) + r*T(i-1,j));
        end
    end
    T(2:m-1,j+1) = (M1\M2);
end
T1 = M1\M2;
for i = 1:length(T1)
    disp(strcat(["T",string(i)," = ",string(T1(i))]));
end