summaryrefslogtreecommitdiff
path: root/3872/CH6/EX6.5/Ex6_5.sce
blob: d40df99c5907980222a32403f61a4ee77a22a7f5 (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
//Book - Power System: Analysis & Design 5th Edition
//Authors - J. Duncan Glover, Mulukutla S. Sarma, and Thomas J. Overbye
//Chapter - 6 ; Example 6.5
//Scilab Version - 6.0.0 ; OS - Windows

clc;
clear;

A=[5 10;9 2];          //Coefficients of variables in matrix form
y=[6;3];               //Constant coefficients in matrix form
tol=1e-4;              //Tolerance value
x=[0;0]

//Solution by matrix inversion

xm=inv(A)*y;

//Solution using Gauss–Seidel method

D=[A(1,1) 0;A(2,1) A(2,2)];     //Matrix containing the lower triangular elements of A
M=inv(D)*(D-A);

err=1;
iter=0;

while err>tol
    temp=x;
    x=M*x+inv(D)*y;
    if temp(1) ~=0 | temp(2) ~= 0
    err=max(abs((x(1)-temp(1))/temp(1)),abs((x(2)-temp(2))/temp(2)));
    end
    iter=iter+1;    
end

printf('The solution using matrix inversion is x1=%.4f and x2=%.4f\n\n',xm(1),xm(2))
printf('Soultion using Gauss-Seidal approach:\n')
if isnan(err)
    printf('The convergence criterion is not reached.The solution diverges\n')
else
    printf('The convergence criterion is satisfied at the %dth iteration\n',iter)
    printf('The solution is x1=%.4f and x2=%.4f',x(1),x(2))
end