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;

}


 

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

78858. Проблема истины в познании 14.2 KB
  Проблема истины в познании. Важнейшая проблема в познании это проблема истины. Такое понимание истины было продолжено и материалистами Нового времени.в Софисты считали что объективной истины нет: Человек мера всех вещей.
78859. Интернализм и экстернализм в понимании механизмов научной деятельности 14.04 KB
  Анализируя многообразие течений философии науки можно выделить две различные стратегии: 1 интернализм; 2 экстернализм Экстерналистские взгляды впервые возникли еще в период становления классической науки и признают решающим движущим фактором развития науки внешние для нее обстоятельства – социальные экономические и т. По мнению экстерналистов не только возникновение науки но и дальнейшее ее развитие всецело определяется потребностями общества. Тем не менее все эксерналисты сходятся в том что решающее влияние на развитие науки оказывает...
78860. Научные революции и их роль в динамике научного знания 31 KB
  Научные революции и их роль в динамике научного знания В динамике научного знания особую роль играют этапы развития связанные с перестройкой исследовательских стратегий задаваемых основаниями науки. Основания науки обеспечивают рост знания до тех пор пока общие черты системной организации изучаемых объектов учтены в картине мира а методы освоения этих объектов соответствуют сложившимся идеалам и нормам исследования. Но по мере развития науки она может столкнуться с принципиально новыми типами объектов требующими иного видения реальности...
78861. Проблема роста научного знания у К. Поппера 29 KB
  Проблема роста научного знания у К. Говоря о росте знания он имеет в виду не его накопление а ниспровержение старых научных теорий и их замену лучшими научными теориями. В своей концепции он формулирует три основных требования к росту знания: 1 Новое знание должно исходить из новой простой идеи; 2 Новое знание должно приводить к представлению явлений которые до сих пор не наблюдались; 3 Новое знание должно выдерживать новые и строгие поверки В частности именно он ввёл понятие фальсифицируемости лат. flsus – ложный необходимого...
78862. Концепция исследовательских программ Лакатоса 30 KB
  Концепция исследовательских программ Лакатоса Лакатос автор теории и методологии научноисследовательских программ в рамках которых вслед за К. Лакатос полагает что основой теории научной рациональности должен стать принцип критицизма универсальный принцип всякой научной деятельности. Лакатос полагает что можно на протяжении длительного времени защищать любую теорию даже если эта теория ложна. Cуть концепции Лакатоса: Согласно Лакатосу в науке образуются не просто цепочки сменяющих одна другую теорий о которых пишет Поппер но...
78863. Эволюция концепции науки в позитивизме 29.5 KB
  Эволюция концепции науки в позитивизме. Позитиви́зм философское учение и направление в методологии науки определяющее единственным источником истинного действительного знания эмпирические исследования и отрицающее познавательную ценность философского исследования. Сущность позитивистской концепции соотношения философии и науки отражается во фразе О. Эталоном научного знания для позитивизма является естествознание методы которого автоматически переносятся на другие науки в том числе социальногуманитарные.
78864. Проблемы развития науки в постпозитивизме 13.56 KB
  Проблемы развития науки в постпозитивизме. философии науки развивается течение постпозитивизма. Постпозитивисты Поппер Мун Лакатос Фейрабенб Полани подвергли критике позитивистский идеал факта введя в анализ науки историческое социологическое и культурологическое измерение. Постпозитивизм общее название используемое в философии науки для обозначения множества методологических концепций пришедших на смену тем которые были присущи методологии логического позитивизма.
78865. Специфика социально-гуманитарного познания 14.44 KB
  Предмет социального познания мир человека а не просто вещь как таковая. Все указанные и им подобные моменты входят в процесс социального исследования и неизбежно сказываются на содержании получаемых в этом процессе знаний. между объектом и субъектом социального познания стоят письменные источники хроники документы и т. Текстовая природа социального познания характерная его черта.
78866. Философия в системе социально-гуманитарного знания 28.5 KB
  Философия в системе социально-гуманитарного знания. При изучении социально-культурных процессов и явлений общество культура человек в современной науке принято делать отличия социально-гуманитарного знания от естественного...