File size: 1,238 Bytes
288b0ef
 
 
 
 
ff0d3b3
 
 
288b0ef
 
 
 
 
 
 
 
 
ff0d3b3
 
 
 
 
 
 
 
 
a561f92
 
 
 
 
ff0d3b3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
"""
Multiply two matrices 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_multiply(matrix1: Matrix, matrix2: Matrix) -> np.ndarray:
    m1 = np.array(matrix1)
    m2 = np.array(matrix2)
    if m1.shape[1] != m2.shape[0]:
        raise ValueError("Number of columns in the first matrix must equal number of rows in the second for multiplication.")
    return np.dot(m1, m2)

matrix_multiply_interface = gr.Interface(
    fn=lambda m1_str, m2_str: format_output(matrix_multiply(parse_matrix(m1_str), parse_matrix(m2_str))),
    inputs=[
        gr.Textbox(label="Matrix 1", placeholder="e.g., [[1,2],[3,4]]"),
        gr.Textbox(label="Matrix 2", placeholder="e.g., [[5,6],[7,8]]")
    ],
    outputs=gr.Textbox(label="Resulting Matrix"),
    title="Matrix Multiplication",
    description="Multiplies two matrices. The number of columns in Matrix 1 must equal the number of rows in Matrix 2. Example: Matrix 1: [[1,2],[3,4]], Matrix 2: [[5,6],[7,8]] => Result: [[19,22],[43,50]]",
    examples=[
        ["[[1,2],[3,4]]", "[[5,6],[7,8]]"],
        ["1,2;3,4", "5,6;7,8"]
    ]
)