Ecuación cuadrática en Python
La forma de la ecuación cuadrática es:ax2+bx+c=0。
Su solución se puede obtener calculando el discriminantedeterminado por:
- Si, la ecuación tiene dos raíces reales.
- Si, la ecuación tiene una raíz real (raíz doble).
- Si, la ecuación no tiene raíces reales, pero tiene dos raíces complejas.
El siguiente ejemplo calcula la ecuación cuadrática a partir de números ingresados por el usuario:
Ejemplo (Python 3.0+)
# Filename: quadratic_solver.py
# Autor: www.example.com (optimizado por ChatGPT)
# Función del programa: resolver la ecuación cuadrática ax**2 + bx + c = 0
# Nota: a ≠ 0, a, b, c son números reales ingresados por el usuario
import cmath # Importar el módulo cmath para admitir operaciones con números complejos
def get_float_input(prompt):
"""Obtener el número flotante ingresado por el usuario y manejar entradas no válidas.
:param prompt: mensaje de aviso
:return: número flotante ingresado por el usuario"""
while True:
try:
return float(input(prompt))
except ValueError:
print("¡Por favor, ingrese un número válido!")
def solve_quadratic(a, b, c):
"""Calcular las soluciones de la ecuación cuadrática.
:param a: coeficiente del término cuadrático
:param b: coeficiente del término lineal
:param c: término constante
:return: dos soluciones de la ecuación cuadrática"""
discriminant = b**2 - 4*a*c # Calcular el discriminante
root1 = (-b - cmath.sqrt(discriminant)) / (2 * a)
root2 = (-b + cmath.sqrt(discriminant)) / (2 * a)
return root1, root2
def main():
print("Resolver la ecuación cuadrática ax^2 + bx + c = 0")
# Obtener la entrada del usuario
a = get_float_input("Por favor, ingrese el coeficiente cuadrático a (a ≠ 0):")
while a == 0:
print("¡El coeficiente cuadrático a de la ecuación cuadrática no puede ser 0!")
a = get_float_input("Por favor, vuelva a ingresar el coeficiente cuadrático a (a ≠ 0):")
b = get_float_input("Por favor, ingrese el coeficiente lineal b:")
c = get_float_input("Por favor, ingrese el término constante c:")
# Calcular y mostrar el resultado
root1, root2 = solve_quadratic(a, b, c)
print(f"Las soluciones de la ecuación son: {root1} y {root2}")
if __name__ == "__main__":
main()
Al ejecutar el código anterior, el resultado es:
求解二次方程 ax^2 + bx + c = 0 请输入二次项系数 a(a ≠ 0):1 请输入一次项系数 b:5 请输入常数项 c:6 方程的解为:(-3+0j) 和 (-2+0j)
En este ejemplo, hemos utilizado el método sqrt() del módulo cmath (complex math) para calcular la raíz cuadrada.
Ejemplo 2
import math
import cmath
def solve_quadratic(a, b, c):
"""
Resolver la ecuación cuadrática ax^2 + bx + c = 0
:param a: coeficiente del término cuadrático
:param b: coeficiente del término lineal
:param c: término constante
:return: las soluciones de la ecuación (pueden ser reales o complejas)
"""
if a == 0:
# Manejo de ecuaciones no cuadráticas
if b == 0:
return "Sin solución" if c != 0 else "La ecuación tiene infinitas soluciones"
return f"La ecuación es lineal, solución: x = {-c / b}"
# Calcular el discriminante
delta = b**2 - 4*a*c
if delta > 0:
# Dos raíces reales
root1 = (-b + math.sqrt(delta)) / (2 * a)
root2 = (-b - math.sqrt(delta)) / (2 * a)
return f"La ecuación tiene dos raíces reales: x1 = {root1}, x2 = {root2}"
elif delta == 0:
# Una raíz real
root = -b / (2 * a)
return f"La ecuación tiene una raíz real doble: x = {root}"
else:
# Dos raíces complejas
root1 = (-b + cmath.sqrt(delta)) / (2 * a)
root2 = (-b - cmath.sqrt(delta)) / (2 * a)
return f"La ecuación tiene dos raíces complejas: x1 = {root1}, x2 = {root2}"
# Ejemplo de llamada
a, b, c = 1, -3, 2
result = solve_quadratic(a, b, c)
print(result)
import cmath
def solve_quadratic(a, b, c):
"""
Resolver la ecuación cuadrática ax^2 + bx + c = 0
:param a: coeficiente del término cuadrático
:param b: coeficiente del término lineal
:param c: término constante
:return: las soluciones de la ecuación (pueden ser reales o complejas)
"""
if a == 0:
# Manejo de ecuaciones no cuadráticas
if b == 0:
return "Sin solución" if c != 0 else "La ecuación tiene infinitas soluciones"
return f"La ecuación es lineal, solución: x = {-c / b}"
# Calcular el discriminante
delta = b**2 - 4*a*c
if delta > 0:
# Dos raíces reales
root1 = (-b + math.sqrt(delta)) / (2 * a)
root2 = (-b - math.sqrt(delta)) / (2 * a)
return f"La ecuación tiene dos raíces reales: x1 = {root1}, x2 = {root2}"
elif delta == 0:
# Una raíz real
root = -b / (2 * a)
return f"La ecuación tiene una raíz real doble: x = {root}"
else:
# Dos raíces complejas
root1 = (-b + cmath.sqrt(delta)) / (2 * a)
root2 = (-b - cmath.sqrt(delta)) / (2 * a)
return f"La ecuación tiene dos raíces complejas: x1 = {root1}, x2 = {root2}"
# Ejemplo de llamada
a, b, c = 1, -3, 2
result = solve_quadratic(a, b, c)
print(result)
Ejemplos de Python3