2024-10-20 16:30:42 +02:00
|
|
|
import numpy as np
|
|
|
|
|
|
|
|
|
|
class MatrixGenerator:
|
2024-10-20 19:06:15 +02:00
|
|
|
@staticmethod
|
|
|
|
|
def generate_spd_matrix(n: int) -> np.ndarray:
|
|
|
|
|
"""
|
|
|
|
|
Generates a random symmetric positive definite matrix of size n x n.
|
|
|
|
|
|
|
|
|
|
Parameters:
|
|
|
|
|
n (int): The size of the matrix to generate.
|
|
|
|
|
|
|
|
|
|
Returns:
|
|
|
|
|
np.ndarray: A symmetric positive definite matrix of size n x n.
|
|
|
|
|
"""
|
|
|
|
|
A = np.random.rand(n, n)
|
|
|
|
|
spd_matrix = np.dot(A, A.T) + n * np.eye(n) # Adding n*I ensures positive definiteness
|
|
|
|
|
return spd_matrix
|
|
|
|
|
|
2024-10-20 16:30:42 +02:00
|
|
|
@staticmethod
|
|
|
|
|
def generate_random_matrix_and_vector(size):
|
2024-10-20 19:06:15 +02:00
|
|
|
A = MatrixGenerator.generate_spd_matrix(size)
|
2024-10-20 16:30:42 +02:00
|
|
|
b = np.random.uniform(-1, 1, size)
|
|
|
|
|
return A, b
|
2024-10-20 17:47:37 +02:00
|
|
|
|
|
|
|
|
def generate_identity_matrix(size):
|
|
|
|
|
return np.eye(size)
|