Gauß-Rechner funzt nicht

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
UserUser222
User
Beiträge: 1
Registriert: Samstag 9. Oktober 2021, 10:38

Hallo zusammen,

ich bin zurzeit dabei mit Python einen 3x3 Gauß-LGS-Rechner in Python zu entwickeln.
Hierzu verwende ich 3 Arrays in denen jeweils die 4 Koeffizienten gespeichert werden.
Anschließend soll wie beim normalen Rechnen die erste Reihe mit der 2./3. Reihe multipliziert werden, um die linken Koeffizienten auf 0 zu bekommen. Hierzu nutze ich die Formel: (1 / oberste Reihe * 2. Reihe * (-1) bzw. (1 / oberste Reihe * 3. Reihe * (-1). Das funktioniert auch so weit.

Beim 2. Schritt, wenn man in der 3. Reihe die 2. Zahl auf 0 bekommen will, funktioniert jedoch das Programm noch nicht. Wahrscheinlich habe ich hierbei einen kleinen Logikfehler :). Findet jemand von euch den Fehler?
-
Anschließend folgt dann noch das zurückrechnen, um die Lösungsmenge zu bestimmen. Diesen Punkt habe ich noch nicht gemacht, werde ihn aber machen, sobald ich es geschafft habe, dieses Problem zu lösen. Nur falls jemand fragt, warum dieser noch nicht vorhanden ist.

Im Code selber (unten angefügt) sind a,b,c Zählvariablen für die Whileschleifen und mulx sind die Formeln um auf die Koeffizienten zu kommen.

Zum Schluss: Ich bin neu hier und weiß, dass man nach viewtopic.php?f=1&t=1689 keine kompletten Hausaufgaben reinschrieben soll. Jedoch hänge ich nur an diesem kleinen Punkt und hoffe, dass ihr mir trotzdem helfen könnt.

Code: Alles auswählen

print("Gauß-Rechner")
length=3
a=0
reihea=[6,-1,2,1]
reiheb=[5,-3,3,4]
reihec=[3,-2,1,14]

print("Ursprungsreihe:")
print(reihea)
print(reiheb)
print(reihec)

##Funktionen um 3x3 Array zu berechnen
mul1=1/reihea[0]*reiheb[0]*(-1)
mul2=1/reihea[0]*reihec[0]*(-1)
mul3=1/reiheb[1]*reihec[1]*(-1)

print(reihea[0])
print(reiheb[0])

print("A mit B *",mul1)
print("A mit C *",mul2)
print("B mit C *",mul3)
b=0
c=0

##BErechnen der zweiten EBene
print()
print("Zweite Ebene")
print(reihea)
while b<=length:
    reiheb[b]=reihea[b]*mul1+reiheb[b]
    b=b+1
print(reiheb)
while c<=length:
    reihec[c]=reihea[c]*mul2+reihec[c]
    c=c+1
print(reihec)

## Berechnen der dritten EBene
b=0
print()
print("Dritte Ebene")
print(reihea)
print(reiheb)
##Berechnen der dritten ZEile
while b<=length:
    reihec[b]=reiheb[b]*mul3+reihec[b]
    b=b+1
print(reihec)
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@UserUser222,

der Fehler liegt im letzten Schritt bei der Berechnung der Ebene drei. Der Multiplikator muss aus dem was die Berechnung der zweiten Ebene ergeben hat bestimmt werden. Du bestimmst mul3 aber schon ganz am Anfang. Daher stimmt der Multiplikator für den letzten Schritt nicht mehr.

Die Verwendung von while-Schleifen ist für so etwas übrigens viel zu umständlich. Habt ihr denn noch keine for-Schleifen gelernt?
Antworten