Решение системы дифференциальных уравнений, задача Коши - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Решение системы дифференциальных уравнений. На отрезке [0,3] решить задачу Коши для системы
, сжальтесь! Я в этом ни бум-бум!

Решение задачи: «Решение системы дифференциальных уравнений, задача Коши»

textual
Листинг программы
program Roonge_Koott;
 
const
  Y1 = 0.0;
  Y2 = 0.2;
  a  = 0.0;
  b  = 3.0;
  shag = 0.1;
type
  IntType = integer;
  RealType = real;
  Vec = array[1..2] of RealType;
 
  procedure Proizvod(x: RealType; Var Y, F: Vec);
  begin
    F[1] := Y[2];
    F[2] := -0.04 * Exp(-x);
  end;
 
  procedure Roonge_Koott(N: IntType; x, h: RealType; Var Y: Vec);
  var
    i, j: IntType;
    H1, H2, Q: RealType;
    Y0, Y1, F: Vec;
  begin
    H1 := 0.0;
    H2 := h / 2.0;
    for i := 1 to N do
    begin
      Y[i]  := Y[i];
      Y1[i] := Y[i];
    end;
    for j := 1 to 4 do
    begin
      Proizvod(x + H1, Y, F);
      if j = 3 then
        H1 := h
      else
        H1 := H2;
      for i := 1 to N do
      begin
        Q := H1 * F[i];
        Y[i] := Y0[i] + Q;
        if j = 2 then
          Q := 2 * Q;
        Y1[i] := Y1[i] + Q / 3.0;
      end;
    end;
    for i := 1 to N do
      Y[i] := Y1[i];
  end;
 
var
  x, h: RealType;
  Y: Vec;
  // Out: Text;
begin
  // Assign(Out, 'otvet.txt');
  // ReWrite(Out);
  Writeln(' *X* *Y1* *Y2*');
  Y[1] := Y1;
  Y[2] := Y2;
  x := a;
  h := shag;
  while (x <= b) and (h > 0.0) do
  begin
    Writeln(' ', x: 7: 1, ' ', Y[1]: 7: 4, ' ', Y[2]: 7: 4, ' ');
    Roonge_Koott(2, x, h, Y);
    x := x + h;
  end;
  //Close(Out);
end.

Объяснение кода листинга программы

  1. В начале программы объявляются константы и типы данных.
  2. Затем объявляются переменные: N (целое число), x (число с плавающей запятой), h (число с плавающей запятой), Y (вектор из N элементов типа RealType), Y0 (вектор из N элементов типа RealType), Y1 (вектор из N элементов типа RealType), F (вектор из 4 элементов типа RealType).
  3. Далее объявлены два процедурных блока:
    • внутри первого блока объявлены две переменные: i и j (оба целые числа), а также переменные H1, H2 и Q (все три - числа с плавающей запятой). Этот блок используется для итерации по массиву Y и выполнения вычислений.
    • внутри второго блока объявлены переменные x, h, Y и Y1 (все четыре - числа с плавающей запятой). Этот блок используется для итерации по диапазону от a до b и выполнения вычислений.
  4. Затем выполняется итерация по массиву Y и выводится результат на экран.
  5. После этого выполняется итерация по диапазону от a до b, выполняются вычисления и обновление значений в массиве Y.
  6. В конце программы выводится сообщение на экран и закрывается поток вывода.

Оцени полезность:

7   голосов , оценка 4 из 5
Похожие ответы