fbpx

Численное интегрирование дифференциального уравнения движения

Аналитическая зависимость дает точное решение для любых исходных данных, и в этом ее неоспоримое преимущество, по сравнению с аппроксимацией.

Однако, точное аналитическое решение на практике может быть получено лишь для небольшого круга задач. В остальных случаях, расчетчику приходится прибегать к численному, приближенному решению.

Решить уравнение численно означает применить такие математические методы, которые не требуют существенных преобразований исходной системы уравнений.

Существует целый ряд методов численного интегрирования. Каждый метод имеет свои достоинства и недостатки, и ориентирован на определенный класс задач.

Решение систем дифференциальных уравнений методом Рунге-Кутты является одним из самых распространённых численных методов решений в технике.

Содержание лекции:

  1. Аналитическое решение уравнения свободных колебаний
  2. Численное решение уравнения свободных колебаний
  3. Метод Рунге-Кутты (теория)
  4. Метод Рунге-Кутты (практическая реализация)

Как скачать и запустить скрипт

Скрипт, который упоминается в лекции, Вы найдете на вкладке Script. Если Вы являетесь активным подписчиком, то Вы можете скачать готовый документ (вкладка Download).

To view this content you need to be a member

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;

How to use this content

  1. Download and install TechEditor (don't worry, it's absolutely freeware from Dystlab™)
  2. Download and unzip content
  3. Open document (run file with extension *.tec) on your computer

To view this content you need to be a member

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
There are no reviews for this content.
Write a review
BadExcellent
Verification code *
Facebook comment

Most viewed on Dystlab

Most viewed lectures for engineers

Let's get started!

Ready to master new skills?
Then start today!

Image

Sharing engineering skills

© Dystlab™. All rights reserved.

Privacy Policy

Office in Ukraine

76006, Ivano-Frankivsk, 17/97 Ivana Mykolaichuka str.

Contact Info

Follow Us - Fb. / Tw. / Inst.