Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- class ShapeMismatchError(Exception):
- pass
- def get_projections_components(
- matrix: np.ndarray,
- vector: np.ndarray,
- ):# -> tuple[np.ndarray | None, np.ndarray | None]:
- if matrix.shape[0] != matrix.shape[1] or matrix.shape[0] != vector.shape[0]:
- raise ShapeMismatchError
- if np.linalg.det(matrix) == 0:
- return None, None
- coordinates_in_the_basis = np.linalg.solve(matrix.T, vector.T)
- zero_matrix = np.zeros(shape = matrix.shape)
- coordinates_of_projections = np.diag(coordinates_in_the_basis)
- print("np.repeat(vector[np.newaxis, :], coordinates_of_projections.shape[0], axis = 1)")
- print(np.repeat(vector[np.newaxis, :], coordinates_of_projections.shape[0], axis=0).shape)
- print()
- print("coordinates_of_projections")
- print(coordinates_of_projections.shape)
- print()
- part1 = np.repeat(vector[np.newaxis, :], coordinates_of_projections.shape[0], axis = 1)
- orthogonal_projections = np.reshape(part1, coordinates_of_projections.shape) - coordinates_of_projections
- print("np.repeat(vector[np.newaxis, :], coordinates_of_projections.shape[0], axis = 1)")
- print(np.repeat(vector[np.newaxis, :], coordinates_of_projections.shape[0], axis = 0))
- print("basis")
- print(matrix)
- print()
- print("vector")
- print(vector)
- print()
- print("coordinates_in_the_basis")
- print(coordinates_in_the_basis)
- print()
- print("zero_matrix")
- print(zero_matrix)
- print()
- print("coordinates_of_projections")
- print(coordinates_of_projections)
- print()
- print("np.repeat(vector[np.newaxis, :], 3)")
- print(np.repeat(vector[np.newaxis, :], 3))
- print()
- print("orthogonal_projections")
- print(orthogonal_projections)
- print()
- print()
- return coordinates_in_the_basis, orthogonal_projections
- matrix = np.diag([2, 3])
- #matrix = np.diag([1, 1])
- vector = np.arange(start=1, stop=3)
- projections_expected = np.array([[1, 0], [0, 2]])
- orthogonals_expected = np.array([[0, 2], [1, 0]])
- projections, orthogonals = get_projections_components(matrix, vector)
- #projections = get_projections_components(matrix, vector)
- print("projections")
- print(projections)
- print()
- print("projections_expected")
- print(projections_expected)
- print()
- #assert np.allclose(projections, projections_expected)
- #assert np.allclose(orthogonals, orthogonals_expected)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement