Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЧМ (МП-3) / Курсовые / Курсач разностные схемы / Курсач разностные схемы(v5)

.doc
Скачиваний:
104
Добавлен:
17.04.2013
Размер:
444.93 Кб
Скачать

Содержание

Постановка задачи 3

Решение задачи с помощью явной разностной схемы 4

1. Аппроксимация дифференциального уравнения 4

2. Аппроксимация 1-го начального условия 4

3. Аппроксимация 1-го граничного условия 4

4. Аппроксимация 2-го начального условия 5

5. Аппроксимация 2-го граничного условия 5

6. Устойчивость решения. 5

Решение задачи с помощью неявной разностной схемы 6

1. Аппроксимация дифференциального уравнения 6

2. Аппроксимация 1-го начального условия 6

3. Аппроксимация 2-го начального условия 6

4. Аппроксимация 2-го граничного условия 6

5. Аппроксимация 1-го граничного условия 6

6. Вычисления прогоночных коэффициентов 7

Приложение 9

Явная схема 9

Результат 10

Неявная схема 11

Результат 12

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ : 13

Постановка задачи

Задание: получить приблизительное решение данной краевой задачи уравнения в частных производных математической физики методом сеток.

(1)

0 < x,y < 1 (2).

Данное уравнение является уравнением гиперболического типа и физически отражает процесс колебания струны. Искомое решение U=U(x,y) – вертикальное отклонение струны в точке х в момент времени y.

Данная краевая задача состоит в нахождении функции U=U(x,y), удовлетворяющей уравнению (1), а также заданным начальным и граничным условиям (2).

Граничное условие первого рода U=U(1,y) определяет закон движения правого конца струны. Для левого конца в качестве граничного условия задано так называемое условие «упругого конца» (граничное условие третьего рода):

Ux (0,y)=U(0,y) .

Начальные условия U(x,0)=0 и Uy(x,0)=1 задают начальную форму струны и распределение скоростей в начальный момент времени.

Функция f(x,y) имеет смысл плотности внешней силы, рассчитанной на единицу длины.

Решение задачи с помощью явной разностной схемы

В явной разностной схеме значение сеточной функции на последующем слое полностью определяется значением её на предыдущем слое по рекуррентным формулам. В данной задаче аппроксимацию дифференциальных операторов проведём по следующим шаблонам:

1. Аппроксимация дифференциального уравнения

Для сведения задачи к явной разностной схеме используем шаблон "крест".

Получаем конечно-разностную систему:

Обозначим g=/h и выразим U(i,j+1) через остальные значения сеточной функции, входящие в уравнение:

(3)

Уравнение (3) должно выполняться для всех внутренних узлов сетки. Для того чтобы система стала полностью определенной, необходимо дополнить ее уравнениями, получаемыми из аппроксимации краевых и начальных условий.

2. Аппроксимация 1-го начального условия

(4)

3. Аппроксимация 1-го граничного условия

Аппроксимация краевого условия третьего рода используется только для нахождения решения на границе i=0 в явном виде:

(5)

4. Аппроксимация 2-го начального условия

Для более точного аппроксимирования 2-го начального условия разложим U(x,y) в окрестности точки (x,0) по формуле Тейлора и, используя 1-ое и 2-ое начальные условия, перейдем к конечным разностям:

(6)

Принимая во внимание уравнение (4) получаем:

(7)

Формула (7) используется на начальном этапе для вычисления значения функции U(x,y) на первом слое, по известным значениям функции на нулевом слое и на границе.

5. Аппроксимация 2-го граничного условия

(8)

Порядок аппроксимации данной разностной схемы

6. Устойчивость решения.

Для уравнений гиперболического типа метод спектральных гармоник приводит к следующему условию устойчивости:

(9)

т.е. если это условие устойчивости не будет выполнено, то в процессе рекуррентного решения возможно накапливание ошибок от слоя к слою.

Отсюда, в частности, получаем для явной схемы () условие устойчивости Куранта-Леви: .

Итак U(i,j ) при j=0 и j=1 определены. Включается рекуррентная процедура описываемая уравнением (3) и вычисляется U(i,j ) для всех i=1,2,...,m-1 , для каждого фиксированного j=2,...,n-1.

Решение задачи с помощью неявной разностной схемы

Рассмотрим снова нашу краевую задачу . Для аппроксимации уравнения используем Т-образный пятиточечный шаблон.

Уравнение аппроксимируется следующими уравнениями :

1. Аппроксимация дифференциального уравнения

(10)

Обозначим g=/h и приведем (10) к виду удобному для применения метода прогонки:

(11)

2. Аппроксимация 1-го начального условия

, (12)

3. Аппроксимация 2-го начального условия

Для более точного аппроксимирования 2-го начального условия разложим u(x,y) в окрестности точки (x,0) по формуле Тейлора и используя 1-ое и 2-ое начальное условия перейдем к конечным разностям:

(13)

Запишем (13) к виду удобному для применения метода прогонки:

(14)

4. Аппроксимация 2-го граничного условия

(15)

5. Аппроксимация 1-го граничного условия

в узле(0,1):

(14) при i=0 будет:

исключая фиктивный узел, получим:

(16)

при j2, в узле (0,j):

(11):, тогда:

(17)

6. Вычисления прогоночных коэффициентов

Сначала найдем u(i,j) на слое j=1. Определим прогоночные коэффициенты.

Обозначим , тогда, используя (16),(14) и (15) получим систему:

получим прогоночные коэффициенты:

Теперь вычислим граничные прогоночные коэффициенты:

Методом прогонки находим u(i,1), где i=1...m;

Теперь зная значения j=0,1 находим u(i,j ), где j=2...n.

Теперь вычислим граничные прогоночные коэффициенты:

Методом прогонки находим u(i,j), где i=1...m ,j=2..n ;

Приложение

Ниже приведены две программы для численного решения задачи на ПК в среде MATLAB и результаты их выполнения для явной и неявной разностных схем.

Явная схема

function y(M,N);

h=1/M;

t=1/N;

if t>h

for i=1:10,disp(' ');,end;

disp(' ВОЗМОЖНА НЕУСТОЙЧИВОСТЬ!!!');

disp(' (невыполнено условие устойчивости Куранта-Леви:t<=h)!!!');

pause

end;

t2=t^2;

h2=h^2;

g=t2/h2;

U=zeros(M+1,N+1);

S=zeros(M+1);

% (8)

for j=1:N+1

U(M+1,j)=(j-1)*t;

end;

% (7)

for i=2:M

U(i,2)=t+5*t2/(1+((i-1)*h)^2);

S(i)=U(i,2);

end;

% (5.1)

U(1,2)=(t+5*t2+g*U(2,2))/(1+g*(1+h));

% (3)

for i=2:M

U(i,3)=2*(1-g)*U(i,2)+g*(U(i-1,2)+U(i+1,2))-U(i,1)+(10*t2)/(1+(i*h)^2+t2);

end;

for j=3:N

for i=2:M

U(i,j+1)= 2*(1-g)*U(i,j)+ g*(U(i-1,j)+U(i+1,j))-U(i,j-1) + (10*t2)/( 1+ ((i-1)*h)^2 + ((j-1)*t)^2 );

end;

% (5.2)

U(1,j)=( 2*U(1,j-1) - U(1,j-2) + t2 * (10/(1+(t*(j-2))^2)) +2*g*U(2,j) ) /(1+2*g*(1+h));

end;

j=N+1;

U(1,j)=( 2*U(1,j-1) - U(1,j-2) + t2 * (10/(1+(t*(j-2))^2)) +2*g*U(2,j) ) /(1+2*g*(1+h));

contour(U,20);pause;

for j=0:N,

i=1:1:M;

u1=U(i,j+1);

plot(i,u1);

end;

mesh(U);

end;

Результат

U [10x15]=

0 0.1430 0.3597 0.5587 0.6670 0.7004 0.7233 0.7682 0.8189 0.8498 0.8502

0 0.1490 0.3853 0.5224 0.5761 0.6361 0.7342 0.8255 0.8732 0.8888 0.8841

0 0.1462 0.3756 0.6908 0.9922 1.1891 1.3067 1.4270 1.5577 1.6248 1.5813

0 0.1422 0.3590 0.6569 1.0308 1.4268 1.7433 1.9199 1.9937 2.0273 2.0136

0 0.1377 0.3411 0.6180 0.9627 1.3599 1.7624 2.0810 2.2358 2.2310 2.1447

0 0.1331 0.3237 0.5734 0.8644 1.1743 1.4892 1.7954 2.0483 2.1728 2.1238

0 0.1288 0.2954 0.4854 0.6825 0.8831 1.0890 1.2991 1.5038 1.6725 1.7472

0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000

Неявная схема

function neyav(M,N)

h=1/M; t=1/N;

u=zeros(M+1,N+1);

h2=h^2; t2=t^2;

g2=t2/h2;

for i=0:M

u(i+1,1)=0;

end;

A=zeros(M,1);C=zeros(M+1,1);B=A;A1=A;F=C;B1=C;

for i=1:M-1

A(i)=g2/2;

B(i+1)=g2/2;

C(i+1)=1+g2;

F(i+1)=t+5*t2/(1+h2*i^2);

end;

A(M)=0; B(1)=g2;

C(1)=1+h*g2+g2;

C(M+1)=1;

F(1)=t+5*t2;

F(M+1)=t;

A1(1)=B(1)/C(1);

B1(1)=F(1)/C(1);

for i=2:M

A1(i)=B(i)/(C(i)-A(i-1)*A1(i-1));

B1(i)=(F(i)+A(i-1)*B1(i-1))/(C(i)-A(i-1)*A1(i-1));

end;

B1(M+1)=(F(M+1)+A(M)*B1(M))/(C(M+1)-A(M)*A1(M));

u(M+1,2)=B1(M+1);

for i=M:-1:1

u(i,2)=A1(i)*u(i+1,2)+B1(i);

end;

for i=1:M-1

A(i)=g2;

B(i+1)=g2;

C(i+1)=1+2*g2;

end

A(M)=0;

B(1)=2*g2;

C(1)=1+2*h*g2+2*g2;

C(M+1)=1;

A1(1)=B(1)/C(1);

B1(1)=F(1)/C(1);

F(1)=t2*(t+5*t2);

for j=2:N

for i=1:M-1

F(i+1)=2*u(i+1,j)-u(i+1,j-1)+10*t2/(1+h2*i^2+t2*j^2);

end;

for i=2:M

A1(i)=B(i)/(C(i)-A(i-1)*A1(i-1));

B1(i)=(F(i)+A(i-1)*B1(i-1))/(C(i)-A(i-1)*A1(i-1));

end;

F(M+1)=j*t;

B1(M+1)=(F(M+1)+A(M)*B1(M))/(C(M+1)-A(M)*A1(M));

u(M+1,j+1)=B1(M+1);

for i=M:-1:1

u(i,j+1)=A1(i)*u(i+1,j+1)+B1(i);

end;

end;

contour(u,20);pause;

for j=0:N,

i=1:1:M;

u1=u(i,j+1);

plot(i,u1);

end;

mesh(u);

end;

Результат

M=30, N=30

u[10x10] =

0 0.1414 0.2575 0.3850 0.5108 0.6285 0.7330 0.8200 0.8857 0.9269 0.9415

0 0.1469 0.3369 0.5410 0.7423 0.9305 1.0978 1.2370 1.3421 1.4080 1.4315

0 0.1471 0.3644 0.6200 0.8856 1.1401 1.3685 1.5594 1.7038 1.7950 1.8292

0 0.1454 0.3693 0.6489 0.9556 1.2611 1.5417 1.7789 1.9594 2.0748 2.1209

0 0.1429 0.3642 0.6489 0.9726 1.3064 1.6210 1.8918 2.1006 2.2367 2.2955

0 0.1399 0.3543 0.6320 0.9531 1.2906 1.6153 1.9002 2.1244 2.2750 2.3467

0 0.1366 0.3415 0.6038 0.9060 1.2248 1.5347 1.8113 2.0346 2.1912 2.2744

0 0.1331 0.3253 0.5641 0.8329 1.1135 1.3869 1.6350 1.8416 1.9944 2.0865

0 0.1288 0.3029 0.5076 0.7294 0.9564 1.1780 1.3829 1.5602 1.7005 1.7976

0 0.1210 0.2663 0.4240 0.5872 0.7518 0.9135 1.0672 1.2073 1.3287 1.4278

0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ :

1. В.Г. Долголаптев, В.Н. Земсков. Численные методы решения разностных уравнений математической физики. Методические указания к курсовой работе по высшей математике, МИЭТ 1987.

2. Сборник задач по математике. т.4 Методы оптимизации. Уравнения в частных производных. Интегральные уравнения. под ред. А.В. Ефимова, М. Наука 1990.

9

Соседние файлы в папке Курсач разностные схемы