summaryrefslogtreecommitdiff
path: root/1332/CH8/EX8.8/8_8.sce
blob: d17143b288c2c3165dd19fd1eb44631dcf5609f0 (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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
//Example 8.8
//Block SOR Method
//Page no. 284
clc;clear;close;


A=[10,1,0,0,0,-1;1,10,1,0,0,0;2,0,20,1,0,0;0,0,1,10,-1,0;0,3,0,0,30,3;0,0,0,2,-2,20];        //equation matrix
B=[5;10;10;0;0;5]                     //solution matrix
disp(B,'B=',A,'A=')
w=0.8
for i=1:2
    for j=1:2
        A11(i,j)=A(i,j);
    end
    B1(i,1)=B(i,1);
end
for i=1:2
    for j=1:2
        A12(i,j)=A(i,j+2);
    end
    B2(i,1)=B(i+2,1);
end
for i=1:2
    for j=1:2
        A13(i,j)=A(i,j+4);
    end
    B3(i,1)=B(i+4,1);
end
for i=1:2
    for j=1:2
        A21(i,j)=A(i+2,j);
    end
end
for i=1:2
    for j=1:2
        A22(i,j)=A(i+2,j+2);
    end
end
for i=1:2
    for j=1:2
        A23(i,j)=A(i+2,j+4);
    end
end
for i=1:2
    for j=1:2
        A31(i,j)=A(i+4,j);
    end
end
for i=1:2
    for j=1:2
        A32(i,j)=A(i+4,j+2);
    end
end
for i=1:2
    for j=1:2
        A33(i,j)=A(i+4,j+4);
    end
end
disp(B3,'B3=',B2,'B2=',B1,'B1=',A33,'A33=',A32,'A32=',A31,'A31=',A23,'A23=',A22,'A22=',A21,'A21=',A13,'A13=',A12,'A12=',A11,'A11=');
A11_1=inv(A11);A22_1=inv(A22);A33_1=inv(A33);
disp(A33_1,'Inverse of Matrix A33=',A22_1,'Inverse of Matrix A22=',A11_1,'Inverse of Matrix A11=');
for i=1:2
    X1(i,1)=0;
    X2(i,1)=0;
    X3(i,1)=0;
end
for i=1:7
    X(i,1)=i-1;
end
for i=2:7
    X(1,i)=0;
end
for r=1:6
    X11=A11_1*((1-w)*X1+(-1)*w*A12*X2+(-1)*w*A13*X3+w*B1);
    X22=A22_1*((1-w)*X2+(-1)*w*A21*X11+(-1)*w*A23*X3+w*B2);
    X33=A33_1*((1-w)*X3+(-1)*w*A31*X11+(-1)*w*A32*X22+w*B3);
    X1=X11;
    X2=X22;
    X3=X33;
    disp(X3,'X3=',X2,'X2=',X1,'X1=')
    for i=2:7
        if(i<4)
            X(r+1,i)=X1(i-1,1);
        end
        if(i<6 & i>3)
            X(r+1,i)=X2(i-3,1);
        end
        if(i<8 & i>5)
            X(r+1,i)=X3(i-5,1);
        end
    end
end
printf('\n\nIteration');
for i=1:6
    printf('    x%i       ',i);
end
printf('\n    --------------------------------------------------------------------------------')
disp(X)
printf('\n\nAfter 5 iterations exact solution is:\n');
for i=1:6
    printf('x%i=%f     ',i,X(6,i+1));
end