66549

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

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

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

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

Русский

2014-08-22

196.5 KB

8 чел.

Выполнил: Марудо А.В., 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


 

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

16955. Перевод ЭБ из состояния «Горячий останов» в состояние Холодный останов 147.5 KB
  Лекция № 15 Тема: Перевод ЭБ из состояния Горячий останов в состояние Холодный останов. План лекции Введение 1.Подготовка РУ к расхолаживанию. 2.Расхолаживание 1 контура. 3. Расхолаживание 1 контура системой TQ122232. 4.Окончательное расхолаживание 1 контура
16956. Перевод ЭБ из состояния «работа на мощности» в состояние «горячий останов» 81 KB
  Тема: Перевод ЭБ из состояния работа на мощности в состояние горячий останов. План лекции Введение 1. Подготовка к снижению мощности и снижение мощности реактора. 2. Останов турбогенератора. 3. Разгрузка реактор...
16957. Перевод ЭБ из режима «Холодный останов» в режим «останов для ремонта» и «останов для перегрузки» 83 KB
  Тема: Перевод ЭБ из режима Холодный останов в режим останов для ремонта и останов для перегрузки. План лекции Введение 1.Дренирование 1 контура и консервация ПГ. 2.Подготовка ЭБ к ремонту. 3.Подготовка РУ к перегрузке топлива. ...
16958. Задачи и организационная структура управления эксплуатацией АЭС 84.5 KB
  Тема: Задачи и организационная структура управления эксплуатацией АЭС. План лекции Введение 1.Задачи эксплуатации АЭС. 2.Типовая организационная структура управления эксплуатацией АС. Выводы по лекции. Литература: 1.Острековский В.А. Эксплуатация АС. Москв
16959. Эксплуатационно-техническая документация на АЭС 106 KB
  PAGE 12 Лекция №3. Тема: Эксплуатационнотехническая документация на АЭС. План лекции. Введение. 1.Виды эксплуатационнотехнической документации на АЭС. 2.Руководящая документация на АЭС. 3.Пономерная документация на АЭС. 4. Документация опе...
16960. Эксплуатация ЭБ при снижении и повышении нагрузки генератора 120.5 KB
  Лекция № 13 Тема: Эксплуатация ЭБ при снижении и повышении нагрузки генератора. План лекции Введение. Эксплуатация ЭБ при снижении нагрузки. Эксплуатация ЭБ при повышении нагрузки. Выводы по лекции. Литература: Инструкция по эксплуатации...
16961. Перевод ЭБ в состояние холодный останов 83 KB
  Тема: Перевод ЭБ в состояние холодный останов. План лекции Введение Исходное состояние реакторной установки перед подготовкой к пуску после перегрузки топлива. Подготовительные операции по переводу реакторной установки в холодный останов.
16962. Імпорт таблиць. Встановлення звязків між таблицями 54 KB
  Практична робота №1 Тема: Імпорт таблиць. Встановлення звязків між таблицями. Мета: навчитися імпортувати таблиці MS Excel в таблиці Ms Access а також навчитися звязувати таблиці. Устаткування: ПК. Операційна система Windows СУБД Ms Access. Правила ТБ. Методичні реком...
16963. Імпорт таблиць. Встановлення звязків між таблицями 423.5 KB
  Практична робота №1 Тема: Імпорт таблиць. Встановлення звязків між таблицями. Мета: навчитися імпортувати таблиці MS Excel в таблиці Ms Access а також навчитися звязувати таблиці. Устаткування: ПК. Операційна система Windows СУБД Ms Access. Правила ТБ. Методичні реко