From efca208739aaf32240265c155a7acf5594e4f8c3 Mon Sep 17 00:00:00 2001 From: Aman kanojiya <50018596+AMANKANOJIYA@users.noreply.github.com> Date: Mon, 11 Oct 2021 08:24:24 +0530 Subject: [PATCH 1/6] Magnitude and Angle Core function to find Magnitude and Angle of two Given Vector --- linear_algebra/src/lib.py | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/linear_algebra/src/lib.py b/linear_algebra/src/lib.py index 74aeb9137666..1c09dc275ddc 100644 --- a/linear_algebra/src/lib.py +++ b/linear_algebra/src/lib.py @@ -147,7 +147,27 @@ def __mul__(self, other: float | Vector) -> float | Vector: return summe else: # error case raise Exception("invalid operand!") - + + def magnitude(self) -> float: + ''' + Magnitude of a Vector + ''' + return sum([i**2 for i in self.__components])**(1/2) + + def angle(self, other: Vector, deg: bool) -> float: + """ + find angle between two Vector (self, Vector) + """ + try: + num = self * other + den = (self.magnitude())*(n.magnitude()) + if deg: + return math.degrees(math.acos(num/den)) + else: + return math.acos(num/den) + except Exception as e: + raise e + def copy(self) -> Vector: """ copies this vector and returns it. From 2fc782eca355f438c8b26bc567b8702ea699fd03 Mon Sep 17 00:00:00 2001 From: Aman kanojiya <50018596+AMANKANOJIYA@users.noreply.github.com> Date: Mon, 11 Oct 2021 16:26:12 +0530 Subject: [PATCH 2/6] Magnitude and Angle with Doctest added Doctest to the functions --- linear_algebra/src/lib.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/linear_algebra/src/lib.py b/linear_algebra/src/lib.py index 1c09dc275ddc..3b54a48fa13e 100644 --- a/linear_algebra/src/lib.py +++ b/linear_algebra/src/lib.py @@ -151,22 +151,40 @@ def __mul__(self, other: float | Vector) -> float | Vector: def magnitude(self) -> float: ''' Magnitude of a Vector + + >>> x = Vector([2, 3, 4]) + >>> x.magnitude() + 5.385164807134504 + ''' return sum([i**2 for i in self.__components])**(1/2) - def angle(self, other: Vector, deg: bool) -> float: + def angle(self, other: Vector, deg: bool = False) -> float: """ find angle between two Vector (self, Vector) + + >>> y = Vector([3, 4, -1]) + >>> z = Vector([2, -1, 1]) + >>> y.angle(z) + 1.4906464636572374 + >>> y.angle(z, deg = True) + 85.40775111366095 + >>> z = Vector([2, -1]) + >>> y.angle(z) + Traceback (most recent call last): + ... + Exception: invalid operand! """ try: num = self * other - den = (self.magnitude())*(n.magnitude()) + den = (self.magnitude())*(other.magnitude()) if deg: return math.degrees(math.acos(num/den)) else: return math.acos(num/den) except Exception as e: raise e + def copy(self) -> Vector: """ From 0350a9d86390bac301cc0b499b1ccd224e430d22 Mon Sep 17 00:00:00 2001 From: Aman kanojiya <50018596+AMANKANOJIYA@users.noreply.github.com> Date: Mon, 11 Oct 2021 17:59:32 +0530 Subject: [PATCH 3/6] Update linear_algebra/src/lib.py Co-authored-by: Christian Clauss --- linear_algebra/src/lib.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/linear_algebra/src/lib.py b/linear_algebra/src/lib.py index 3b54a48fa13e..6afc2d895c6d 100644 --- a/linear_algebra/src/lib.py +++ b/linear_algebra/src/lib.py @@ -163,9 +163,7 @@ def angle(self, other: Vector, deg: bool = False) -> float: """ find angle between two Vector (self, Vector) - >>> y = Vector([3, 4, -1]) - >>> z = Vector([2, -1, 1]) - >>> y.angle(z) + >>> Vector([3, 4, -1]).angle(Vector([2, -1, 1])) 1.4906464636572374 >>> y.angle(z, deg = True) 85.40775111366095 From cde040f29ba3dd22cb1f4b57fc2c84278543cafa Mon Sep 17 00:00:00 2001 From: Aman kanojiya <50018596+AMANKANOJIYA@users.noreply.github.com> Date: Mon, 11 Oct 2021 17:59:58 +0530 Subject: [PATCH 4/6] Update linear_algebra/src/lib.py Co-authored-by: Christian Clauss --- linear_algebra/src/lib.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/linear_algebra/src/lib.py b/linear_algebra/src/lib.py index 6afc2d895c6d..f4807399948d 100644 --- a/linear_algebra/src/lib.py +++ b/linear_algebra/src/lib.py @@ -175,7 +175,7 @@ def angle(self, other: Vector, deg: bool = False) -> float: """ try: num = self * other - den = (self.magnitude())*(other.magnitude()) + den = self.magnitude() * other.magnitude() if deg: return math.degrees(math.acos(num/den)) else: From 02fc704c38bd83e8b45eead0b4b1eafc149052c3 Mon Sep 17 00:00:00 2001 From: Aman kanojiya <50018596+AMANKANOJIYA@users.noreply.github.com> Date: Tue, 12 Oct 2021 14:00:14 +0530 Subject: [PATCH 5/6] Changes done and Magnitude and Angle Issues --- linear_algebra/src/lib.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/linear_algebra/src/lib.py b/linear_algebra/src/lib.py index f4807399948d..29209c6ad233 100644 --- a/linear_algebra/src/lib.py +++ b/linear_algebra/src/lib.py @@ -152,8 +152,7 @@ def magnitude(self) -> float: ''' Magnitude of a Vector - >>> x = Vector([2, 3, 4]) - >>> x.magnitude() + >>> Vector([2, 3, 4]).magnitude() 5.385164807134504 ''' @@ -165,12 +164,11 @@ def angle(self, other: Vector, deg: bool = False) -> float: >>> Vector([3, 4, -1]).angle(Vector([2, -1, 1])) 1.4906464636572374 - >>> y.angle(z, deg = True) + >>> Vector([3, 4, -1]).angle(Vector([2, -1, 1]), deg = True) 85.40775111366095 - >>> z = Vector([2, -1]) - >>> y.angle(z) + >>> Vector([3, 4, -1]).angle(Vector([2, -1])) Traceback (most recent call last): - ... + ... Exception: invalid operand! """ try: @@ -180,8 +178,8 @@ def angle(self, other: Vector, deg: bool = False) -> float: return math.degrees(math.acos(num/den)) else: return math.acos(num/den) - except Exception as e: - raise e + except: + raise def copy(self) -> Vector: From ef01d092d8e4db3d0bc574688c398c91dff863bb Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Tue, 12 Oct 2021 11:46:48 +0200 Subject: [PATCH 6/6] black --- linear_algebra/src/lib.py | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/linear_algebra/src/lib.py b/linear_algebra/src/lib.py index 29209c6ad233..6a18df5e15c3 100644 --- a/linear_algebra/src/lib.py +++ b/linear_algebra/src/lib.py @@ -147,16 +147,16 @@ def __mul__(self, other: float | Vector) -> float | Vector: return summe else: # error case raise Exception("invalid operand!") - + def magnitude(self) -> float: - ''' + """ Magnitude of a Vector >>> Vector([2, 3, 4]).magnitude() 5.385164807134504 - ''' - return sum([i**2 for i in self.__components])**(1/2) + """ + return sum([i ** 2 for i in self.__components]) ** (1 / 2) def angle(self, other: Vector, deg: bool = False) -> float: """ @@ -164,24 +164,20 @@ def angle(self, other: Vector, deg: bool = False) -> float: >>> Vector([3, 4, -1]).angle(Vector([2, -1, 1])) 1.4906464636572374 - >>> Vector([3, 4, -1]).angle(Vector([2, -1, 1]), deg = True) + >>> Vector([3, 4, -1]).angle(Vector([2, -1, 1]), deg = True) 85.40775111366095 - >>> Vector([3, 4, -1]).angle(Vector([2, -1])) + >>> Vector([3, 4, -1]).angle(Vector([2, -1])) Traceback (most recent call last): ... Exception: invalid operand! """ - try: - num = self * other - den = self.magnitude() * other.magnitude() - if deg: - return math.degrees(math.acos(num/den)) - else: - return math.acos(num/den) - except: - raise + num = self * other + den = self.magnitude() * other.magnitude() + if deg: + return math.degrees(math.acos(num / den)) + else: + return math.acos(num / den) - def copy(self) -> Vector: """ copies this vector and returns it.