Nugroho's blog.: Gauss Naif in Python

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:

323f (5) amp (1) android (12) apple (7) arduino (18) art (1) assembler (21) astina (4) ATTiny (23) blackberry (4) camera (3) canon (2) cerita (2) computer (106) crazyness (11) debian (1) delphi (39) diary (286) flash (8) fortran (6) freebsd (6) google apps script (8) guitar (2) HTML5 (10) IFTTT (7) Instagram (7) internet (12) iOS (5) iPad (6) iPhone (5) java (1) javascript (1) keynote (2) LaTeX (6) lazarus (1) linux (29) lion (15) mac (28) macbook air (8) macbook pro (3) macOS (1) Math (3) mathematica (1) maverick (6) mazda (4) microcontroler (35) mountain lion (2) music (37) netbook (1) nugnux (6) os x (36) php (1) Physicist (29) Picture (3) programming (189) Python (109) S2 (13) software (7) Soliloquy (125) Ubuntu (5) unix (4) Video (8) wayang (3) yosemite (3)