import numpy as np
def ingresar_ecuaciones():
nf = int(input("Ingrese el número de ecuaciones (nf): "))
nc = nf # El número de incógnitas es igual al número de ecuaciones
print("Ingrese los coeficientes de las ecuaciones y los términos independientes:")
A = np.zeros((nf, nc + 1))
for i in range(nf):
print(f"Ecuación {i+1}:")
for j in range(nc):
A[i][j] = float(input(f"Coeficiente x{j+1}: "))
A[i][nc] = float(input("Término independiente: "))
return A
def gauss_jordan(A):
nf, nc = A.shape
for i in range(nf):
# Dividir la fila i entre A[i][i]
A[i] = A[i] / A[i][i]
# Eliminación gaussiana hacia abajo
for j in range(nf):
if i != j:
factor = A[j][i]
A[j] = A[j] - factor * A[i]
return A
def mostrar_pasos(A):
print("Pasos intermedios:")
nf, nc = A.shape
for i in range(nf):
print(f"Ecuación {i+1}: {A[i]}")
print("")
def mostrar_solucion(A):
nf, nc = A.shape
print("Solución del sistema:")
for i in range(nf):
print(f"x{i+1} = {A[i][-1]}")
def menu():
print("Seleccione una opción:")
print("1. Ingresar un nuevo sistema de ecuaciones")
print("2. Resolver el sistema actual")
print("3. Salir")
opcion = int(input("Opción: "))
return opcion
def main():
while True:
opcion = menu()
if opcion == 1:
A = ingresar_ecuaciones()
mostrar_pasos(A)
elif opcion == 2:
A = ingresar_ecuaciones()
A = gauss_jordan(A)
mostrar_solucion(A)
elif opcion == 3:
break
else:
print("Opción inválida. Por favor, seleccione una opción válida.")
if __name__ == "__main__":
main()