counting / maths /matrices /matrix_inverse.py
spagestic's picture
feat: enhance Gradio interfaces for matrix operations with detailed descriptions and examples
a561f92
"""
Compute the inverse of a matrix using NumPy.
"""
import numpy as np
from typing import List, Union
import gradio as gr
from maths.matrices.utils import parse_matrix, format_output
Matrix = Union[List[List[float]], np.ndarray]
def matrix_inverse(matrix: Matrix) -> np.ndarray:
m = np.array(matrix)
if m.shape[0] != m.shape[1]:
raise ValueError("Matrix must be square to compute inverse.")
return np.linalg.inv(m)
matrix_inverse_interface = gr.Interface(
fn=lambda m_str: format_output(matrix_inverse(parse_matrix(m_str))),
inputs=gr.Textbox(label="Matrix (must be square and invertible)", placeholder="e.g., [[1,2],[3,7]]"),
outputs=gr.Textbox(label="Inverse Matrix"),
title="Matrix Inverse",
description="Calculates the inverse of a square, invertible matrix. Input can be JSON (e.g., [[1,2],[3,7]]) or CSV (e.g., 1,2;3,7). Example: Matrix: [[1,2],[3,7]] => Result: [[7,-2],[-3,1]] (actual output will be floats)",
examples=[
["[[1,2],[3,7]]"],
["1,2;3,7"]
]
)