기본 콘텐츠로 건너뛰기

라벨이 diff()인 게시물 표시

[matplotlib]quiver()함수

[시계열] 시계열 데이터의 차분(difference)과 역차분(inverse difference)

시계열 데이터의 차분(difference)과 역차분(inverse difference) 시계열 모형은 데이터의 정상성이 요구됩니다. 정상성을 확보하기 위해 데이터의 차분(difference)이 적용됩니다. 차분된 데이터는 현재값에서 이전 값의 차를 사용이므로 원 데이터가 가질 수 있는 추세가 제거될 수 있습니다. 즉, 차분된 데이터의 경우 연속된 데이터들 사이의 자기상관이 최소화되므로 평균이나 분산등의 일정성이 유지되는 정상성(stationary)가 확보될 수 있습니다. 예를 들어 다음 샘플에 대해 차분을 실행합니다. np.random.seed(3) x=pd.Series(np.random.randint(1, 11, 4)) x 0 9 1 10 2 4 3 9 dtype: int32 위 데이터 x의 차분은 다음과 같습니다. pandas객체.diff() 함수를 사용할 수 있습니다. $$\begin{align} 10-9=1 \quad& x_1-x_0=x^1_1\\ 4-10=-6\quad& x_2-x_1=x^1_2\\9-4=6\quad & x_3 - x_2 = x^1_3\\x_i :\quad&\text{원 데이터}\\ x^1_i :\quad&\text{1차 차분된 데이터}\end{align}$$ x1=x.diff() x1 0 NaN 1 1.0 2 -6.0 3 5.0 dtype: float64 위 과정은 1번 차분한 것으로 1차 차분이라합니다. 위 x1을 다시 차분하면 2번 차분, 즉 2차 차분이 됩니다. $$\begin{align} -6 - 1=-7 \quad& x^1_2-x^1_1=x^2_2\\ 5-(-6) = 11\quad& x^1_3-x^1_2=x^2_3\\\ x^2_i :\quad&\text{2차 차분된 데이터}\end{align}$$ x2=x.diff().diff() x2 0 NaN 1 NaN 2 -7.0 3 11....

[Math] 미분 문제

미분의 응용 문제 예) 자동차 A, B가 각각 서와 동쪽에 500m 의 간격을 두고 있습니다. A는 B를 향해 35m/h의 속도로 이동하고 B는 남쪽으로 50m/h의 속도로 이동합니다. 3시간 후에 두차 사이의 거리의 변화율? 증가 또는 감소? 위 문제는 그림의 z의 변화율을 계산하는 것입니다. 위의 x, y, z은 t에 대한 함수로 인식할 수 있습니다. \begin{align}x^2(t)+y^2(t)&=z^2(t)\\ \frac{d(x(t)}{dt}=-35&\quad \frac{d(y(t))}{dt}=50\end{align} 3시간 후 x=500-35⋅3=395, y=50*3=150 from sympy import * t=symbols('t') x=Function('x')(t);x x(t) y=Function('y')(t);y y(t) z=Function('z')(t);z z(t) eq=x**2+y**2-z**2;eq $x^{2}{\left(t \right)} + y^{2}{\left(t \right)} - z^{2}{\left(t \right)}$ deq=diff(eq, t);deq $2 x{\left(t \right)} \frac{d}{d t} x{\left(t \right)} + 2 y{\left(t \right)} \frac{d}{d t} y{\left(t \right)} - 2 z{\left(t \right)} \frac{d}{d t} z{\left(t \right)}$ dz=solve(deq, diff(z, t)); dz (x(t)*Derivative(x(t), t) + y(t)*Derivative(y(t), t))/z(t) x1=500-35*3 y1=50*3 z1=(x1**2+y1**2)**0.5;z1 422.5221887664599 dz[0].subs({x:x1, diff(x, t):-35, y:y1, diff(y, t):50...

[matplotlib] 접선식 생성과 접선 그리기

접선 그리기 함수의 특정한 점에서 접선의 기울기는 그 지점에서의 미분값과 같습니다. a=symbols("a") f=(a-1)**2 df=f.diff('a') df 2a - 2 함수 f위의 점(3, f(3))에서의 접선 식은 다음과 같이 계산할 수 있습니다. slope=df.subs(a, 3); slope 4 $$\begin{align} y&=\text{slope}\times x+b \\ b&= y - \text{slope}\times x\\&=f(3)-f^\prime(3)\times 3\end{align}$$ b=f.subs(a, 3)-slope*3 eq=slope*a+b; eq 4a−8 위에서 생성한 두 식 f와 eq(접선식)에 대한 그래프를 작성합니다. 그래프 작성에 필요한 함수 plot()과 scatter() 그리고 축 설정은 조각함수 작성 에서 적용한 것과 같습니다. x=np.linspace(-1, 5, 100) fy=[f.subs(a, i) for i in x] eqy=[eq.subs(a, i) for i in x] fig, ax=plt.subplots(figsize=(4, 3)) ax.plot(x, fy, color="g", label=r"f(x)=(x-1)^2") ax.plot(x, eqy, color="b", label="g(x)=4x-8") ax.scatter(3, f.subs(a, 3), s=50, c="b") ax.spines['left'].set_position(("data", 0)) ax.spines['bottom'].set_position(("data", 0)) ax.spines['right'].set_visible(False) ax.spines['top'].set_visible(Fa...

Sympy 객체를 사용한 미분과 적분

내용 개요 sympy에 의한 미분 Sympy에 의한 적분 Sympy 객체를 사용한 미분과 적분 개요 모듈 듈 Sympy는 기호(symbol)로 이루어진 수학적 객체의 계산을 다룹니다. 즉, 일반적으로 사용하는 x, y 등과 같은 문자를 수학적 기호로 인식하여 수학식을 표현하는 수단을 제공합니다. 또한 sympy에서 ∞는 알파벳 소문자 o를 두번 연이어 표시하는 것으로 대체합니다. oo = ∞ 다음은 파이썬 코드와 모듈 math, sympy를 사용하여 제곱근을 계산한 결과를 나타낸 것입니다. import math from sympy import * 9**0.5 3.0 pow(9, 0.5) #파이썬 내장함수 3.0 math.sqrt(9) #모듈 math함수 3.0 sqrt(9) #sympy 함수 3 위 결과는 모두 실수로 반환됩니다. 그러나 8의 제곱근과 같이 근사값(무리수)이 반환되는 경우는 그 결과의 표현이 달라집니다. sympy를 사용할 경우 일반적으로 수학적으로 표현하는 방식으로 결과를 반환합니다. round(8**0.5,3) 2.828 round(pow(8, 0.5), 3) #파이썬 내장함수 2.828 round(math.sqrt(8), 3) #모듈 math함수 2.828 sqrt(8) #sympy 함수 $2 \sqrt{2}$ 위의 sympy에 의한 결과 $\sqrt{2}$는 기호입니다. 즉, sympy 객체는 실제 수와 함께 일정한 기호을 사용하기 때문에 다양한 수학적 표현이 가능합니다. sympy 모듈은 $\sqrt{2}$와 같은 자체적으로 지정된 기호외에 symbols() 함수를 사용하여 사용자가 사용하는 기호를 정의할 수 있습니다. x, y=symbols('x y') type(x) sympy.core.symbol.Symbol expr=x+2*y expr x + 2 y 위에서 expr 객체는 기호 x, y를 지닌 객체입니다....