이번 포스팅은 세 점이 주어졌을 때, 그 세 점으로 이뤄진 삼각형의 넓이를 python에서 구해보겠습니다. 여기서는 NumPy 라이브러리의 행렬식을 구하는 함수를 이용할 것입니다.
1. Numpy linalg.det() 함수를 이용해 행렬식 구하기
linalg.det()는 NumPy 라이브러리에서 제공하는 함수로, 인자로 받은 2차원 배열의 행렬식을 계산하여 반환합니다.
행렬식은 선형대수학에서 배우는 개념 중 하나로, 정방행렬(square matrix)에서 정의됩니다.
행렬 $A$가 $n {\times} n$ 이면, 행렬식 det($A$)는 다음과 같이 여인수(cofactor)를 이용하여 계산합니다.
det($A$) = $a_{11}C_{11}$ + $a_{12}C_{12}$ + ... + $a_{1n}C_{1n}$
더 자세한 내용은 아래 링크를 참조하세요.
NumPy의 np.linalg.det() 함수는 이러한 행렬식을 계산하여 반환합니다. 여기서 주의할 점은 2차원 배열을 인자로 해야 하고 정방행렬이어야 한다는 것입니다. 만약 아닐 경우에는 예외가 발생합니다.
2. 세 점으로 이뤄진 삼각형의 넓이 구하기
세 점으로 이루어진 삼각형의 넓이는 세 점의 좌표로 만들어진 행렬식을 이용해서 구할 수 있습니다.
세 점이 ($x_{1}$, $y_{1}$), ($x_{2}$, $y_{2}$), ($x_{3}$, $y_{3}$)라고 하면, 삼각형의 넓이는 다음과 같습니다.
A = $\begin{vmatrix} \begin{array}{r} x_{1} & y_{1} & 1 \\ x_{2} & y_{2} & 1 \\ x_{3} & y_{3} & 1 \end{array} \end{vmatrix}$
이에 대한 더 자세한 내용은 다음 링크를 참조하세요.
위 식은 다음과 같이 python 코드로 만들 수 있습니다.
import numpy as np
# 세 점의 x, y좌표
x1, y1 = 0, 0
x2, y2 = 2, 0
x3, y3 = 1, 1
# 행렬 A
A = np.array([[x1, y1, 1], [x2, y2, 1], [x3, y3, 1]])
# 삼각형의 넓이 계산
area = abs(np.linalg.det(A)) / 2
print("The area is {}.".format(area))
위 코드는 세 점의 좌표를 각각 $x_{1}$, $y_{1}$, $x_{2}$, $y_{2}$, $x_{3}$, $y_{3}$ 변수에 저장하고, 이를 이용해 행렬 A를 생성합니다. 그리고 np.linalg.det() 함수를 사용하여 $A$의 행렬식을 계산합니다.
그리고 절댓값을 취한 뒤 2로 나누어 삼각형의 넓이를 구합니다.
마지막으로 print() 함수를 사용하여 삼각형의 넓이를 출력합니다.
'Python > python 응용: 수학 및 과학' 카테고리의 다른 글
python append 메소드로 계산 결과 기록하기 (1) | 2023.04.19 |
---|---|
함수의 경사도(gradient) 구하기 (0) | 2023.04.18 |
불리언 배열이 numpy.sum 함수에서 어떻게 더해지나? (0) | 2023.04.13 |
Python NumPy 배열 만들기: arange()와 linspace()의 차이 (0) | 2022.12.28 |
Numpy 복소수 계산하기: 근의 공식 (0) | 2022.12.21 |
댓글