기본 콘텐츠로 건너뛰기

pandas_ta를 적용한 통계적 인덱스 지표

Sympy를 사용한 극한(limit)

내용

극한

limit() 함수

limit()함수를 사용합니다.
limit(식, 변수, 값) 이 함수의 각 인수는 다음과 같습니다. $$\underset{\text{변수} \to \text{값}}{\quad \text{limit} \quad }\text{식}$$
import numpy as np
import pandas as pd
from sympy import * 


함수 f(x)=sin(x)와 $g(x)=\frac{\sin(x)}{x}$의 0으로의 극한을 계산합니다.

x=symbols('x')
f=sin(x)
limit(f, x, 0)
0
g=sin(x)/x
limit(g, x, 0 )
1
극한이 정해진 수에 접근하는 경우 .subs() 메서드를 적용할 수 있습니다.
ex=x**2/exp(x)
limit(ex, x, 1000)
$\quad\color{navy}{\scriptstyle \frac{1000000}{e^{1000}}}$
ex.subs(x, 1000)
$\quad\color{navy}{\scriptstyle \frac{1000000}{e^{1000}}}$ 그러나 변수가 무한대로 접근하는 경우 .subs()를 적용할 수 없습니다.
limit(ex, x, oo)
0
ex.subs(x, oo)
NaN
sympy의 Limit 클래스는전달되는 식의 계산이 평가되지 않은 상태로 반환됩니다.
Limit((cos(x)-1)/x, x, 0)
$\quad\color{navy}{\scriptstyle \lim_{x \to 0^+}\left(\frac{\cos{\left(x \right)} - 1}{x}\right)}$
위 표현식을 평가하기 위해 .doit() 메서드가 적용됩니다.
Limit((cos(x)-1)/x, x, 0).doit()
0
limit((cos(x)-1)/x, x, 0)
0

좌극한, 우극한

함수가 지정된 값으로 접근하는 방향은 다음 그림과 같이 두 가지입니다.
  • 왼쪽에서 접근하는 경우: 좌극한(left limit)로 '-'를 사용하여 나타냅니다.
  • 오른쪽에서 접근하는 경우: 우극한(right limit)로 '+'를 사용하여 나타냅니다.
limit(1/x, x, 0, '+')
$\quad\color{navy}{\scriptstyle \infty}$
limit(1/x, x, 0, '-')
$\quad\color{navy}{\scriptstyle -\infty}$

data4limit

한 점으로 좌측에서 접근할 경우, 우측에서 접근할 경우 함수 값의 변화를 나타내기 위해 사용자 정의 함수 data4limit()함수를 작성합니다.
def data4limit(point, rng, func, symbol, factor=0.1):
    p=point
    x=[]
    x1=[]
    n=1
    for i in range(rng):
        n*=factor
        x.append(p+n)
        x1.append(p-n)
    y=[float(func.subs(symbol, i)) for i in x]
    y1=[float(func.subs(symbol, i)) for i in x1]
    return (pd.DataFrame([x, y, x1, y1], index=['x+','y+', 'x-', 'y-']).T)


함수 $h(x)=(x+1)^{\frac{1}{x}}$에 대해 x=0으로의 좌극한과 우극한을 계산해 봅니다.

x=symbols('x')
h=(x+1)**(1/x); h
$\quad \color{navy}{(x+1)^{\frac{1}{x}}}$
data4limit(0, 3, h1, h, factor=0.001)
x+ y+ x- y-
0 1.0000e-03 2.7169 -1.0000e-03 2.7196
11.0000e-06 2.7183 -1.0000e-06 2.7183
2 1.0000e-09 2.7183 -1.0000e-09 2.7183

댓글