Nugroho's blog.: Gauss Naif in Python

Pages

Thursday, April 27, 2017

Gauss Naif in Python

Okay, we've done the manual one, how about automatize it?

It's actually just a matter of finding the pattern on that code and after we found the loop, we just have to well... loop it, :)





Here's the automatic code, it could be used on any size of matrices.
from random import uniform

def showIt(a):
    print 'The matrix'
    print a[0][0], a[0][1],a[0][2], a[0][3]
    print a[1][0], a[1][1],a[1][2], a[1][3]
    print a[2][0], a[2][1],a[2][2], a[2][3]
a = []
x = []
for i in range (3):
    a.append([])
    x.append(0.)
    for j in range (4):
        a[i].append(uniform(.1,10))
        
showIt(a)

#Elimination of lower triangle
print ''
print 'lower triangle elimination'
for i in range(3):
    for j in range(0,i+1):
        temp = a[i][j]
        for k in range(4):
            if (i==j):
                a[i][k] /= temp
            else:
                a[i][k] =a[i][k]/temp - a[j][k]
        
showIt(a)

#back subtitution
for i in range(2,-1,-1):
    x[i] = a[i][3]
    for j in range(2,i,-1):
        x[i] -= x[j]*a[i][j]

print ''
print x


And the result is

Nugrohos-MacBook-Air:blog nugroho$ python gaussAuto.py 
The matrix
2.9253100656 5.50024585256 7.54933211423 0.802045271906
7.46608768407 7.19037200354 4.96635482944 5.77225324671
4.34208584906 9.64108592095 6.96107863057 0.5016396771

lower triangle elimination
The matrix
1.0 1.88022661845 2.58069467678 0.274174447809
-0.0 1.0 2.08852903767 -0.544024465595
-0.0 -0.0 1.0 -0.0156447726138

[1.2760025294980237, -0.5113499037034588, -0.015644772613790357]
Nugrohos-MacBook-Air:blog nugroho$ 
.

No comments:

Post a Comment