87808

Сгущение сеток

Лекция

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

Конечно разностная схема (5) содержит два временных слоя: верхний и текущий T. Задача состоит в переходе от известной функции Т к искомой на верхнем слое. КРС (5) является явной потому что ее решение вычисляется по явным формулам Распишем СЛАУ в неявную схему, заменив производную по времени назад.

Русский

2015-04-23

195.04 KB

0 чел.

Сгущение сеток

  1.  Введение.

Рассмотрим сгущение сетки с помощью решения диф. ур-я.

             (1)

t=0 : T=0    (2)

x=0 : T[0]=0            (3)

x=1 : T[N]=   (4)

Уравнения (1)-(4) составляют систему , которая на каждом временном слое j представляет собой СЛАУ.

Распишем СЛАУ

   ,    (5)

.

Конечно разностная схема (5) содержит два временных слоя : верхний  и текущий T.

Задача состоит в переходе от известной функции Т к искомой  на верхнем слое.

КРС (5) является явной потому что ее решение вычисляется по явным формулам  

Распишем СЛАУ в неявную схему, заменив производную по времени назад.

, где  ;  ;

   T[0]=0;      T[N] = .

Ее можно переписать в матричном виде AT=F, где А матрица коэффициентов, Т искомая сеточная функция , F заданный вектор краевой задачи. .

AT=F

Видим, что получили 3ехдиагональную матрицу, решаем ее методом прогонки(Томаса).

Он основывается на предположении, что искомые неизвестные связаны рекуррентным соотношением:

 где  i=n-1…1

Где α,β – прогоночные коэффициенты:


  1.  Результаты

N=20 – кол-во узлов

Зеленый график – алгебраический способ сгущения

Синий график – сгущение с помощью решения ДУ


N=51 – кол-во узлов

α=2 сгущение вокруг точки 0.4

Зеленый график – алгебраический способ сгущения

Синий график – сгущение с помощью решения ДУ


N=51 – кол-во узлов

α=2 сгущение вокруг точки 0.2

Зеленый график – алгебраический способ сгущения

Синий график – сгущение с помощью решения ДУ


  1.  Приложение

Код программы в С++:

#include <iostream>

#include <fstream>

using namespace std;

const double pi=3.1415926535;

const int n=51;

double h=1.0/(n-1);

double x[n],y[n]; //y=f(x) - д.у.

double a[n],b[n]; //прогоночные коэф

double alpha=2; //показатель алгебр. сгущения/разряжения

double k(double x)

{

 if(x>=0)

 if(x<0.3)

 return 1;

 if(x>=0.3)

 if(x<=0.4)

 return 1;

 if(x>0.4)

 if(x<0.9)

 return 5;

 if(x>=0.9)

 if(x<=1)

 return 1;

}

double A(double x,double y)//x=x[i] y=x[i-1]

{

 return (k(x)+k(y))/(2*h*h);

}

double B(double x,double y)//x=x[i] y=x[i+1]

{

 return (k(x)+k(y))/(2*h*h);

}

double C(double x,double y,double z)//x=x[i+1] y=x[i] z=x[i-1]

{

 return -(k(y)+k(x))/(2*h*h) - (k(y)+k(z))/(2*h*h);

}

void progonka()

{

y[0]=0;

a[0]=0;

b[0]=0;

 for(int i=0;i<n-2;i++)

{

 a[i+1]=-B(x[i],x[i+1])/(A(x[i],x[i-1])*a[i]+C(x[i+1],x[i],x[i-1]));

 b[i+1]=(-A(x[i],x[i-1])*b[i])/(A(x[i],x[i-1])*a[i]+C(x[i+1],x[i],x[i-1]));

}

y[n-1]=1;

 

 for(int i=n-2;i>0;i--)

 y[i]=a[i]*y[i+1]+b[i];

}

void al(double z)

{

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

 if(x[i]<z)

  y[i]=z*(1-pow((z-x[i])/z,alpha));

 else

  y[i]=z+pow((x[i]-z)/(1-z),alpha)*(1-z);

}

void main()

{

 ofstream fd("1.txt");

 ofstream fa("2.txt");

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

 x[i]=i*h;

progonka();

 for(int i=0;i<n;i++) //запись ду

 fd<<h*i<<"\t"<<y[i]<<endl;

al(0.2);

 for(int i=0;i<n;i++) //запись ал

 fa<<h*i<<"\t"<<y[i]<<endl;

 system("pause");

}


Код программы в Matlab:

A = load('1.txt'); % считываем данные

x1 = A(:,1); % первый столбец

y1 = A(:,2); % второй столбец

 

B = load('2.txt'); % считываем данные

x2 = B(:,1); % первый столбец

y2 = B(:,2); % второй столбец

 

plot(x1,y1,x2,y2) % рисуем

%axis([0  1  0  1])


 

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

18225. Поняття інформаційних системи, б/д - визначення, властивості, етапи розвитку, класифікація; інформаційна модель концептуального рівня 94.5 KB
  Поняття інформаційних системи б/д визначення властивості етапи розвитку класифікація; інформаційна модель концептуального рівня. 1.1. Поняття інформаційної системи. При самому загальному підході інформаційну систему ІС можна визначити як сукупність організац
18226. Реляційне числення. Мова Альфа 87.5 KB
  Реляційне числення. Мова Альфа Реляційне числення Кодда є одним із найважливіших наріжних каменів теорії реляційних моделей баз даних. У СУБД що існували до появи реляційного підходу було багато засобів для обробки даних і формулювання запитів. Основою для їх р
18227. Логічне проектування баз даних 106.5 KB
  Логічне проектування баз даних. Функціональна залежність. При логічному проектуванні баз даних вирішуються проблеми відображення обєктів предметної області в абстрактні обєкти моделі даних. Це відображення не повинно бути у протиріччі з семантикою предметної
18228. Накриття множин залежності 112.5 KB
  Накриття множин залежності. Стосовно реляційного відношення R ми можемо розглядати множину функціональних залежностей F які визначені на ньому. У.Армстронг досліджуючи властивості таких функціональних залежностей виділив дві групи: система R система Р. Пізніше бу
18229. Особливості мови QBE в середовищі СУБД Paradox 75 KB
  Особливості мови QBE в середовищі СУБД Paradox Реалізація мови QBE в СУБД Paradox є однією з найближчих по функціональним можливостям та по концептуальній схемі до тієї версії яку запропонував Zloof. Але дрібних відмінностей всетаки багато. Функція Print P задається за допом
18230. Query-By-Example 144.5 KB
  QueryByExample Семантична основа мови теорія відображень. QBE розшифровується як Query By Example запит за зразком є мовою запитів реляційних баз даних. Це графічна мова запитів. Основний спосіб роботи з використанням цієї мови полягає в тому щоб у надані бланки таблиць бази ...
18231. Реляційна модель баз даних. Мови запитів 119.5 KB
  Реляційна модель баз даних. Мови запитів. Теоретичні основи реляційної моделі баз даних були закладені Е.Коддом на початку 70х років [1] і спочатку дійсно мали чисто теоретичний характер. На відміну від поширених на той час систем з ієрархічними чи мережаними типами стр
18232. SQL – абревіатура від Structured Query Language (структурована мова запитів) 231.5 KB
  SQL SQL абревіатура від Structured Query Language структурована мова запитів. Мова SQL найбільш поширена мова запитів для реляційних баз даних. Її перші версії називались SEQUEL тому часом SQL називають сіквел але більш правильно його називати ескюел. Однією з головних переваг мо...