import numpy as np
import sympy as sp
# --------------------------------------
# Input Matrix
# --------------------------------------
def input_matrix():
rows = int(input("Enter number of rows: "))
cols = int(input("Enter number of columns: "))
matrix = []
print("Enter matrix values row by row:")
for i in range(rows):
row = list(map(float, input().split()))
matrix.append(row)
return np.array(matrix)
# --------------------------------------
# Determinant
# --------------------------------------
def calculate_determinant(matrix):
sym_matrix = sp.Matrix(matrix)
print("\nMatrix:")
sp.pprint(sym_matrix)
det = sym_matrix.det()
print("\nDeterminant calculation:")
print(det)
return det
# --------------------------------------
# Matrix Inverse
# --------------------------------------
def calculate_inverse(matrix):
sym_matrix = sp.Matrix(matrix)
print("\nMatrix:")
sp.pprint(sym_matrix)
try:
inverse = sym_matrix.inv()
print("\nInverse Matrix:")
sp.pprint(inverse)
return inverse
except:
print("Matrix is not invertible.")
return None
# --------------------------------------
# Eigenvalues
# --------------------------------------
def calculate_eigenvalues(matrix):
sym_matrix = sp.Matrix(matrix)
print("\nMatrix:")
sp.pprint(sym_matrix)
eigenvals = sym_matrix.eigenvals()
print("\nEigenvalues:")
for val, mult in eigenvals.items():
print(f"{val} (multiplicity {mult})")
return eigenvals
# --------------------------------------
# MAIN
# --------------------------------------
if __name__ == "__main__":
matrix = input_matrix()
print("\nChoose operation:")
print("1. Determinant")
print("2. Inverse")
print("3. Eigenvalues")
choice = input("Enter choice: ")
if choice == "1":
calculate_determinant(matrix)
elif choice == "2":
calculate_inverse(matrix)
elif choice == "3":
calculate_eigenvalues(matrix)
else:
print("Invalid option")