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;

}


 

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

40052. ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ Е.В.Сидиряков 343.5 KB
  Информационная технология (ИТ) — совокупность методов и способов получения, обработки, представления информации, направленных на изменение ее состояния, свойств, формы, содержания и осуществляемых в интересах пользователей на основе производственных и программно-технологических средств, объединенных в технологическую цепочку, обеспечивающую сбор, хранение, обработку, вывод и распространение информации.
40053. СИСТЕМЫ ПРОГРАММИРОВАНИЯ 87.5 KB
  2 Что такое системы программирования их состав. Языки программирования. Машинноориентированные системы программирования.
40054. Лекции по информационным системам и технологиям 162.5 KB
  Понятие Автоматизированных Информационных Систем АИС и их классификация АИС совокупность информации экономикоматематических методов ЭММ и моделей технических программных технологических средств и специалистов предназначенную для обработки информации и принятия управленческих решений. По видам процессов управления различают следующие их виды: АИС управления технологическими процессами АИС организационного управления АИС управления организационнотехнологическими процессами АИС научных исследований АИС обучающие По сфере...
40055. Управление информационными ресурсами предприятия и источники данных 665 KB
  Управление информационными ресурсами предприятия и источники данных. Информационные хранилища данных. Загрузка данных в хранилище. Развитие систем управления базами данных.
40056. Обеспечение безопасности информационных ресурсов предприятия 365 KB
  Основы организации и обеспечения защиты информации. Защита информации на ПЭВМ. Защита информации в информационных сетях. Методы защиты информации в компьютерных системах.
40057. Интернет и его применение в деятельности предприятия 298 KB
  Уровни работы сети. Сеть priori предполагалась ненадежной: любая часть сети может исчезнуть в любой момент. Передача данных в сети была организована на основе протокола Internet – IP. Протокол IP – это правила и описание работы сети.
40058. Оценка экономической эффективности применения ИТ в деятельности предприятия 900 KB
  Оценка экономической эффективности CRMпроекта. Метод оценки эффективности применения CRM. Коэффициенты оценки эффективности применения CRM. Проблемы внедрения CRMсистем.
40059. Современные информационные технологии и системы в экономике 334 KB
  Современные информационные технологии и системы в экономике. Чем точнее и объективнее информация находящаяся в распоряжении системы управления чем полнее она отражает действительное состояние и взаимосвязи в объекте управления тем обоснованнее поставленные цели и реальные меры направленные на их достижение. Информационное обеспечение – это часть системы управления которая представляет собой совокупность данных о фактическом и возможном состоянии элементов управления и внешних условий функционирования процесса а также о логике изменения и...
40060. Корпоративные информационные системы масштаба предприятия 986 KB
  Системы управления отношениями с клиентами CRM. Определение CRMсистемы. Функциональность и коммуникации CRM. Преимущества применения CRM.