어떻게 Pendulum Teaches 당신 차별 동등한 것
ODE 해결자를 이해하는 수학 정도가 필요하지 않습니다. 당신은 진자, 스크린 및 20 분이 필요합니다. Euler, RK4 및 적응 방법이 실제로 작동하는 방법 - 실제 코드.
당신이 볼 수있는 무엇을 시작
문자열에서 무게를 걸으십시오. 1개의 측에 잡아당기기. 오시는 길 그것은 그네.
당신은 단지 다른 방정식에 의해 지배 된 시스템을 만들었습니다 :
₢ 킹 dω/dt = -(g/L) · sin(θ)
θ는 각입니다. ω는 각각각입니다. g는 중력 (9.81 m/s2)입니다. L은 문자열 길이입니다. 이 두 줄은 다음과 같습니다. 각 속도와 동등한 속도의 변화, 그리고 중력, 길이 및 현재 각도에 따라 비율의 각 변화.
문제: 우리는 이 방정식을 정확하게 해결할 수 없습니다. sin(θ)는 비선형을 만듭니다. 언제든지 θ를주는 공식이 없습니다. 그래서 우리는 대략 — 우리는 작은 증가에서 앞으로 단계, 현재 하나에서 다음 국가를 계산합니다.
ODE Solr가 무엇인지. 그리고 그것을 할 수있는 더 나은 방법이 있습니다.
Euler 방법 : 분명히하지만 결함
가장 간단한 아이디어 : 나는 국가를 알고, 나는 변화의 속도를 알고, 나는 나중에 작은 시간을 추정 할 수 있습니다.
next_angle = current_angle + velocity × dt
next_velocity = current_velocity + acceleration × dt
이것은 유러의 방법입니다. fog를 통해 걷는 것과 같습니다. 한 걸음 앞서 볼 수 있으므로 그 단계를 거쳐 다시 볼 수 있습니다. 코드:
function euler(f, t, y, dt) {
const dy = f(t, y);
return [
y[0] + dt * dy[0],
y[1] + dt * dy[1]
];
}
문제: Euler의 방법은 첫번째 순서 정확합니다. 즉, 단계 크기를 할 경우 오류가 발생합니다. pendulum의 경우,이 오류 축적 - 가장 이른 pendulum는 천천히 에너지와 스윙 더 넓은 및 더 넓은. 몇 분 후에, 그것은 가득 차있는 원형에서 회전입니다. 진짜 pendulum는 이것을 하지 않습니다.
RK4: 솜씨
1901 년 Carl Runge와 Martin Kutta가 더 나은 방법을 발표했습니다. 단계 당 한 번 변경률을보고 대신 4 번을보십시오 :
- 단계의 시작에 경사를 측정 → k1
- K1를 사용하는 단계 반도, 거기 경사를 측정 → k2
- K2를 사용하는 단계 반도, 다시 측정 → k3
- K3를 사용하는 끝에 단계, 측정 한 더 많은 시간 → k4
- 결합: 무게를 다는 평균 (k1 + 2k2 + 2k3 + k4)/6
네 번째 순서 정확하다. 단계 크기와 오류가 16의 요인에 의해 떨어지게됩니다. 수천 개의 스윙을 올바르게 보존합니다.
function rk4(f, t, y, dt) {
const k1 = f(t, y);
const k2 = f(t + dt/2, [y[0] + dt/2 * k1[0], y[1] + dt/2 * k1[1]]);
const k3 = f(t + dt/2, [y[0] + dt/2 * k2[0], y[1] + dt/2 * k2[1]]);
const k4 = f(t + dt, [y[0] + dt * k3[0], y[1] + dt * k3[1]]);
return [
y[0] + (dt/6) * (k1[0] + 2*k2[0] + 2*k3[0] + k4[0]),
y[1] + (dt/6) * (k1[1] + 2*k2[1] + 2*k3[1] + k4[1])
];
}
이 방법은 PinePaper pendulum, Spring-mass 및 Van der Pol 시뮬레이션에 사용됩니다. 그것은 항공 우주 수송 계산에 사용되는 동일한 방법입니다. 코드의 22 라인.
왜 이 Matters 외부 물리학
Pendulum은 가르침 예제입니다. 하지만 동일한 기술 — 단계 전달, 측정, 정확한 — 어디에서나 적용할 수 있는 변화:
- **Population 성장 **: dx/dt = r·x·(1 - x/K). 운반 능력과 논리적 성장. 동일한 해결자.
- ** 화학적 반응 ** : 현재 농도에 비례 비율로 변화합니다. 동일한 해결자.
- ** 신경망 **: gradient descent는 신중한 ODE입니다. 각 훈련 단계는 손실 표면을 따라 Euler 단계입니다.
- Economics: dy/dt = r·y를 통해 지속적으로 관심 화합물. Exponential 성장은 가장 간단한 ODE입니다.
- **Animation 타이밍 **: easing curves는 Spring-damper ODEs에 해결책입니다. CSS의 "elastic"과 "bounce"가 물리적 시뮬레이션입니다.
수학이 변경되지 않습니다. 도메인은. 그것은 그것이 언어를 만드는 것은 - 같은 문법은 양 계산, 페두럼 스윙, 신경 네트워크 훈련을 설명합니다.
당신의 자신을 시도
PinePaper를 열고 동적 시스템 생성기를 선택합니다. "pendulum"을 선택하십시오. bob 스윙. 이제 매개 변수를 변경:
- 중력 증가 → 더 빠른 스윙 (짧은 기간)
- 막대 길이 증가 → 더 느린 그네 (긴 기간)
- 더 큰 각도에서 시작 → 기간이 증가하는 방법을 볼 (Nonlinear effect that textbook small-angle approximation misses)
모든 변경은 측정입니다. 매개 변수를 변경하고 결과를 관찰합니다. RK4 Solr는 초당 30 프레임을 재조합했으며, 펜던트는 방정식 예측이 무엇인지 보여주었습니다.
그것은 전체적인 점입니다. 수학은 측정입니다. PinePaper는 그것을 눈에 보입니다.
에 대하여이름 *
- 부처, J.C. (2016). Ordinary Differential Equations (3rd ed.)를 위한 일반적인 방법. 위리.
- 기숙사, J.R. & 프린스, P.J. (1980). 임베디드 Runge-Kutta 공식의 가족. * 직업 및 응용 수학 *, 6 (1), 19-26.
- 유러, L. (1768). *Institutionum calculi 완전한 *, Vol. 1. Impensis Academiae Imperialis Scientiarum.
- 헤어, E., Nørsett, S.P., & Wanner, G. (1993). Ordinary 차분한 Equations I: Nonstiff 문제 (2nd ed.). 봄.
- Kutta, W. (1901). Beitrag zur näherungsweisen 통합 Totaler 차별성hungen. Zeitschrift für Mathematik und Physik, 46, 435-453.
- 뉴턴, I. (1687). *Philosophiæ Naturalis Principia Mathematica *. 런던: 조셉 Streater.
- 런지, C. (1895). Über는 numerische Auflösung von 차별성hungen 죽습니다. Mathematische Annalen, 46(2), 167-178.
- Strogatz, S.H. (2015). Nonlinear Dynamics 및 Chaos (2차). Westview 프레스.
PinePaper의 ODE 솔더는 유러, RK4를 커버하고 대략 200의 선에 있는 Dormand-Prince RK45를 적응시킵니다. pinepaper.studio/editor에서 pendulum 시뮬레이션을 무료로 사용해 보세요.
Ready to create?
Start making animated GIFs, videos, and graphics — free, no signup.
Open PinePaper Editor