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;

}


 

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

33494. Необхідна оборона 27.5 KB
  підстава необхідної оборони складається з двох елементів а саме: 1 суспільно небезпечного посягання і 2 необхідності е його негайному відверненні чи припиненні Ознаки необхідної оборони визначені в ст. 36 КК характеризують: 1 мету оборони; 2 спрямованість об'єкт заподіяння шкоди; 3 характер дій того хто захищається; 4 своєчасність і 5 співрозмірність оборони. Мета необхідної оборони. 36 КК метою необхідної оборони є захист охоронюваних законом прав та інтересів особи яка захищається або іншої особи а також суспільних...
33495. Обєкт злочину 44 KB
  Об‘єкт як елемент складу злочину це цінності що охороняються кримінальним законом проти яких спрямоване злочинне діяння і яким воно може заподіяти або спричинити шкоду. Структура об‘єкта злочину та функціональне значення його компонентів: Охоронювані кримінальним законом цінності: 1.ПредметиНа що діє суб‘єкт злочину посягаючи на блага.
33496. Обєктивна сторона 30 KB
  Обєктивна сторона злочину — це зовнішня сторона (зовнішнє вираження) злочину, що характеризується суспільна небезпечним діянням (дією чи бездіяльністю), суспільна небезпечними наслідками, причинним
33497. Обмеження волі 25 KB
  Обмеження волі (ст. 61 КК) — це основний вид покарання, який полягає в триманні засудженого в кримінально-виконавчій установі відкритого типу — виправному центрі (статті 11, 16, 56 КВК) без ізоляції від суспільства
33498. Поняття неосудності 35.5 KB
  19 дається законодавче визначення поняття неосудності з якого випливає що неосудною визнається така особа яка під час вчинення суспільне небезпечного діяння передбаченого КК не могла усвідомлювати свої дії бездіяльність або керувати ними внаслідок хронічного психічного захворювання тимчасового розладу психічної діяльності недоумства або іншого хворобливого стану психіки. Медичний критерій окреслює всі можливі психічні захворювання що істотно впливають на свідомість і волю людини. Хоча і при цих захворюваннях можливі так звані...
33499. Структура кримінального закону 39.5 KB
  Тлумачення закону полягає у з'ясуванні і всебічному розкритті його змісту з метою його точного застосування. Тлумачення закону поділяється на види залежно від суб'єкта тлумачення прийомів засобів та обсягу тлумачення. Залежно від суб'єкта який роз'яснює закон розрізняють легальне або офіційне судове і наукове або доктринальне тлумачення. Легальним офіційним зветься тлумачення що здійснюється органом державної влади уповноваженим на те законом.
33500. Повторність злочинів 27 KB
  Повторність злочинів як випливає із цих статей КК припускає наявність таких ознак: а особою групою осіб вчинено два або більше самостійних одиничних злочинів. Види повторності злочинів. Два види повторності злочинів: 1 повторність злочинів не пов'язана з засудженням винного за раніше вчинений ним злочин; 2 повторність злочинів пов'язана з засудженням винного за раніше вчинений ним злочин.
33501. Позбавлення волі на певний строк 29 KB
  Позбавлення волі є основним покаранням і застосовується за вчинення злочинів що становлять значну тяжкість коли виходячи із характеру і ступеня їх суспільної небезпечності і з урахуванням особи винного необхідна його ізоляція від суспільства. Позбавлення волі пов'язане з істотними правообмеженнями для засудженого. На засудженого до позбавлення волі справляється певний вплив: він перебуває в умовах відповідного режиму залучається до праці а у разі необхідності до професійного і загальноосвітнього навчання з ним ведеться систематична...
33502. Поняття кримінального закону, його джерела 34 KB
  Кримінальний закон в найбільш широкому розумінні це система законодавчих актів України та імплементованих у них положень міжнародних договорів що містять норми кримінального права. Кримінальний закон у більш вузькому розумінні це законодавчий акт ВР України який містить одну кілька або систему взаємопов‘язаних і взаємоузгоджених кримінальноправових норм. Концептуальним джерелом яке містить норми прямої дії є Конституція України. Основним національним джерелом кримінального законодавства є КК України де сукупність...