Seite 1 von 1

Probleme mit Fraction

Verfasst: Montag 19. Januar 2015, 20:18
von Immortalmemo
Guten Abend,

ich bin gerade dabei die LR-Zerlegung in Python zu implementieren.
Da ich hier auch mit Brüchen rumhantieren muss, wollte ich die Fraction-Klasse benutzen.
Ich kriege aber immer einen Fehler und zwar:
ValuError: Invalid literal for Fraction: ' '

Code: Alles auswählen

from fractions import *
from sys import stdin
for line in stdin:
                  A=line.split(",")
                  n=len(A)

.....Hier hab ich L bereits als Einheitsmatrix implementiert der Größe nxn

def LR_fact(A):
                  R=A
                  for i in range(n-1):
                         for j in range(i+1,n):
                                 L[j][i]=Fraction(R[j][i])/Fraction(R[i][i])
                                 for k in range(i,n):
                                         R[j][k]=R[j][k]-L[j][k]*R[i][k]
                  return L,R
LR=LR_fact(A)
print(LR)

Als Eingabe erhalte ich z.B. A= 1 2 3, 4 5 6, 3 6 7

Ich glaube ich habe noch nicht verstanden wie ich Fraction verwende. Kann mir jemand sagen was ich da falsch mache?
Liegts vlt daran, dass die Elemente der Matrix bei mir characters sind?

Vielen Dank im Voraus

Re: Probleme mit Fraction

Verfasst: Montag 19. Januar 2015, 20:29
von BlackJack
@Immortalmemo: Die Fehlermeldung selbst ist doch eigentlich recht eindeutig, die kommt so zustande:

Code: Alles auswählen

In [2]: Fraction(' ')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-2-7fbfce8387f1> in <module>()
----> 1 Fraction('')

/usr/lib/python2.7/fractions.pyc in __new__(cls, numerator, denominator)
    123                 if m is None:
    124                     raise ValueError('Invalid literal for Fraction: %r' %
--> 125                                      numerator)
    126                 numerator = int(m.group('num') or '0')
    127                 denom = m.group('denom')

ValueError: Invalid literal for Fraction: ' '
Schau Dir einfach mal an was `A` enthält und was bei den Indexzugriffen heraus kommt, beziehungsweise warum das eine Zeichenkette ist die ein Leerzeichen enthält. Das sollte eigentlich offensichtlich sein.