Las ecuaciones lineales que usan una variable de la forma a + bx = c + dx se pueden resolver en Python usando la función eval() . El tipo de entrada será una ecuación lineal en forma de string.
Sintaxis:
eval(expression, globals=None, locals=None)
Aquí, transformaremos la ecuación en una expresión de números reales e imaginarios de modo que eval pueda procesarla fácilmente.
Por ejemplo, 5x + 4 = 2x + 10 se convierte en 5j + 4 – (2j + 10) al desplazar todos los términos del lado derecho hacia el izquierdo. Estamos transformando esta ecuación en una ecuación compleja porque eval() no puede procesar las ecuaciones de otra manera. Transformarlo en un número complejo ayuda a una evaluación más rápida.
Paso 1: Usaremos replace() en python para reemplazar «=» con «-(» y reemplazar «x» con «j».
Paso 2: Luego se agrega la string con “+)” para completar la expresión.
Paso 3: Luego se hace { “j”: 1j} para cambiar la ecuación a un formato que pueda ser fácilmente evaluado por la función eval(). En este paso se evalúan todos los términos constantes y también los términos x o imaginarios.
Paso 4: Luego, la expresión evaluada simplemente se descompone en partes real e imaginaria. Si la parte imaginaria existe o la x es verdadera y no cero se imprime la respuesta sino si la parte imaginaria es 0 y la parte real es verdadera no hay solución o hay infinitas soluciones. Aquí,
x = 2.000000
es la solución final.
Ejemplo 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))
x = 4.500000
Ejemplo 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))
No solution
Ejemplo 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))
Infinite solutions