Lineare Gleichungen mit einer Variablen der Form a + bx = c + dx können in Python mit der Funktion eval() gelöst werden. Der Eingabetyp ist eine lineare Gleichung in Form einer Zeichenfolge. 

Syntax:

eval(expression, globals=None, locals=None)

Hier werden wir die Gleichung in einen Ausdruck von reellen und imaginären Zahlen umwandeln, sodass eval sie leicht verarbeiten kann.

Zum Beispiel wird 5x + 4 = 2x + 10 zu 5j + 4 – (2j + 10) , indem alle Terme auf der rechten Seite nach links verschoben werden. Wir wandeln diese Gleichung in eine komplexe Gleichung um, weil eval() die Gleichungen sonst nicht verarbeiten kann. Die Umwandlung in eine komplexe Zahl hilft bei der schnelleren Auswertung. 

Schritt 1: Wir verwenden replace() in Python, um „=“ durch „-(“ und „x“ durch „j“ zu ersetzen.

Schritt 2: Die Zeichenfolge wird dann mit „+)“ hinzugefügt, um den Ausdruck zu vervollständigen.

Schritt 3: Dann wird { „j“ : 1j} ausgeführt, um die Gleichung in ein Format zu ändern, das von der Funktion eval() leicht ausgewertet werden kann. In diesem Schritt werden alle konstanten Terme ausgewertet und auch die x-Terme oder die imaginären Terme.

Schritt 4: Anschließend wird der ausgewertete Ausdruck einfach in Real- und Imaginärteil zerlegt. Wenn der Imaginärteil existiert oder x wahr und nicht Null ist, wird die Antwort gedruckt, andernfalls, wenn der Imaginärteil 0 und der Realteil wahr ist, gibt es keine Lösung oder es gibt unendlich viele Lösungen. Hier,

x = 2.000000

ist die endgültige Lösung.

Beispiel 1:

Python3

def solve(equation):
    
    # replacing all the x terms with j 
    # the imaginary part
    s1 = equation.replace('x', 'j')
      
    # shifting the equal sign to start 
    # an opening bracket
    s2 = s1.replace('=', '-(')
      
    # adding the closing bracket to form 
    # a complete expression
    s = s2+')'
      
    # mapping the literal j to the complex j
    z = eval(s, {'j': 1j})
    real, imag = z.real, -z.imag
      
    # if the imaginary part is true return the
    # answer
    if imag:
        return "x = %f" % (real/imag)
    else:
        if real:
            return "No solution"
        else:
            return "Infinite solutions"
  
  
equation = "2+3x=5x-7"
print(solve(equation))
Ausgabe
x = 4,500000

Beispiel 2:

Python3

def solve(equation):
    
    # replacing all the x terms with j 
    # the imaginary part
    s1 = equation.replace('x', 'j')
      
    # shifting the equal sign to start 
    # an opening bracket
    s2 = s1.replace('=', '-(')
      
    # adding the closing bracket to form 
    # a complete expression
    s = s2+')'
      
    # mapping the literal j to the complex j
    z = eval(s, {'j': 1j})
    real, imag = z.real, -z.imag
      
    # if the imaginary part is true return the
    # answer
    if imag:
        return "x = %f" % (real/imag)
    else:
        if real:
            return "No solution"
        else:
            return "Infinite solutions"
  
  
equation = "x=x+10"
print(solve(equation))
Ausgabe
Keine Lösung

Beispiel 3:

Python3

def solve(equation):
    
    # replacing all the x terms with j
    # the imaginary part
    s1 = equation.replace('x', 'j')
      
    # shifting the equal sign to start 
    # an opening bracket
    s2 = s1.replace('=', '-(')
      
    # adding the closing bracket to form 
    # a complete expression
    s = s2+')'
      
    # mapping the literal j to the complex j
    z = eval(s, {'j': 1j})
    real, imag = z.real, -z.imag
      
    # if the imaginary part is true return the
    # answer
    if imag:
        return "x = %f" % (real/imag)
    else:
        if real:
            return "No solution"
        else:
            return "Infinite solutions"
  
  
equation = "2x=2x"
print(solve(equation))
Ausgabe
Unendliche Lösungen