Advertisement
Korotkodul

draft

Mar 1st, 2025
174
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.40 KB | None | 0 0
  1. import numpy as np
  2.  
  3. class ShapeMismatchError(Exception):
  4.     pass
  5.  
  6. def get_projections_components(
  7.     matrix: np.ndarray,
  8.     vector: np.ndarray,
  9. ):# -> tuple[np.ndarray | None, np.ndarray | None]:
  10.     if matrix.shape[0] != matrix.shape[1] or matrix.shape[0] != vector.shape[0]:
  11.         raise ShapeMismatchError
  12.     if np.linalg.det(matrix) == 0:
  13.         return None, None
  14.     coordinates_in_the_basis = np.linalg.solve(matrix.T, vector.T)
  15.     zero_matrix = np.zeros(shape = matrix.shape)
  16.     coordinates_of_projections = np.diag(coordinates_in_the_basis)
  17.     print("np.repeat(vector[np.newaxis, :], coordinates_of_projections.shape[0], axis = 1)")
  18.     print(np.repeat(vector[np.newaxis, :], coordinates_of_projections.shape[0], axis=0).shape)
  19.     print()
  20.     print("coordinates_of_projections")
  21.     print(coordinates_of_projections.shape)
  22.     print()
  23.     part1 = np.repeat(vector[np.newaxis, :], coordinates_of_projections.shape[0], axis = 1)
  24.     orthogonal_projections =  np.reshape(part1, coordinates_of_projections.shape) - coordinates_of_projections
  25.     print("np.repeat(vector[np.newaxis, :], coordinates_of_projections.shape[0], axis = 1)")
  26.     print(np.repeat(vector[np.newaxis, :], coordinates_of_projections.shape[0], axis = 0))
  27.  
  28.     print("basis")
  29.     print(matrix)
  30.     print()
  31.  
  32.     print("vector")
  33.     print(vector)
  34.     print()
  35.  
  36.     print("coordinates_in_the_basis")
  37.     print(coordinates_in_the_basis)
  38.     print()
  39.  
  40.     print("zero_matrix")
  41.     print(zero_matrix)
  42.     print()
  43.  
  44.     print("coordinates_of_projections")
  45.     print(coordinates_of_projections)
  46.     print()
  47.  
  48.     print("np.repeat(vector[np.newaxis, :], 3)")
  49.     print(np.repeat(vector[np.newaxis, :], 3))
  50.     print()
  51.  
  52.     print("orthogonal_projections")
  53.     print(orthogonal_projections)
  54.     print()
  55.     print()
  56.     return coordinates_in_the_basis, orthogonal_projections
  57.  
  58. matrix = np.diag([2, 3])
  59. #matrix = np.diag([1, 1])
  60. vector = np.arange(start=1, stop=3)
  61. projections_expected = np.array([[1, 0], [0, 2]])
  62. orthogonals_expected = np.array([[0, 2], [1, 0]])
  63.  
  64. projections, orthogonals = get_projections_components(matrix, vector)
  65. #projections = get_projections_components(matrix, vector)
  66.  
  67. print("projections")
  68. print(projections)
  69. print()
  70. print("projections_expected")
  71. print(projections_expected)
  72. print()
  73.  
  74. #assert np.allclose(projections, projections_expected)
  75. #assert np.allclose(orthogonals, orthogonals_expected)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement