일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- matrix fo a linear transformation
- NumPy
- matrix trnasformations
- python
- nontrivial solution
- 이진 탐색
- 일차변환
- homogeneous linear system
- 배열 섞기
- 알고리즘 분석의 실례
- 재귀함수
- Big-Oh 예제
- 빅오메가
- nonhomogeneous linear system
- matrix-vector product
- Big Omega
- 빅오 표기법
- itertools
- 빅세타
- one-to-one
- 랜덤 순서 배열
- 코틀린 시작하기
- linear dependence
- Big-Oh notation
- trivial solution
- solutions of matrix equation
- 코틀린 Hello World!
- Big-O 예제
- recursive algorithms
- Big Theta
- Today
- Total
코딩 연습
(파이썬) 미분계수 구하기 본문
(파이썬) 극한값 구하기 를 먼저 보고 오세요
함수 \(f(x)\) 의 \(x=a\) 에서의 순간변화율(=미분계수) \(f'(a)\) 를 구해보자.
정의에 의하면 \[\begin{split} f'(a) &= \lim \limits_{x \to a} \dfrac{f(x)-f(a)}{x-a} \\ &= \lim \limits_{h \to 0} \dfrac{f(a+h)-f(a)}{h} \end{split}\] 와 같다. 우리는 두 번째 극한값을 이용하여 \(f'(a)\) 를 구할 것이다. 먼저 함수 \(f(x)\) 를 이차 다항함수로 정의해 보자. \[f(x)=3x^2-4x+1\] 이제 다음과 같은 과정이 필요하다.
>>> from sympy import symbols, Limit
>>> x, a, h = symbols('x, a, h')
>>> fx = 3 * x ** 2 - 4 * x + 1 # 함수 f(x) 를 정의
>>> fxa = fx.subs({x: a}) # 함수 f(x) 에 x=a 를 대입
>>> fxh = fx.subs({x: a + h}) # 함수 f(x) 에 x=a+h 를 대입
>>> Limit((fxh-fxa)/h, h, 0).doit() # 정의를 이용하여 극한값(=미분계수) 계산
6*a - 4
결과가 깔끔하게 \(6a-4\) 가 되는 것을 볼 수 있다. 오~~~~~
그렇다면 도함수를 구하는 방법은 없을까? 당연히 있다.
>>> from sympy import Derivative
>>> Derivative(fx, x).doit()
6*x - 4
Derivative 클래스를 이용하여 쉽게 도함수 \(f'(x)\) 를 구해낼 수 있다. 그렇다면 이 도함수를 이용하여 미분계수를 구하는 것도 가능할까? 당연히 가능하다.
>>> d = Derivative(fx, x)
>>> d.doit().subs({x:2})
8
먼저 d 라는 Derivative 클래스의 객체를 생성한 후, subs() 매서드를 이용하여 \(x=2\) 에서의 미분계수 \(f'(2)\) 를 구해낼 수 있다.
다항함수 이외의 함수들의 도함수도 구해낼 수 있다.
>>> Derivative(1/x, x).doit()
-1/x**2
>>> Derivative(sin(x), x).doit()
cos(x)
>>> Derivative(a ** x, x).doit()
a**x*log(a)
>>> Derivative(log(x), x).doit()
1/x
보는 바와 같이 분수함수, 삼각함수, 지수함수, 로그함수의 도함수도 척척 구해낸다.
(물론 sin(x) 를 사용하기 위해서는 sympy 에서 sin 클래스를 가져와야 한다.)
충분히 예상 가능 했겠지만, 이계도함수를 구하는 것도 가능하다. 이계도함수를 구하기 위해서는 다음과 같이 Derivative의 마지막 인수로 이계도함수임을 알려주는 2를 전달해야 한다.
>>> Derivative(1/x, x, 2).doit()
2/x**3
>>> Derivative(sin(x), x, 2).doit()
-sin(x)
이제 MS mathematics 따위(이런 표현을 할 자격이 있는지는 모르겠지만)는 필요 없겠는걸?
'Python' 카테고리의 다른 글
(파이썬) 부정적분과 정적분 (0) | 2016.03.15 |
---|---|
(파이썬) 함수의 극댓값, 극솟값, 최댓값, 최솟값 구하기 (0) | 2016.03.15 |
(파이썬) 극한값 구하기 (0) | 2016.03.15 |
(파이썬) 집합 (0) | 2016.03.15 |
(파이썬) 방정식 풀기 (0) | 2016.03.15 |