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


 

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

18800. АЦП / ЦАП. Основные архитектуры, интерфейсы связи 270.15 KB
  АЦП / ЦАП. Основные архитектуры интерфейсы связи. ЦАП предназначен для преобразования числа представленного как правило в виде двоичного кода в напряжение или ток пропорциональные этому числу. Схемотехника аналоговых преобразователей весьма разнообразна. На рисунк...
18801. Устройство плат аналогового ввода - вывода 23.88 KB
  Устройство плат аналогового ввода вывода. Платы аналогового ввода‐вывода ПАВВ предназначены для обеспечения ввода аналоговых сигналов с датчиков в вычислительное устройство обработки и вывода аналоговых сигналовдля пропорционального управления исполнительными
18802. Назначение и особенности архитектур микроконтроллеров 76.74 KB
  Назначение и особенности архитектур микроконтроллеров Микроконтроллер МК ‐ это специализированный микропроцессор предназначенныйдля обработки внешних событий при решении задач управления техническими процессами. Обычно МК в реальном времени выполняют задачи с
18803. Назначение и особ-ти архитектур цифровых сигнальных процессоров 34.91 KB
  Назначение и особти архитектур цифровых сигнальных процессоров. Цифровой сигнальный процессор ЦСП это специализированный процессор предназначенный для обработки в реальном масштабе времени сигналов непрерывного вида с использованием математического аппарата ц
18804. Однослойная нейронная сеть, решающая задачу распознавания 269 KB
  Изучение алгоритмов обучения нейронных сетей, получение практических навыков работы с простейшими нейронными сетями, для обучения которых используется алгоритм Хебба и алгоритм Розенблатта.
18805. Влияние помех на работоспособность МПУСУ и пути повышения помехоустойчивости 163.23 KB
  Влияние помех на работоспособность МПУСУ и пути повышения помехоустойчивости. На рисунке приведена условная схема МПУСУ с указанием трех вредных факторов. ЭМИ влияют на работоспособность входных каскадов измерительного контура и контура управления а также порта
18806. Экологическое образование 30.5 KB
  Экологическое образование как комплексная проблема современности стала объектом внимания философскосоциологических исследований рассматривающих экологические проблемы как общечеловеческие Э.В. Гирусов Ю.Г. Марков Д.Ж. Маркович Н.И. Моисеев и др.. Первостепенную ва...
18807. Развитие биосферы Земли 49.5 KB
  Развитие биосферы Земли. На ранней Земле предполагают активный вулканизм: за счет лав выплавляющихся из верхней мантии постепенно сформировалась земная кора а дегазация лав привела к возникновению первичной атмосферы и жидкой воды на поверхности планеты. В первый м...
18808. Круговороты основных биогенных элементов 697.5 KB
  Круговороты основных биогенных элементов Глобальный круговорот воды Круговороты воды и СО2 в глобальном масштабе представляют собой вероятно самые важные для человечества биогеохимические круговороты. Для обоих характерны небольшие но весьма подвижные фонды в а...