51526

Диференціальні рівняння у частинних похідних

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

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

Проведемо дискретизацію крайових умов отримаємо: Початкову матрицю обираємо як нульову. На кожній ітерації перераховуємо значення елементів матриці за попередніми формулами. Умова завершення

Украинкский

2014-02-12

52.85 KB

1 чел.

Науково-навчальний комплекс "Інститут прикладного системного аналізу"  

при Національному технічному університеті України "КПІ"

Кафедра математичних методів системного аналізу

Лабораторна робота № 2

з курсу "Чисельні методи"

на тему "Диференціальні рівняння у частинних похідних"

                                

                                       Виконав:    студент 3-го курсу

                                        групи КА-06

                                        Анікін Вадим

                                   Прийняв:  Коновалюк М. М.

Київ 2012

 Дано:  Еліптична задача. Розв'язати рівняння Лапласа

uxx + uyy = 0,     0 < x < L1; 0 < y < L2 

var

L1

L2

При x = 0

При x = L1

При y = 0

При y = L2

1

0.90

1.10

u(0, y) - ux(0, y) = g1

ux(L1, y) = g2

uy(x, 0) = g3

uy(x, L2) = g4

 Як точний розвязок беремо функцію:

вар

a

b

c

d

f

1

-0.30

1.50

0.70

0.50

1.30

u(x,y) = a (x2 - y2) + b x y + c x + d y + f

Ход работы:

Розіб’ємо відрізок на відрізків довжиною

  ,

а відрізок на відрізків довжиною

  .

Позначимо , ; , .

Нехай – це значення точного розв’язку рівняння, а – значення наближеного розв’язку.

Проведемо дискретизацію рівняння:

В нашому випадку  При :

Проведемо дискретизацію крайових умов отримаємо:

Початкову матрицю обираємо як нульову. На кожній ітерації перераховуємо значення елементів матриці за попередніми формулами. Умова завершення

Результат:

//Result.txt

1.3 1.353 1.412  1.477 1.548  1.625 1.708  1.797 1.892  1.993 2.1  2.213

1.367  1.435 1.509  1.589 1.675  1.767 1.865  1.969 2.079  2.195 2.317  2.445

1.428  1.511 1.6  1.695 1.796  1.903 2.016  2.135 2.26  2.391 2.528  2.671

1.483  1.581 1.685  1.795 1.911  2.033 2.161  2.295 2.435  2.581 2.733  2.891

1.532  1.645 1.764  1.889 2.02  2.157 2.3  2.449 2.604  2.765 2.932  3.105

1.575  1.703 1.837  1.977 2.123  2.275 2.433  2.597 2.767  2.943 3.125  3.313

1.612  1.755 1.904  2.059 2.22  2.387 2.56  2.739 2.924  3.115 3.312  3.515

1.643  1.801 1.965  2.135 2.311  2.493 2.681  2.875 3.075  3.281 3.493  3.711

1.668  1.841 2.02  2.205 2.396  2.593 2.796  3.005 3.22  3.441 3.668  3.901

1.687  1.875 2.069  2.269 2.475  2.687 2.905  3.129 3.359  3.595 3.837  4.085

Приложение:

//method.cpp

#include <iostream>

#include <fstream>

#include <math.h>

#include <vector>

using namespace std;

const double eps = 0.000001;

const double a = -0.3, b = 1.5, c = 0.7, d = 0.5, f = 1.3, l1 = 0.9, l2 = 1.1, h1 = 0.1, h2 = 0.1;

const int n1 = (int)(l1 / h1), n2 = (int)(l2 / h2);

 

double u(double x, double y)

{

 return a * (x * x - y * y) + b * x * y + c * x + d * y + f;

}

double g1(const double y)

{

return -a * y * y + (d - b) * y + f - c;

}

double g2(const double y)

{

return 2 * a * l1 + b * y + c;

}

double g3(const double x)

{

return b * x + d;

}

double g4(const double x)

{

return - 2 * a * l2 + b * x + d;

}

double norm(vector< vector<double> >& matr)

{

 double sk = 0;

   for(int i = 0; i < matr.size(); i++)

   {

       for(int j = 0; j < matr[i].size(); j++)

 {

  sk += matr[i][j] * matr[i][j];

 }

   }

 return sqrt(sk);

}

int copy_matr(const vector< vector<double> > & source, vector< vector<double> > & cop)

{

 for(int i = 0; i < cop.size(); i++)

{

 for(int j = 0; j < cop[i].size(); j++)

 {

  cop[i][j] = source[i][j];

 }

}

   return 0;

}

int sub_matr(const vector< vector<double> > & source1, const vector< vector<double> > & source2, vector< vector<double> > & cop)

{

 for(int i = 0; i < cop.size(); i++)

{

 for(int j = 0; j < cop[i].size(); j++)

 {

  cop[i][j] = source1[i][j] - source2[i][j];

 }

}

   return 0;

}

int out_matrix(const vector< vector<double> > & matr, char * name_file, char * coment)

{

   ofstream f_out(name_file, ios :: app);

   f_out << coment;

   int size = matr.size();

   for(int i = 0; i < size; i++)

   {

       int size_i = matr[i].size();

       for(int j= 0; j< size_i; j++)  if(!f_out.fail()) f_out << matr[i][j] << "\t";

       f_out << endl;

   }

   f_out << endl;

   return 0;

}

int main()

{

 char* name_file = "result.txt";

ofstream f_ou(name_file, ios :: trunc);

f_ou.close();

ofstream f_out(name_file, ios :: app);

vector< vector<double> > now(n1 + 1, vector<double>(n2 + 1));

vector< vector<double> > last(n1 + 1, vector<double>(n2 + 1));

vector< vector<double> > temp(n1 + 1, vector<double>(n2 + 1));

 for(int i = 0; i <= n1; i++)

{

 for(int j = 0; j <= n2; j++)

 {

  last[i][j] = 0;

 }

}

copy_matr(last, now);

out_matrix(last, name_file, "pochatkova:\n");

f_out << norm(last) << endl;

 int i = 0;

 do

{

 copy_matr(now, last);

 for(int j = 0; j <= n2 - 1; j++)

 { now[0][j] = (now[1][j] + h1 * g1(j * h2)) / (h1 + 1); }

 

 for(int j = 0; j <= n2 - 1; j++)

 { now[n1][j] = now[n1-1][j] + h1 * g2(j * h2); }

 for(int i = 1; i <= n1 - 1; i++)

 { now[i][0] = now[i][1] - h2 * g3(i * h1); }

 for(int i = 0; i <= n1; i++)

 { now[i][n2] = now[i][n2-1] + h2 * g4(i * h1); }

 for(int i = 1; i <= n1 - 1; i++)

 {

  for(int j = 1; j <= n2 - 1; j++)

  {

   now[i][j] = ( now[i-1][j] + now[i+1][j] + now[i][j-1] + now[i][j+1] ) / 4;

  }

 }

 i++;

 f_out << i << " ";

 out_matrix(now, name_file, "iter:\n");

 f_out << norm(last) << endl;

 sub_matr(now, last, temp);

} while( h1 * norm(temp) >= eps);

vector< vector<double> > real(n1 + 1, vector<double>(n2 + 1));

 for(int i = 0; i <= n1; i++)

{

 for(int j = 0; j <= n2; j++)

 {

  real[i][j] = u(i * h1, j * h2);

 }

}

out_matrix(real, name_file, "real:\n");

f_out << "norm(real)=" << norm(real) << endl;

 return 0;

}


 

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

76819. Поджелудочная железа, развитие, топография, строение, выводные протоки, внутрисекреторная часть, кровоснабжение, иннервация, региональные лимфатические узлы 185.67 KB
  Внутрисекреторная эндокринная часть железы создаёт инсулин глюкагон соматостатин липокаин и другие гормоны для обменных процессов и роста во всем организме. Развитие железы осуществляется из переднего и заднего выростов эпителия первичной кишки в месте образования дуоденум. Аномалия развития добавочные дольки железы. Масса органа 80 г длина 1418 см ширина 9 см толщина 23 см внутрисекреторная часть составляет 12 от массы железы.
76820. Верхний этаж брюшной полости 180.02 KB
  Брюшина верхнего этажа с диафрагмы переходит на выпуклую диафрагмальную поверхность печени образуя серповидную венечную и треугольные связки которые отграничивают внебрюшинное поле печени прирастающее к диафрагме. В последней в направлении справа налево располагается холедох воротная вена собственная артерия печени. Желудок брюшина покрывает интраперитонеально переходя на него с печени по малому сальнику. Париетальная брюшина в верхнем этаже образует три сумки: печеночную для правой и квадратной долей печени преджелудочную для...
76821. Топография брюшины в среднем и нижнем этажах брюшной полости. Большой сальник. «Карманы» в стенках брюшной полости 185.59 KB
  Париетальная брюшина передней стенки живота образует между пупком и лобком складки и ямки. Ямки надпузырные правая и левая fosse suprvesicles dextr et sinistr между срединной и медиальными пупочными складками. Паховые ямки медиальные правая и левая fosse inguinlis dextr et sinistr между медиальными и латеральными пупочными складками латеральные паховые ямки: правая и левая кнаружи от латеральной складки они соответствуют внутреннему паховому кольцу. Через надпузырные ямки могут возникать скользящие грыжи когда стенкой...
76822. Нос и его полость 182.92 KB
  Корень носа отделяется от лба переносьем в виде пологой поперечной борозды. Различия носа определяются: формой спинки: выпуклая прямая вогнутая; длиной и положением корня носа: глубокое высокое среднее; направлением ноздрей: кверху книзу горизонтально; очертанием верхушки: тупая острая средняя. Скелет носа образован фиброзной тканью хрящами и костями. Фиброзная перепонка находится в передней части перегородки носа покрыта кожей.
76823. Гортань (ларингс) 183.27 KB
  Скелет гортани образуют хрящи и их соединения между собой. Связки и суставы гортани Орган связывает с подъязычной костью щитовидноподъязычная мембрана состоящая из непарной срединной связки и парных боковых правой и левой. В желудочковой части гортани находятся преддверные и голосовые связки. Эластический конус это фиброзноэластическая мембрана гортани расположенная непосредственно под слизистой оболочкой в нижней части органа т.
76824. Мышцы гортани 181.17 KB
  Гортань лежит на уровне от IV до VIVII шейных позвонков имея спереди и по бокам щитовидную железу поверхностную и трахеальную фасции подподъязычные мышцы; сзади глотку вверху подъязычную кость. Мышцы гортани подразделяются на три группы: расширители дилататоры голосовой щели суживатели констрикторы напряжители тензоры голосовых связок. Мышцырасширители дилататоры.
76825. Трахея и бронхи 184.75 KB
  Она начинается от гортани на уровне VI шейного позвонка заканчивается на уровне IV V грудных позвонков делением на два главных бронха. Приносящие лимфатические сосуды впадают в глубокие шейные лимфатические узлы внутренние яремные а также в трахебронхиальные пред и паратрахеальные узлы. На уровне IVV грудных позвонков трахея образует раздвоение бифуркацию и переходит в правый и левый главные бронхи или иначе обозначая в бронхи первого порядка.
76826. Легкие (пульмо, пневмон) 181.97 KB
  Закладки легких на 6й неделе достигают грудной полости где соматоплевра образует два плевральных мешка и покрывает легкие висцеральным листком. Ритмические сокращения зачатков легких начинаются на 13й неделе эмбрионального развития а с рождением они переходят в дыхательные движения. Сегмент участок доли имеет основание обращенное к поверхностям легких верхушку направленную к корню. Сегментарному строению легких соответствует ветвление бронхиального дерева и легочной артерии.
76827. Корни легких 180.58 KB
  Корень легкого состоит из главного бронха легочной артерии верхней и нижней легочных вен; лимфатических сосудов и узлов нервов переднего и заднего легочного сплетения. Корень располагается в воротах легкого. Они представляют собой овальное углубление на медиальной поверхности легкого которое делит ее на позвоночную и медиастинальную части. В топографии составляющих корня легкого имеется существенное различие.