Gaffer sur les Jeux a un excellent article sur l'utilisation de RK4 intégration pour le meilleur de la physique du jeu. La mise en œuvre est simple, mais les mathématiques derrière il me confond. Je comprends dérivés et intégrales sur un plan conceptuel, mais je n'ai pas manipulé des équations dans un long moment.
Voici le poids de Gaffer mise en œuvre:
void integrate(State &state, float t, float dt)
{
Derivative a = evaluate(state, t, 0.0f, Derivative());
Derivative b = evaluate(state, t+dt*0.5f, dt*0.5f, a);
Derivative c = evaluate(state, t+dt*0.5f, dt*0.5f, b);
Derivative d = evaluate(state, t+dt, dt, c);
const float dxdt = 1.0f/6.0f * (a.dx + 2.0f*(b.dx + c.dx) + d.dx);
const float dvdt = 1.0f/6.0f * (a.dv + 2.0f*(b.dv + c.dv) + d.dv)
state.x = state.x + dxdt * dt;
state.v = state.v + dvdt * dt;
}
Quelqu'un peut-il expliquer en termes simples comment RK4 œuvres? Plus précisément, pourquoi sommes-nous en calculant la moyenne des dérivés en 0.0f
, 0.5f
, 0.5f
, et 1.0f?
Comment la moyenne de dérivés jusqu'à la 4ème ordre différent de faire une simple intégration d'euler avec un petit timestep?
Après la lecture de la accepté de répondre ci-dessous, et plusieurs autres articles, j'ai une compréhension sur la façon dont RK4 œuvres. Pour répondre à mes propres questions:
Quelqu'un peut-il expliquer en termes simples comment RK4 œuvres?
RK4 tire parti du fait que nous pouvons obtenir une bien meilleure approximation d'une fonction si nous utilisons ses d'ordre supérieur dérivés plutôt que de juste la première ou de la seconde dérivée. C'est pourquoi la série de Taylor converge beaucoup plus rapidement que d'Euler des approximations. (jetez un oeil à la animation sur le côté droit de l' page)
Plus précisément, pourquoi sommes-nous en calculant la moyenne des dérivés en 0.0f
, 0.5f
, 0.5f
, et 1.0f
?
Le Runge-Kutta méthode est une approximation d'une fonction qui des échantillons de produits dérivés de plusieurs points dans un timestep, contrairement à la Taylor la série dont seuls les échantillons de produits dérivés d'un point unique. Après l'échantillonnage ces instruments dérivés, nous avons besoin de savoir comment peser chaque échantillon pour obtenir l' approximation la plus proche possible. Un moyen facile de le faire est de choisir les constantes qui coïncident avec les Les séries de Taylor, qui est de savoir comment le les constantes de Runge-Kutta d'équation sont déterminés.
Cet article fait plus de clarté moi. Remarquez comment
(15)
est le Taylor l'extension de la série tout en(17)
est le De Runge-Kutta de dérivation.
Comment est calcul de la moyenne des dérivés jusqu'à la 4ème ordre différent de faire une simple intégration d'euler avec un petit timestep?
Mathématiquement, il converge beaucoup plus rapide que de faire beaucoup d'Euler des approximations. Bien sûr, avec assez de Euler approximations, nous pouvons obtenir l'égalité des la précision de RK4, mais le calcul de l' puissance nécessaire n'a pas à justifier que l' Euler.