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


 

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

13320. ВИЗНАЧЕННЯ ПИТОМОЇ ТЕПЛОТИ ПАРОУТВОРЕННЯ РІДИНИ 236 KB
  Лабораторна робота № 5 ВИЗНАЧЕННЯ ПИТОМОЇ ТЕПЛОТИ ПАРОУТВОРЕННЯ РІДИНИ Мета роботи: а вивчення процесів пароутворення; б експериментальне визначення питомої теплоти пароутворення води при температурі кипіння. Прилади та матеріали: калориметр з мішалкою ки
13321. ВИЗНАЧЕННЯ КОЕФІЦІЄНТА ПОВЕРХНЕВОГО НАТЯГУ РІДИНИ МЕТОДОМ ВІДРИВУ КІЛЬЦЯ 168.5 KB
  Лабораторна робота № 6 ВИЗНАЧЕННЯ КОЕФІЦІЄНТА ПОВЕРХНЕВОГО НАТЯГУ РІДИНИ МЕТОДОМ ВІДРИВУ КІЛЬЦЯ. Мета роботи: а вивчення властивостей рідкого стану речовини; б визначення коефіцієнта поверхневого натягу рідини від типу речовини; в визначення залежності коефі
13322. Визначення коефіцієнта Пуасона методом Клемана і Дезорма 473 KB
  Лабораторна робота №8 Визначення коефіцієнта Пуасона методом Клемана і Дезорма. Мста роботи: аВивчення законів ідеального газу. бЕкспериментальне визначення показника адіабати. Прилади і матеріали: балон з двома кранами рідинний манометр ручний насос. Кор...
13323. Визначення теплоти розчинення солі 460 KB
  Лабораторна робота № 9. Визначення теплоти розчинення солі. Мета роботи: адослідним шляхом визначити теплоту розчинення солі; бустановити залежність теплоти розчинення солі від концентрації розчину. Прилади та матеріали: посудина Дюара термометр мензурка сі...
13324. ВИЗНАЧЕННЯ КОЕФІЦІЄНТА ВНУТРІШНЬОГО ТЕРТЯ ТА СЕРЕДНЬОЇ ДОВЖИНИ ВІЛЬНОГО ПРОБІГУ МОЛЕКУЛ ПОВІТРЯ 400 KB
  Лабораторна робота № 10 ВИЗНАЧЕННЯ КОЕФІЦІЄНТА ВНУТРІШНЬОГО ТЕРТЯ ТА СЕРЕДНЬОЇ ДОВЖИНИ ВІЛЬНОГО ПРОБІГУ МОЛЕКУЛ ПОВІТРЯ Мета роботи: а вивчення основних законів молекулярнокінетичної теорії газів; б експериментальне визначення основних параметрів молекулярн...
13325. ВИЗНАЧЕННЯ КОЕФІЦІЄНТА ЛІНІЙНОГО РОЗШИРЕННЯ ТВЕРДИХ ТІЛ 696 KB
  Лабораторна робота №11 ВИЗНАЧЕННЯ КОЕФІЦІЄНТА ЛІНІЙНОГО РОЗШИРЕННЯ ТВЕРДИХ ТІЛ Мета роботи: авивчення термічного розширення твердих тіл; бекспериментальне визначення коефіцієнта лінійного розширення різних матеріалів. Прилади та матеріали: прилад для в...
13326. Визначення вязкості рідини капілярним віскозиметром 365 KB
  Лабораторна робота № 12 Визначення вязкості рідини капілярним віскозиметром. Мета роботи: авивчення властивостей рідини; бекспериментальне визначення коефіцієнта вязкості рідини. Прилади та матеріали: віскозиметр секундомір спирт дистильована вод
13327. Визначення коефіцієнта поверхневого натягу методом Ребіндера 223 KB
  Лабораторна робота №7 Визначення коефіцієнта поверхневого натягу методом Ребіндера. Мета роботи: аВизначення властивостей рідини: бВивчення методів та експериментальне визначення коефіцієнта поверхневого натягу. Прилади та матеріали: аспіратор установка
13328. Комп’ютерний вибір оптимальних однорідних термоелектричних матеріалів для термоелектрики 29.5 KB
  Звіт до лабораторної роботи № 1 Компютерний вибір оптимальних однорідних термоелектричних матеріалів для термоелектрики Мета роботи Використовуючи експериментальні дані кінетичних коефіцієнтів навчитись проводити раціональний вибір термоелектричного мат