2016년 12월 9일 금요일

[Python] 수학 import math


예제코드
 1)
print(10 + 5)
print(10 - 5)
print(10 * 5)
print(10 / 5)

2)
import math
print(math.ceil(2.2)) //3
print(math.floor(2.7)) //2
print(math.pow(2,10)) //1024
print(math.pi) //3.141592...



대부분의 수학관련 함수들이 math모듈에 존재하지만자주사용되는 아래의 함수에 대해서는 특별한 모듈 임포트없이 사용할수 있도록 내장함수로 제공한다.
-. 내장형으로 제공되는 수학관련 함수들
>sum(iterable[, start])
순회가능한(iterable)객체의 총 합계를 반환총 합계의 시작값(start)이 주어지면 그 값부터 누적되며그렇지 않은 경우 0이 기본값이 된다.
>>> sum([1,2,3]) #1 + 2 + 3 = 6
6
>>> sum([1,2,3],4) #4 + 1 + 2 + 3 = 10
10

>max(iterable)
순회가능한 객체의 최댓값을 반환
>>> max([1,2,3])
3

>min(iterable)
순회가능한 객체의 최솟값을 반환
>>> min([1,2,3])
1

>abx(x)
인자 x의 절대값을 반환
>>> abs(-11)
11

>pow(x, y[, z])
x y제곱값을 반환세번째 인자가 입력된 경우, x y제곱한 결과를 z로 나눈 나머지(modulo연산)를 반환
>>> pow(2,10) #210제곱
1024
>>> pow(2,10,100) #2 10제곱을 100으로 나눈 나머지
24

>round(x[, n])
인자 x의 반올림결과를 반환자릿수가 지정된 경우 반올림 결과를 지정된 자리까지 나타내며그렇지 않은경우 기본값은 0이다.
>>> round(3.141592) #소수점이후부터 반올림
3
>>> round(3.141592,2) #소수점 2자리 이후부터 반올림
3.14
>>> round(2341.1234,-1) #소수점 1자리 이전부터 반올림
2340.0

>divmod(a, b)
'a/b'의 몫과 나머지를 튜플형태로 반환
>>> divmod(10,7)
(1, 3)
>>> divmod(5.3,2.1)
(2.0, 1.0999999999999996)

>> math 모듈 <<
수학관련 함수들이 들어있는 모듈이며
모듈내의 함수는"import math"한후사용가능

-. 상수
math모듈에서 상수는 아래와 같이 정의되어 있다.
>원주율(π)
>>> math.pi
3.141592653589793

>자연상수(e) 
>>> math.e
2.718281828459045

-. 수치 연산
수학모듈에 정의되어있는 수치 연산 관련 함수는 아래와 같다.
>math.ceil(x)
'N >= x'를 만족하는 가장 작은 정수 N을 반환(올림 연산)
>>> math.ceil(3.14)
4

>math.floor(x)
'N <= x'를 만족하는 가장 큰 정수 N을 반환(내림 연산)
>>> math.floor(3.14)
3

>math.trunc(x)
x의 정수부분만을 반환(버림 연산)
>>> math.trunc(3.14)
3

>math.copysign(x,y)
y의 부호만 x에 복사하여 반환
>>> math.copysign(6.5,-0.0) #부호만 복사
-6.5

>math.fabs(x)
x의 절대값을 반환
>>> math.fabs(-6.5) #절대값연산
6.5

>math.factorial(x)
x의 계승(factorial,x!)값을 반환
>>> math.factorial(3.0) #factorifal연산(3!)
6

>math.fmod(x,y)
c라이브러리에 있는 fmod()함수를 호출,
파이썬 연산자중 '%'(나머지연산)과 유사하다하지만 연산결과가 항상 동일한것은 아니다. math.fmod(x,y)연산은 항상 피제수 x와 몫으 부호가 동일하지만 '%'연산은 몫이 피제수와 항상 일치하지 않기 때문이다또한 부동소수점 연사ㄴ의 정확도차이도 존재하기 때문에,
일반적으로 정수연산에는 '%'연산을
부동소수점연산에는 math.fmod()연산을 사용하는것을 권장한다.
>>> math.fmod(5.5, 3) #피제수와 제수의 부호가 같은 경우
2.5
>>> 5.5 % 3
2.5
>>> math.fmod(-5.5, 3) #피제수와 제수의 부호가 다른 경우
-2.5
>>> -5.5 % 3
0.5

>math.fsum(iterable)
입력받은 값의 합계를 반환
>>> math.fsum([1,2,3])
6.0

>math.modf(x)
입력받은 x의 순수 소수부분과 정수부분으로 분리하여 튜플로 반환
분리된 두 부분 모두에 부호가 할당됨
>>> math.modf(3.14)
(0.14000000000000012, 3.0)
>>> math.modf(-6.5)
(-0.5, -6.0)

-. 지수로그 연산
수학모듈에서 지원하는 일반적인 지수 연산과 로그연산에 관련된 함수는 아래와 같다.
>math.pow(x,y)
x y제곱결과를 반환
>>> math.pow(2,10)
1024.0
>>> pow(2,10)
1024
>>> 2**10
1024

>math.sqrt(x)
x의 제곱근(square root)한 결과를 반환
>>> math.sqrt(2) #2연산
1.4142135623730951
>>> math.sqrt(9) #9연산
3.0

>math.exp(x)
자연상수(e) x제곱결과를 반환
>>> math.exp(2)
7.38905609893065

>math.log(x[, base])
밑을 base로 하는 log X의 결과를 반환
만약 base가 입력되지 않으면자연로그(ln X)로 연산
>>> math.log(math.e) #'ln e'연산
1.0

-. 삼각함수 연산
각도를 표기하는 기법으로 60분법과 라디안(radian)이 있다이에 대한 상호 변환함수는 아래와 같다.
>math.degrees(x)
라디안으로 표현된 각도를 60분법으로 변환

>math.radians(x)
60분법으로 표현된 각도를 라디안으로 변환

아래는 파이썬에서 주로 사용되는 삼각함수이다.
>math.sin(x)
>math.asin(x)
>math.cosh(x)
>math.asinh(x)
>math.cos(x)
>math.atan(x)
>math.sinh(x)
>math.atanh(x)
>math.tan(x)
>math.acos(x)
>math.tanh(x)
>math.acosh(x)

삼각함수의 사용방법에 대한 예
>>> r = math.radians(30) #30도를 라디안으로 변환
>>> math.sin(r) #sin(30)연산
0.49999999999999994
>>> r = math.radians(180) #180도를 라디안으로 변환
>>> v = math.cos(r)
>>> v
-1.0
>>> r == math.acos(v) #cos() acos()으로 수행한 값을 상호비교
True
>>> math.degrees(r) #π 라디안을 60분법으로 변환
180.0

※ 위의 예제에서 sin(30)가 정확히 0.5가 아닌 0.49999999999999994로 출력되는것은 컴퓨터에서 부동소소줌을 표현하는 방식때문에 발생하는 문제이다이에 대해서는 이후에 나오는 십진법모듈에서 자세히 알아보도록 하겠다.


출처 : http://blog.naver.com/PostList.nhn?blogId=dudwo567890 <- 분수, 십진수 등 다양한 파이썬 예제블로그

댓글 없음:

댓글 쓰기