import numpy as np
# Step 1: Read size of matrix
n = int(input("Enter the order of square matrix: "))
# Step 2: Input Coefficient Matrix A and Constant Vector B
print("Enter coefficients of matrix A:")
A = []
for i in range(n):
row = list(map(float, input().split()))
if len(row) != n:
print("Please enter exactly", n, "coefficients.")
exit()
A.append(row)
print("Enter constants of vector B:")
B = list(map(float, input().split()))
if len(B) != n:
print("Please enter exactly", n, "constants.")
exit()
A = np.array(A)
B = np.array(B)
# Step 3: Calculate determinant of A
detA = np.linalg.det(A)
print("\nDeterminant of A: {:.3f}".format(detA))
# Step 4: Check solvability
if detA == 0:
print("Matrix is singular; the system is not uniquely solvable.")
exit()
# Step 5: Solve using Cramer's Rule
solution = []
for i in range(n):
Ai = A.copy()
Ai[:, i] = B
detAi = np.linalg.det(Ai)
xi = detAi / detA
solution.append(xi)
# Step 6: Display the solution
print("\nThe solution using Cramer's Rule:")
for i, x in enumerate(solution):
print(f"x{i+1} = {x:.6f}")
# Step 7 & 8: Calculate and display inverse of A
inverseA = np.linalg.inv(A)
print("\nInverse of matrix A:")
for row in inverseA:
print(" ".join(f"{val:.4f}" for val in row))
aW1wb3J0IG51bXB5IGFzIG5wCgojIFN0ZXAgMTogUmVhZCBzaXplIG9mIG1hdHJpeApuID0gaW50KGlucHV0KCJFbnRlciB0aGUgb3JkZXIgb2Ygc3F1YXJlIG1hdHJpeDogIikpCgojIFN0ZXAgMjogSW5wdXQgQ29lZmZpY2llbnQgTWF0cml4IEEgYW5kIENvbnN0YW50IFZlY3RvciBCCnByaW50KCJFbnRlciBjb2VmZmljaWVudHMgb2YgbWF0cml4IEE6IikKQSA9IFtdCmZvciBpIGluIHJhbmdlKG4pOgogICAgcm93ID0gbGlzdChtYXAoZmxvYXQsIGlucHV0KCkuc3BsaXQoKSkpCiAgICBpZiBsZW4ocm93KSAhPSBuOgogICAgICAgIHByaW50KCJQbGVhc2UgZW50ZXIgZXhhY3RseSIsIG4sICJjb2VmZmljaWVudHMuIikKICAgICAgICBleGl0KCkKICAgIEEuYXBwZW5kKHJvdykKCnByaW50KCJFbnRlciBjb25zdGFudHMgb2YgdmVjdG9yIEI6IikKQiA9IGxpc3QobWFwKGZsb2F0LCBpbnB1dCgpLnNwbGl0KCkpKQppZiBsZW4oQikgIT0gbjoKICAgIHByaW50KCJQbGVhc2UgZW50ZXIgZXhhY3RseSIsIG4sICJjb25zdGFudHMuIikKICAgIGV4aXQoKQoKQSA9IG5wLmFycmF5KEEpCkIgPSBucC5hcnJheShCKQoKIyBTdGVwIDM6IENhbGN1bGF0ZSBkZXRlcm1pbmFudCBvZiBBCmRldEEgPSBucC5saW5hbGcuZGV0KEEpCnByaW50KCJcbkRldGVybWluYW50IG9mIEE6IHs6LjNmfSIuZm9ybWF0KGRldEEpKQoKIyBTdGVwIDQ6IENoZWNrIHNvbHZhYmlsaXR5CmlmIGRldEEgPT0gMDoKICAgIHByaW50KCJNYXRyaXggaXMgc2luZ3VsYXI7IHRoZSBzeXN0ZW0gaXMgbm90IHVuaXF1ZWx5IHNvbHZhYmxlLiIpCiAgICBleGl0KCkKCiMgU3RlcCA1OiBTb2x2ZSB1c2luZyBDcmFtZXIncyBSdWxlCnNvbHV0aW9uID0gW10KZm9yIGkgaW4gcmFuZ2Uobik6CiAgICBBaSA9IEEuY29weSgpCiAgICBBaVs6LCBpXSA9IEIKICAgIGRldEFpID0gbnAubGluYWxnLmRldChBaSkKICAgIHhpID0gZGV0QWkgLyBkZXRBCiAgICBzb2x1dGlvbi5hcHBlbmQoeGkpCgojIFN0ZXAgNjogRGlzcGxheSB0aGUgc29sdXRpb24KcHJpbnQoIlxuVGhlIHNvbHV0aW9uIHVzaW5nIENyYW1lcidzIFJ1bGU6IikKZm9yIGksIHggaW4gZW51bWVyYXRlKHNvbHV0aW9uKToKICAgIHByaW50KGYieHtpKzF9ID0ge3g6LjZmfSIpCgojIFN0ZXAgNyAmIDg6IENhbGN1bGF0ZSBhbmQgZGlzcGxheSBpbnZlcnNlIG9mIEEKaW52ZXJzZUEgPSBucC5saW5hbGcuaW52KEEpCnByaW50KCJcbkludmVyc2Ugb2YgbWF0cml4IEE6IikKZm9yIHJvdyBpbiBpbnZlcnNlQToKICAgIHByaW50KCIgIi5qb2luKGYie3ZhbDouNGZ9IiBmb3IgdmFsIGluIHJvdykpCg==