Python/파이썬 기초

파이썬에서 제곱, 제곱근을 나타내는 방법 정리(**, math, numpy 이용)

jimmy_AI 2022. 3. 24. 20:14
반응형

파이썬 제곱과 제곱근 구하기 예제

파이썬에서 m의 n제곱 형태를 구할 수 있는 방법들을

파이썬 기본 연산자인 **을 이용하는 경우와 math, numpy 라이브러리를 사용한 경우로 나누어

총망라해보는 시간을 가져보도록 하겠습니다.

 

 

제곱, 제곱근 표현 방법 1 : 기본 연산자 **

파이썬에서 m의 n제곱을 표현하는 가장 간단한 방법은

기본으로 제공되는 산술 연산자 중 하나인 **를 사용하여 m ** n 형태로 작성하는 것입니다.

 

n에 자연수가 포함된 가장 기본적인 예시는 아래와 같습니다.

4 ** 2 # 16
3 ** 5 # 243
1.5 ** 3 # 3.375
0.1 ** 4 # 0.00010000000000000002(부동 소수점 오차)

 

n 자리에 0.5 혹은 1/2을 넣으면 제곱근을 나타낼 수 있으며,

1/3, 1/4 등으로 세제곱근, 네제곱근 등 복잡한 경우도 표현이 가능합니다.

9 ** 0.5 # 3.0
8 ** (1/3) # 2.0
4 ** 1.5 # 8.0
1.5 ** 2.3 # 2.5410306047779248

 

n에 0 또는 음수를 넣어 1 혹은 역수를 반환하는 경우의 연산도 지원합니다.

4 ** 0 # 1
5 ** -1 # 0.2
10 ** -2 # 0.01
2.5 ** -0.4 # 0.6931448431551464

 

가장 특수한 경우로, 연산 결과가 허수를 포함한 복소수로 등장하는 때에도

복소수 형태의 결과를 반환하며 연산이 가능합니다.

(-1) ** 0.5 # (6.123233995736766e-17+1j)
(-2.5) ** 1.7 # (2.790722796716866-3.841100402447846j)
반응형

제곱, 제곱근 표현 방법 2 : math.pow, math.sqrt

math 라이브러리의 pow 함수를 이용하여 pow(m, n)의 형태로 m ** n을 구할 수 있습니다.

 

**를 이용한 방식과의 차이는 math.pow를 사용하면

정수끼리의 연산이더라도 결과가 항상 실수 형태로 반환된다는 점과

실수가 아닌 복소수의 경우는 지원하지 않는다는 점입니다. 

import math

math.pow(2, 5) # 32.0
math.pow(2, 0.5) # 1.4142135623730951
math.pow(6, -1) # 0.16666666666666666
math.pow(1.5, 2.3) # 2.5410306047779248
math.pow(4, 0) # 1.0

math.pow(-1, 0.5) # ValueError: math domain error

 

또한, 제곱근도 sqrt(n)의 형태로 n의 제곱근을 곧바로 구하는 것이 가능합니다.

역시 결과는 항상 실수 자료형이며, 음수에 대한 제곱근은 미지원합니다.

math.sqrt(4) # 2.0
math.sqrt(1.44) # 1.2
math.sqrt(0.5) # 0.7071067811865476
math.sqrt(0) # 0.0

math.sqrt(-1) # ValueError: math domain error

 

 

제곱, 제곱근 표현 방법 3 : np.power, np.sqrt

조금 더 심화된 경우의 예시로 넘파이 라이브러리의 메소드를 적용하여

제곱 및 제곱근을 구하는 것도 가능합니다.

 

numpy의 power 함수에서도 power(m, n)의 형태로 m의 n 제곱 연산을 지원하며,

이 경우에는 배열 단위에 통째로 제곱 연산을 수행하는 것도 가능해집니다.

 

np.power 함수의 사용법과 예제는 아래 링크의 이전 포스팅에서 다루었으니

여기서는 추가 설명을 생략하도록 하겠습니다.

 

[Numpy] 파이썬 제곱 함수 np.power 사용법 정리

파이썬 넘파이 power 함수 사용 방법 예제 모음 안녕하세요. 이번 글에서는 제곱 연산을 수행하는 파이썬 넘파이의 np.power 함수의 기능을 케이스별 예제를 중심으로 자세하게 설명해보도록 하겠

jimmy-ai.tistory.com

 

넘파이 라이브러리에서 제곱근도 np.sqrt 함수를 통해서

math.sqrt와 비슷한 방식으로 구할 수 있습니다.

 

다만, np.sqrt와 math.sqrt의 차이는 넘파이의 sqrt는 배열 단위 통째 연산이 가능하고,

dtype = 'complex' 조건을 설정하면 복소수 결과를 받을 수 있다는 점입니다.

 

기본적으로는 음수에 대한 제곱근은 np.nan을 반환합니다.

import numpy as np

np.sqrt(4) # 2.0
np.sqrt(1.96) # 1.4
np.sqrt([1, 3, 5, 7, 9]) # array([1. , 1.73205081, 2.23606798, 2.64575131, 3. ])
np.sqrt([[0.64, 1.44],
         [3.5, 0.04]])
'''
array([[0.8       , 1.2       ],
       [1.87082869, 0.2       ]])'''

np.sqrt(-1) # nan
np.sqrt(-1, dtype = 'complex') # 1j