Решение уравнений параболического типа методом сеток

Автор работы: Пользователь скрыл имя, 25 Мая 2013 в 22:15, лабораторная работа

Краткое описание

1. Цель работы:
Приобретение навыков решения уравнений параболического типа методом сеток.

Прикрепленные файлы: 1 файл

лаб6.docx

— 133.08 Кб (Скачать документ)

 

  1. Цель работы:

 

Приобретение  навыков решения уравнений параболического  типа методом сеток.

 

  1. Теоретические сведения:

 

Требуется найти решение уравнения

                                 (1)

в области   , удовлетворяющее условиям

                                      (2)

Разобьём  область  прямыми

 ;

где  - шаг по оси ; -шаг по оси .

Обозначим через  .

Заменив в каждом внутреннем узле производные конечно-разностными отношениями по явной схеме, получим систему вида

,    (3)

Преобразовав её, будем иметь

,(4)

где  ;   ;   .

В граничных узлах

              ;                                                   (5)

                                 ,

В начальный момент времени

                                                                                                                               (6)

Эта разностная схема устойчива  при любом  .

Будем решать систему уравнений (4),(5),(6) методом  прогонки.

Для этого положим

,                                    (7)

где  пока неизвестные коэффициенты.

Тогда

.                                  (8)

Подставив значение (7) в (4), получим

Откуда

                                               (9)

Из сравнения (7) и (9) видно, что

,                                            (10)

     ( )                  (11)

Для из (4) имеем

Откуда 

или

Сравнивая (7) при с последним выражением, получим

                                                                                  (12)

                                                               (13)

Таким образом, сначала проводим прямой ход, вычисляя коэффициенты и по формулам (12),(13) и (10),(11). Затем осуществляем обратный ход по формуле (7). Последовательно находим

   

………………………………………………..

 

  1. Задание:

Методом сеток ( с использованием метода прогонки) найти приближенное решение уравнения

в области  , удовлетворяющее условиям

взяв 

 

 

 

 

 

 

 

 

 

 

 

 

  1. Текст программы:

 

#include <stdio.h>

#include <conio.h>

#include <math.h>

 

#define H 0.1

#define L 0.01

#define P 1.0

#define T 0.05

#define PI 4.0*atan(1.0)

#define S H*H/L

 

double f(int i, int j)

{

double x=H*i, t=L*j;

return exp(t)*x;

}

 

double phi(int i)

{

double x=H*i;

return x*(1-x);

}

 

double mu1(int j)

{

double t=L*j;

return sin(t);

}

 

double mu2(int j)

{

double t=L*j;

return 1-cos(t);

}

 

void main()

{

int i,j,n,m;

double **u,*a,*b;

 

clrscr();

n=ceil(P/H);

m=ceil(T/L);

a=new double[n-1];

b=new double[n-1];

u=new double*[n+1];

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

u[i]=new double[m+1];

 

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

u[i][0]=phi(i);

for(j=0;j<m;j++)

{

u[0][j+1]=mu1(j+1);

a[0]=1.0/(2.0+S);

b[0]=u[0][j+1]+u[1][j]*S+f(1,j+1)*H*H;

for(i=1;i<n-1;i++)

{

a[i]=1.0/(2.0+S-a[i-1]);

b[i]=a[i-1]*b[i-1]+u[i+1][j]*S+f(i+1,j+1)*H*H;

}

 

u[n][j+1]=mu2(j+1);

for(i=n-1;i>0;i--)

u[i][j+1]=a[i-1]*(b[i-1]+u[i+1][j+1]);

}

 

printf("t \\ x");

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

printf("%6.2f",H*i);

printf("\n");

for(j=0;j<=m;j++)

{

printf("\n%.2f ",L*j);

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

printf("%6.2f",u[i][j]);

}

 

delete a;

delete b;

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

delete u[i];

delete[] u;

printf("\n\nPress any key to continue...");

getch();

}

 

 

 

 

 

 

Пример работы программы:

 

 

 

 

 


Информация о работе Решение уравнений параболического типа методом сеток