로지스틱 성장 모델
y′=f(y;r)=ry(1−Ky)
을 explicit Euler yn+1=yn+hf(yn;r)로 적분한다. 성장률 r에 대한 민감도 sn=∂yn/∂r는 Euler 식 자체를 r로 미분하면 얻는다.
sn+1=sn+h(∂y∂f(yn;r)sn+∂r∂f(yn;r)),s0=0.
이것은 "이산화한 다음 미분하기"(discretize-then-optimize)의 순방향 모드다. 계산한 sn은 Euler로 만든 yn의 정확한 도함수다.
함수 euler_with_sensitivity(r, K, y0, h, steps)를 완성해 (y, s)를 반환한다. 둘 다 shape (steps + 1,)이고 첫 원소는 초기값(y0, 0)이다.
테스트는 다음을 확인한다.
- sn이 같은 Euler 시뮬레이션의 중심차분 (yn(r+δ)−yn(r−δ))/2δ와 맞는다.
- r=0이면 y는 변하지 않고 sn=nhy0(1−y0/K)다.
- 평형점 y0=K에서 출발하면 s는 계속 0이다.
힌트: ∂f/∂y=r(1−2y/K), ∂f/∂r=y(1−y/K). sn+1을 계산할 때는 갱신하기 전의 yn을 쓴다.