66549

Решение граничных задач для ОДУ. Метод сеток для дифференциальных уравнений в частных производных

Лабораторная работа

Информатика, кибернетика и программирование

В прямоугольной области строится сеточная область из одинаковых ячеек и приближающая область. В каждом узле исходное уравнение заменяется конечно-разностным уравнением. Приближенные значения производных в каждом узле находятся по значениям искомой функции в соседних узлах.

Русский

2014-08-22

196.5 KB

7 чел.

Выполнил: Марудо А.В., 2 курс, 3 группа

Проверил: Шапочкина Ирина Викторовна

Лабораторная работа #5(вариант #7)

Тема: Решение граничных задач для ОДУ. Метод сеток для дифференциальных уравнений в частных производных.

Цель: Используя метод сеток решить задачу Дирихле для уравнения Лапласа. Решить ОДУ с граничными условиями, результаты представить графически.

Задание 1

Условие: Используя метод сеток, составить приближенное решение задачи Дирихле для уравнения Лапласа  для функции  в прямоугольной области при заданных граничных условиях:

         

         

Ход работы: 

Теория метода сеток:

В прямоугольной области строится сеточная область из одинаковых ячеек и приближающая область. В каждом узле исходное уравнение заменяется конечно-разностным уравнением. Приближенные значения производных в каждом узле находятся по значениям искомой функции в соседних узлах. Решение в граничных узлах сеточной области находится из граничных условий. Для решения разностной задачи используется метод релаксации, при котором каждая разностная схема решается относительно центрального узла.

Код программы:

function f1(x: real): real;    //U(x,1)

 begin

  f1:=-1/(sqr(x)+1);

 end;

 function f2(x: real): real;     //U(x,3)

 begin

  f2:=-3/(sqr(x)+9);

 end;

 function p1(y: real): real;       //U(0,y)

 begin

  p1:=-1/y;

 end;

 function p2(y: real): real;       //U(1,y)

 begin

  p2:=-y/(1+sqr(y));

 end;

procedure TForm1.Button1Click(Sender: TObject);

 var

  h, l, x, y, t, uk, m: real;

  i, j: integer;

  u: array [1..11,1..11] of real;

  const

  a1=0;         //U(0,y)

  a2=1;         //U(1,y)

  b1=1;         //U(x,1)

  b2=3;         //U(x,3)

  e=0.01;

 begin

  h:=0.1;

  l:=0.2;

  for i:=1 to 10 do

   for j:=1 to 10 do u[i,j]:=0;

//зададим граничные условия

  for i:=1 to 11 do

   begin

    x:=a1+(i-1)*h;

    u[i,1]:=f1(x);

    u[i,11]:=f2(x);

   end;

  for j:=1 to 11 do

   begin

    y:=b1+(j-1)*l;

    u[1,j]:=p1(y);

    u[11,j]:=p2(y);

   end;

//произведем ряд приближений

  t:=h*h/(l*l);

  repeat

  m:=0;

  for i:=2 to 10 do

   for j:=2 to 10 do

    begin

     uk:=u[i,j];

     u[i,j]:=(u[i+1,j]+u[i-1,j]+t*(u[i,j+1]+u[i,j-1]))/(2+2*t);

     if m<abs(u[i,j]-uk) then m:=abs(u[i,j]-uk);

    end;

  until m<e;

//выводим сетку на форму

  for i:=1 to 11 do

    for j:=1 to 11 do

      StringGrid.Cells[j-1,i-1]:=floattostr(roundto(u[i,j],-2));

 end;

Полученные результаты:

Вывод:

По таблице видно, что результат достаточно точный, что и обусловливается погрешностью в 0.01.

Задание 2

Условие: Дано ОДУ:

Найти решение этого уравнения, удовлетворяющее граничным условиям:

         

при следующих значениях параметров:         

Построить график полученной зависимости .

Ход работы:

Теория метода конечных разностей:

Разбиваем отрезок [0,1] на части с постоянным шагом h с помощью узлов . Аппроксимируем вторую производную конечно-разностным соотношением , при этом значение искомой функции в узлах  приближенно заменяем соответствующими значениями сеточной функции :

;

Получилась система n-1 линейных уравнений, число которых совпадает с числом неизвестных значений сеточной функции  в узлах. Ее значение на концах отрезка определены граничными условиями:  и .

Решая систему уравнений находим значение сеточной функции, которые приближенно равны значениям искомой функции.

Система уравнений имеет трехдиагональный вид на главной диагонали которой находятся элементы .

Код программы:

function fp(t: real): real;

 begin

  result:=t/(b+sqr(t));

 end;

 function fq(t: real): real;

 begin

  result:=-(1+cos(t))/sqrt(sqr(a)+sqr(t));

 end;

 function fr(t: real): real;

 begin

  result:=exp(-a*sqr(t));

 end;

 procedure TForm1.Button1Click(Sender: TObject);

 var

  h, g1, g2, g3, g4, g5, g6, x0, xkon: real;

  i, n: integer;

  x, l, k, y, p, r, q: array of real;

 begin

  Chart1.Series[0].Clear;

  x0:=0;

  xkon:=1;

  g1:=1;

  g2:=-0.5;

  g3:=1;

  g4:=4.5;

  g5:=0.3;

  g6:=4.7;

  h:=StrToFloat(Edit1.Text);

  n:=round((xkon-x0)/h);

  SetLength(x,n+1);

  SetLength(y,n+1);

  SetLength(l,n+1);

  SetLength(k,n+1);

  SetLength(p,n+1);

  SetLength(q,n+1);

  SetLength(r,n+1);

  for i:=0 to n do

   begin

    x[i]:=x0+i*h;

    p[i]:=fp(x[i]);

    q[i]:=fq(x[i]);

    r[i]:=fr(x[i]);

   end;

//прямой ход решения трехдиагональной матрицы

  k[0]:=(h*h*r[0]*g2+h*(2-h*p[0])*g3)/((h*h*q[0]-2)*g2+h*(2-p[0])*g1);

  l[0]:=(2*g2)/((h*h*q[0]-2)*g2+h*(2-h*p[0])*g1);

  for i:=1 to n do

   begin

    k[i]:=(2*h*h*r[i]-(2-h*p[i])*k[i-1])/(2*h*h*q[i]-4-(2-h*p[i])*l[i-1]);

    l[i]:=(2+h*p[i])/(2*h*h*q[i]-4-(2-h*p[i])*l[i-1]);

   end;

//обратный ход

  y[n]:=(2*h*g6+(k[n-1]-k[n]/l[n])*g5)/(2*h*g4+(l[n-1]-1/l[n])*g5);

  for i:=(n-1) downto 0 do y[i]:=k[i]-l[i]*y[i+1];

  for i:=0 to n do Chart1.Series[0].AddXY(x[i],y[i]);

 end;

Полученные результаты:

Вывод:

Из графика видно, что граничные условия выполняются достаточно точно. Точность можно увеличить, уменьшив шаг.

БГУ

Физический факультет

2011/2012 учебный год

Минск

PAGE   \* MERGEFORMAT 5


 

А также другие работы, которые могут Вас заинтересовать

18975. Фирменный стиль: понятие и содержание 40 KB
  Фирменный стиль: понятие и содержание Фирменный стиль это совокупность устойчиво воспроизводимых отличительных характеристик общения манер поведения традиций свойственных фирме позиционирующих ее в коммуникационном пространстве современной экономики. Фирменны...
18976. Содержание организационной (корпоративной) культуры предприятия 52 KB
  Содержание организационной корпоративной культуры предприятия Большинство авторитетных специалистов в области бизнеса соглашаются с тем что организации как и нации имеют свою культуру. Для описания этого понятия пользуются различными терминами близкими по смыс...
18977. Лоббизм – эффективная ПР-технология 170.5 KB
  Лоббизм эффективная ПРтехнология Лоббирование это влияние заинтересованных групп на принятие решений властными структурами. Термин происходит от английского Lobby коридор так как попытки давления на законодателей часто проводились в коридорах связанных с зако...
18978. ПОЗИЦИОННЫЕ СИСТЕМЫ СЧИСЛЕНИЯ 128 KB
  ПОЗИЦИОННЫЕ СИСТЕМЫ СЧИСЛЕНИЯ ОСНОВНЫЕ ПОНЯТИЯ СИСТЕМ СЧИСЛЕНИЯ Вся информация в ЭВМ представляется в виде чисел. Выразив эти числа в какой-либо системе счисления можно получить код основанный на данной системе счисления. Для пон...
18979. ПРЕДСТАВЛЕНИЕ ИНФОРМАЦИИ В ЭВМ 188 KB
  ПРЕДСТАВЛЕНИЕ ИНФОРМАЦИИ В ЭВМ ПРЕДСТАВЛЕНИЕ СИМВОЛЬНОЙ ИНФОРМАЦИИ Поскольку байт имеет 256 различных состояний то с помощью 1 байта можно закодировать 256 различных символов. Состояние байта числа от 0 до 25510 или 0 до 3778 или от 0 до FF16 при этом будет представля
18980. ФУНКЦИОНАЛЬНЫЕ ЧАСТИ ПЕРСОНАЛЬНОЙ ЭВМ. МИКРОПРОЦЕССОР 242 KB
  ФУНКЦИОНАЛЬНЫЕ ЧАСТИ ПЕРСОНАЛЬНОЙ ЭВМ. МИКРОПРОЦЕССОР СТРУКТУРА ПЕРСОНАЛЬНОГО КОМПЬЮТЕРА Все современные ЭВМ используют микропроцессорную технику которая характеризуется большой интеграцией электронных элементов на единицу площади. Одним из следствий ...
18982. ВНУТРЕННЯЯ ПАМЯТЬ ПЕРСОНАЛЬНОЙ ЭВМ 98 KB
  ВНУТРЕННЯЯ ПАМЯТЬ ПЕРСОНАЛЬНОЙ ЭВМ СТРУКТУРА ПАМЯТИ ПЕРСОНАЛЬНОГО КОМПЬЮТЕРА Обрабатываемые данные и выполняемая программа должны находиться в запоминающем устройстве памяти ЭВМ куда они вводятся через устройства ввода. Ёмкость памяти измеряется в ве
18983. ВНЕШНЯЯ ПАМЯТЬ ПЕРСОНАЛЬНОЙ ЭВМ 117 KB
  ВНЕШНЯЯ ПАМЯТЬ ПЕРСОНАЛЬНОЙ ЭВМ ОБЩАЯ ХАРАКТЕРИСТИКА ВНЕШНЕЙ ПАМЯТИ Внешняя память ВЗУ предназначена для долговременного хранения больших объемов данных и программного обеспечения и обмена ими с оперативной памятью. В настоящее время структура и технич...