Используя метод Рунге-Кутта получить решение уравнения y' = F(x,y). Наиболее употребительным методом Рунге-Кутта решения уравнения первого порядка y' = F(x,y) является метод четвертого порядка, в котором вычисления производятся по формуле: yk+1 = yk +(k1 +2k2 +2k3 +k4 )/6, где k1 = Fk h = F(xk , yk )h Решение: #include <stdafx.h> #include "rungekutta.h" /************************************************************************* Метод Рунге-Кутта четвертого порядка для решения уравнения первого порядка. function RungeKutt(x,x1,y:real;n:integer):real; Алгоритм решает диффур y'=F(x,y) методом Рунге-Кутта 4 порядка. Начальная точка имеет кординаты (x,y), конечная - (x1, RungeKutt(x, x1, y, n)). До конечной точки мы добираемся через n промежуточных с постоянным шагом h=(x1-x)/n *************************************************************************/ double solveoderungekutta(double x, double x1, double y, int n) { double result; int i; double h; double y1; double k1; double k2; double k3; h = (x1-x)/n; y1 = y; i = 1; do { k1 = h*f(x, y); x = x+h/2; y = y1+k1/2; k2 = f(x, y)*h; y = y1+k2/2; k3 = f(x, y)*h; x = x+h/2; y = y1+k3; y = y1+(k1+2*k2+2*k3+f(x, y)*h)/6; y1 = y; i = i+1; } while(i<=n); result = y; return result; } В прикреплении различные реализации на С/C++/C#:
Ключевые слова:
метод Рунге-Кутта, решение дифференциального уравнения первого порядка, дифференциальное уравнение
|
|||||||||||