To view this content you need to be a member
Click MEMBERSHIP to subscribe or LOG IN if you are already our subscriber
Аналитическая зависимость дает точное решение для любых исходных данных, и в этом ее неоспоримое преимущество, по сравнению с аппроксимацией.
Однако, точное аналитическое решение на практике может быть получено лишь для небольшого круга задач. В остальных случаях, расчетчику приходится прибегать к численному, приближенному решению.
Решить уравнение численно означает применить такие математические методы, которые не требуют существенных преобразований исходной системы уравнений.
Существует целый ряд методов численного интегрирования. Каждый метод имеет свои достоинства и недостатки, и ориентирован на определенный класс задач.
Решение систем дифференциальных уравнений методом Рунге-Кутты является одним из самых распространённых численных методов решений в технике.
Содержание лекции:
Скрипт, который упоминается в лекции, Вы найдете на вкладке Script. Если Вы являетесь активным подписчиком, то Вы можете скачать готовый документ (вкладка Download).
Click MEMBERSHIP to subscribe or LOG IN if you are already our subscriber
/// /// Решение дифференциального уравнения второго порядка /// методом Рунге-Кутты 4 порядка точности. /// /// Дифференциальное уравнение: x"+p^2*x=0 /// const k = 250; m = 50; p2 = k / m; /// /// Функция для вычисления производной скорости. /// function dV(t, x, v: Double): Double; begin Result := -p2 * x; end; /// /// Функция для вычисления производной перемещения. /// function dX(t, x, v: Double): Double; begin Result := v; end; /// /// Процедура для вычисления текущего значения перемещения (xi) и скорости (vi). /// Значения перемещения и скорости для предыдущего шага берутся по входным xi, vi. /// В конце расчета xi, vi соответствуют текущему моменту времени t+h. /// Параметры: /// t - время; /// h - шаг интегрирования. /// procedure SolverRK4(t, h: Double; var xi, vi: Double); var V1, V2, V3, V4: Double; X1, X2, X3, X4: Double; begin V1 := dV(t, xi, vi); X1 := dX(t, xi, vi); V2 := dV(t + h/2, xi + X1*h/2, vi + V1*h/2); X2 := dX(t + h/2, xi + X1*h/2, vi + V1*h/2); V3 := dV(t + h/2, xi + X2*h/2, vi + V2*h/2); X3 := dX(t + h/2, xi + X2*h/2, vi + V2*h/2); V4 := dV(t + h, xi + X3*h, vi + V3*h); X4 := dX(t + h, xi + X3*h, vi + V3*h); vi := vi + (V1 + 2*V2 + 2*V3 + V4) * h / 6; xi := xi + (X1 + 2*X2 + 2*X3 + X4) * h / 6; end; var i: Integer; t, x, v, h: Double; /// /// ОСНОВНОЙ БЛОК /// begin t := 0; // начальное время h := 0.001; // шаг времени x := 0.15; // начальное перемещение v := 1.40; // начальная скорость for i := 1 to 100 do begin SolverRK4(t, h, x, v); t := t + h; end; ShowMessage('t=' + FloatToStr(t) + '; x=' + FloatToStr(x) + '; v=' + FloatToStr(v)); end;
Click MEMBERSHIP to subscribe or LOG IN if you are already our subscriber
General | |
---|---|
Difficulty | advanced |
Duration (min) | medium (10..20) |
Language | ru (русский) |
Software | |
Software | TechEditor |
Most viewed lectures for engineers