diff --git a/linear_algebra/src/lib.py b/linear_algebra/src/lib.py index dad0a8c0a..85dc4b71c 100644 --- a/linear_algebra/src/lib.py +++ b/linear_algebra/src/lib.py @@ -44,7 +44,6 @@ class Vector: component(i): gets the i-th component (0-indexed) change_component(pos: int, value: float): changes specified component euclidean_length(): returns the euclidean length of the vector - magnitude(): returns the magnitude of the vector angle(other: Vector, deg: bool): returns the angle between two vectors TODO: compare-operator """ @@ -159,18 +158,20 @@ class Vector: def euclidean_length(self) -> float: """ returns the euclidean length of the vector - """ - squares = [c ** 2 for c in self.__components] - return math.sqrt(sum(squares)) - def magnitude(self) -> float: - """ - Magnitude of a Vector - - >>> Vector([2, 3, 4]).magnitude() + >>> Vector([2, 3, 4]).euclidean_length() 5.385164807134504 - + >>> Vector([1]).euclidean_length() + 1.0 + >>> Vector([0, -1, -2, -3, 4, 5, 6]).euclidean_length() + 9.539392014169456 + >>> Vector([]).euclidean_length() + Traceback (most recent call last): + ... + Exception: Vector is empty """ + if len(self.__components) == 0: + raise Exception("Vector is empty") squares = [c ** 2 for c in self.__components] return math.sqrt(sum(squares)) @@ -188,7 +189,7 @@ class Vector: Exception: invalid operand! """ num = self * other - den = self.magnitude() * other.magnitude() + den = self.euclidean_length() * other.euclidean_length() if deg: return math.degrees(math.acos(num / den)) else: @@ -267,8 +268,7 @@ class Matrix: def __init__(self, matrix: list[list[float]], w: int, h: int) -> None: """ - simple constructor for initializing - the matrix with components. + simple constructor for initializing the matrix with components. """ self.__matrix = matrix self.__width = w @@ -276,8 +276,7 @@ class Matrix: def __str__(self) -> str: """ - returns a string representation of this - matrix. + returns a string representation of this matrix. """ ans = "" for i in range(self.__height): @@ -291,7 +290,7 @@ class Matrix: def __add__(self, other: Matrix) -> Matrix: """ - implements the matrix-addition. + implements matrix addition. """ if self.__width == other.width() and self.__height == other.height(): matrix = [] @@ -307,7 +306,7 @@ class Matrix: def __sub__(self, other: Matrix) -> Matrix: """ - implements the matrix-subtraction. + implements matrix subtraction. """ if self.__width == other.width() and self.__height == other.height(): matrix = [] diff --git a/linear_algebra/src/test_linear_algebra.py b/linear_algebra/src/test_linear_algebra.py index de7041a17..724ceef25 100644 --- a/linear_algebra/src/test_linear_algebra.py +++ b/linear_algebra/src/test_linear_algebra.py @@ -42,12 +42,18 @@ class Test(unittest.TestCase): x = Vector([1, 2, 3, 4]) self.assertEqual(len(x), 4) - def test_euclidLength(self) -> None: + def test_euclidean_length(self) -> None: """ test for method euclidean_length() """ x = Vector([1, 2]) + y = Vector([1, 2, 3, 4, 5]) + z = Vector([0, 0, 0, 0, 0, 0, 0, 0, 0, 0]) + w = Vector([1, -1, 1, -1, 2, -3, 4, -5]) self.assertAlmostEqual(x.euclidean_length(), 2.236, 3) + self.assertAlmostEqual(y.euclidean_length(), 7.416, 3) + self.assertEqual(z.euclidean_length(), 0) + self.assertAlmostEqual(w.euclidean_length(), 7.616, 3) def test_add(self) -> None: """