RSS    

   Реферат: Решение смешанной задачи для уравнения гиперболического типа методом сеток

  u1,u2,u3      : Array[1..n] of Real;

Begin

  n1 := n;

  WriteLn('Приложение 2');

  WriteLn('------------');

  WriteLn('Результат, полученный при вычислении программы :');

  WriteLn;

  xp[1] := 0;

  xp[n] := 1;

  For i := 2 to ( n - 1 ) do

    Begin

      x := (i-1) * hx;

      xp[i] := x;

      u1[i] := f(x);                 { u(x,0) на 0 слое }

      u2[i] := u1[i] + ht * g(x);    { u(x,ht) на 1 слое }

    End;

  {   ///   Задание граничных условий  \\\   }

  u1[1] := 0 ;   {  u(0,0)   }

  u1[n] := 0 ;   {  u(1,0)   }

  u2[1] := 0 ;   {  u(0,ht)  }

  u2[n] := 0 ;   {  u(1,ht)  }

  u3[1] := 0 ;   {  u(0,2ht) }

  u3[n] := 0 ;   {  u(1,2ht) }

  {   ///   Печать заголовка   \\\   }

  Write('       ');

  For i := 1 to n do Write(' x=', xp[i]:1:1);

  WriteLn;

  t := 0;

  {   ///   Печать решения на нулевом слое   \\\   }

  Write('t=',t:2:2,' ');

  For i := 1 to n do

    If u1[i] >= 0 then Write(' ',u1[i]:3:3) else Write(u1[i]:3:3) ;

  t := t + ht;

  {   ///   Печать решения на первом слое   \\\   }

  WriteLn;

  Write('t=',t:2:2,' ');

  For i := 1 to n do

    If u2[i] >= 0 then Write(' ',u2[i]:3:3) else Write(u2[i]:3:3);

  For j := 1 to 15 do

    Begin

      {Subroutine GIP3 Begin}

      n1 := n1-1;

      {Вычисление параметра сетки для проверки условия Куранта}

      a1 := ht/hx;

      if a1 > 1 then WriteLn('Нарушено условие Куранта') else

        Begin

          b1 := a1 * a1;

          a1 := 2 * ( 1 - b1);

          {Вычисление решения на очередном слое}

          For i := 2 to n do u3[i] := a1*u2[i] + b1 * (u2[i+1] +

                             u2[i-1]) - u1[i];

          For i := 2 to n do

            Begin

              u1[i] := u2[i];

              u2[i] := u3[i]

            End;

        End;

      u1[n] := 0;

      u2[n] := 0;

      u3[n] := 0;

      {Subroutine GIP3 End}

    t := t + ht;

    WriteLn;

    Write('t=',t:2:2,' ');

    For i := 1 to n do

      {Вывод результатов}

      If u2[i] >= 0 then Write(' ',u2[i]:3:3) else Write(u2[i]:3:3);

    End;

  WriteLn;

  WriteLn;

End.

Приложение 3 

( выполнения лабораторной работы. Вариант 11)

Program Laboratornaya_rabota_43_variant_11;

Const

hx = 0.1 ;     { Шаг по x - hx }

  ht = 0.05 ;    { Шаг по t - ht }

  n  = 11 ;      { Количество узлов }

Function f(x : Real) : Real; { Данная функция              }

                             { вычисляющая решение при t=0 }

Begin

  f := x * ( x * x - 1 );

End;

Function g(x : Real) : Real; { Данная функция                          }

                             { вычисляющая производную решения при t=0 }

Begin

  g := 0;

End;

Var

  xp            : Array[1..n] of Real;

  i,j,n1        : Word;

  x,t,a1,b1     : Real;

  u1,u2,u3      : Array[1..n] of Real;

Begin

  n1 := n;

  WriteLn('Приложение 4');

  WriteLn('------------');

  WriteLn('Результат, полученный при вычислении программы :');

  WriteLn;

  xp[1] := 0;

  xp[n] := 1;

  For i := 2 to ( n - 1 ) do

    Begin

      x := (i-1) * hx;

      xp[i] := x;

      u1[i] := f(x);                 { u(x,0) на 0 слое }

      u2[i] := u1[i] + ht * g(x);    { u(x,ht) на 1 слое }

    End;

  {   ///   Задание граничных условий  \\\   }

  u1[1] := 0 ;   {  u(0,0)   }

  u1[n] := 0 ;   {  u(1,0)   }

  u2[1] := 0 ;   {  u(0,ht)  }

  u2[n] := 0 ;   {  u(1,ht)  }

  u3[1] := 0 ;   {  u(0,2ht) }

  u3[n] := 0 ;   {  u(1,2ht) }

  {   ///   Печать заголовка   \\\   }

  Write('       ');

  For i := 1 to n do Write(' x=', xp[i]:1:1);

  WriteLn;

  t := 0;

  {   ///   Печать решения на нулевом слое   \\\   }

  Write('t=',t:2:2,' ');

  For i := 1 to n do

    If u1[i] >= 0 then Write(' ',u1[i]:3:3) else Write(u1[i]:3:3) ;

  t := t + ht;

  {   ///   Печать решения на первом слое   \\\   }

  WriteLn;

  Write('t=',t:2:2,' ');

  For i := 1 to n do

    If u2[i] >= 0 then Write(' ',u2[i]:3:3) else Write(u2[i]:3:3);

  For j := 1 to 15 do

    Begin

      {Subroutine GIP3 Begin}

      n1 := n1-1;

      {Вычисление параметра сетки для проверки условия Куранта}

      a1 := ht/hx;

      if a1 > 1 then WriteLn('Нарушено условие Куранта') else

        Begin

          b1 := a1 * a1;

          a1 := 2 * ( 1 - b1);

          {Вычисление решения на очередном слое}

          For i := 2 to n do u3[i] := a1*u2[i] + b1 * (u2[i+1] +

                             u2[i-1]) - u1[i];

          For i := 2 to n do

            Begin

              u1[i] := u2[i];

              u2[i] := u3[i]

           End;

        End;

      u1[n] := 0;

      u2[n] := 0;

      u3[n] := 0;

      {Subroutine GIP3 End}

    t := t + ht;

    WriteLn;

    Write('t=',t:2:2,' ');

    For i := 1 to n do

      {Вывод результатов}

      If u2[i] >= 0 then Write(' ',u2[i]:3:3) else Write(u2[i]:3:3);

End;

WriteLn;

  WriteLn;

End.

(выполнения лабораторной работы. Вариант 20)

Program Laboratornaya_rabota_43_variant_20;

Const

hx = 0.1 ;     { Шаг по x - hx }

  ht = 0.05 ;    { Шаг по t - ht }

  n  = 11 ;      { Количество узлов }

Function f(x : Real) : Real; { Данная функция              }

                             { вычисляющая решение при t=0 }

Begin

  f := 10 * x * ( x * x * x - 1 );

End;

Function g(x : Real) : Real; { Данная функция                          }

                             { вычисляющая производную решения при t=0 }

Begin

  g := 0;

End;

Var

  xp            : Array[1..n] of Real;

  i,j,n1        : Word;

  x,t,a1,b1     : Real;

  u1,u2,u3      : Array[1..n] of Real;

Begin

  n1 := n;

  WriteLn('Приложение 4');

  WriteLn('------------');

  WriteLn('Результат, полученный при вычислении программы :');

  WriteLn;

  xp[1] := 0;

  xp[n] := 1;

  For i := 2 to ( n - 1 ) do

    Begin

      x := (i-1) * hx;

      xp[i] := x;

      u1[i] := f(x);                 { u(x,0) на 0 слое }

      u2[i] := u1[i] + ht * g(x);    { u(x,ht) на 1 слое }

    End;

  {   ///   Задание граничных условий  \\\   }

  u1[1] := 0 ;   {  u(0,0)   }

  u1[n] := 0 ;   {  u(1,0)   }

  u2[1] := 0 ;   {  u(0,ht)  }

  u2[n] := 0 ;   {  u(1,ht)  }

  u3[1] := 0 ;   {  u(0,2ht) }

  u3[n] := 0 ;   {  u(1,2ht) }

  {   ///   Печать заголовка   \\\   }

  Write('       ');

  For i := 1 to n do Write(' x=', xp[i]:1:1);

  WriteLn;

  t := 0;

  {   ///   Печать решения на нулевом слое   \\\   }

  Write('t=',t:2:2,' ');

  For i := 1 to n do

    If u1[i] >= 0 then Write(' ',u1[i]:3:3) else Write(u1[i]:3:3) ;

  t := t + ht;

  {   ///   Печать решения на первом слое   \\\   }

  WriteLn;

  Write('t=',t:2:2,' ');

  For i := 1 to n do

    If u2[i] >= 0 then Write(' ',u2[i]:3:3) else Write(u2[i]:3:3);

  For j := 1 to 15 do

    Begin

      {Subroutine GIP3 Begin}

      n1 := n1-1;

      {Вычисление параметра сетки для проверки условия Куранта}

      a1 := ht/hx;

      if a1 > 1 then WriteLn('Нарушено условие Куранта') else

        Begin

          b1 := a1 * a1;

          a1 := 2 * ( 1 - b1);

          {Вычисление решения на очередном слое}

          For i := 2 to n do u3[i] := a1*u2[i] + b1 * (u2[i+1] +

                             u2[i-1]) - u1[i];

          For i := 2 to n do

            Begin

              u1[i] := u2[i];

              u2[i] := u3[i]

            End;

        End;

      u1[n] := 0;

      u2[n] := 0;

      u3[n] := 0;

      {Subroutine GIP3 End}

    t := t + ht;

    WriteLn;

    Write('t=',t:2:2,' ');

    For i := 1 to n do

      {Вывод результатов}

      If u2[i] >= 0 then Write(' ',u2[i]:3:3) else Write(u2[i]:3:3);

    End;

  WriteLn;

  WriteLn;

End.

( выполнения лабораторной работы. Вариант 14)

Program Laboratornaya_rabota_43_variant_14;

Const

hx = 0.1 ;     { Шаг по x - hx }

  ht = 0.05 ;    { Шаг по t - ht }

  n  = 11 ;      { Количество узлов }

Function f(x : Real) : Real; { Данная функция              }

                             { вычисляющая решение при t=0 }

Begin

  f := x * sin( 2 * (x - 1) );

End;

Function g(x : Real) : Real; { Данная функция                          }

                             { вычисляющая производную решения при t=0 }

Begin

  g := 0;

End;

Var

  xp            : Array[1..n] of Real;

Страницы: 1, 2, 3


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.