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


 

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

41708. ИССЛЕДОВАНИЕ ТИПОВЫХ ЗВЕНЬЕВ ЛИНЕЙНЫХ АСР 165.27 KB
  Переходная характеристика Время сек Импульсная характеристика Время сек Рисунок 1 Переходная и импульсная характеристика звена W1 Переходная характеристика Время сек Импульсная характеристика Время сек Рисунок 2 Переходная и импульсная характеристика звена W2 Переходная характеристика Время сек Импульсная характеристика Время сек Рисунок 3 Переходная и импульсная характеристика звена W3 Переходная характеристика Время сек Импульсная характеристика Время сек Рисунок 4 Переходная и импульсная характеристика звена W4...
41709. Расчет поперечной рамы стального каркаса одноэтажного здания на действие постоянной нагрузки 702.68 KB
  Поперечное сечение в виде 2х уголков с параметрами уголка 160×100×10 Высота низа колонн 8 м Поперечное сечение в виде трубы с параметрами 720×12 Высота верха колонн 6 м Поперечное сечение в виде трубы с параметрами 720×8 q = 24 кН м P = 32 кН ℓ = 32 м Цели лабораторной работы: Произвести расчет поперечной рамы стального каркаса одноэтажного здания с помощью ПК ЛИРА Определить для основных сечений колонн и ригеля максимальные значения нормальных и касательных напряжений Сделать вывод о работе конструкции Ход работы: Создание расчетной...
41710. Команды MSDOS 251.68 KB
  Название команды Синтаксис команды Создание файла с консоли copycon имя файла Удаление файла del имя файла Переименование файла ren имя файла 1 имя файла 2 Редактирование файла edit имя файла Переход на диск имя диска Переход в каталог cd путь Создание каталога md имя каталога Удаление каталога rd имя каталога Очистка экрана Cls Вывод содержимого файла на экран type имя файла Копирование файла copy путь 1 что копируется путь 2 куда копируется Поиск файла filefind имя файла Работа с командной строкой Prompt Информация о команде команда ...
41711. Индекс FTSE 100 109.84 KB
  Индекс начал рассчитываться с 3 января 1984 года с уровня 1000 пунктов. Компании чьи акции учитываются в расчете индекса FTSE 100 должны удовлетворять условиям выставляемым FTSE Group: а должны входить в список Лондонской фондовой биржи; б стоимость акций индекса FTSE 100 выражается в фунтах или евро;в пройти тест на принадлежность к определенному государству;г акции FTSE 100 должны быть в свободном обращении и быть легко ликвидными. Индекс FTSE 100 включает 100 компаний британской экономики хотя на самом деле список состоит из...
41712. Основы работы в ГИС ArcView 1.75 MB
  Интерфейс пользователя rcView Окно программ Окно приветствия Строка меню Строка кнопок Строка инструментов Окно вида Меню работы с файлами Меню редактирования Меню вид Меню тема Меню графика Меню окно Строка кнопок:
41713. Классы. Основные понятия 260.14 KB
  Основные понятия Цель работы: Познакомиться с понятием класса. Продемонстрировать работу с классом создание экземпляра класса изменение значений полей вызов перегруженных методов Выполнить требования к лабораторным работам см. Контрольные вопросы: Что такое метод Что такое возвращаемый тип каким он может быть Что значит void Что такое параметры метода какие параметры бывают Что такое перегрузка методов и для чего она нужна Что такое класс Какие члены класс может содержать Что такое конструктор для чего служит...
41714. Таблицы, сортировка таблиц, вычисление в таблицах в редакторе Word 54.82 KB
  С помощью Microsoft Grph можно создавать высококачественные информативные диаграммы и включать их в документы Word. Создание диаграммы Диаграммы строятся на основе данных содержащихся в таблице данных также внедряемой в документ Word. Можно создавать диаграммы четырнадцати основных и двадцати дополнительных типов. Тип диаграмм Правильный выбор типа диаграммы позволяет представить данные самым выигрышным образом.
41715. Ввод-вывод. Ветвления 168.52 KB
  Цель работы: Разработать алгоритм и написать программу на языке С++ для выполнения задания согласно номера бригады. Программа должна обеспечивать обмен с оператором, выдавая необходимые сообщения и позволяя вводить исходные данные и просмотреть результат выполнения программы.