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

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

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

(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 и запишем (1) к виду удобному для применения метода прогонки:

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

(3)

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

Для более точного аппроксимирования 2-го начального условия разложим u(x,y )

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

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

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

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

в узле(0,1):

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

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

(7)

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

(2):,тогда:

(8)

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

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

Обозначим , тогда, используя (7),(5) и (6) получим систему:

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

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

Методом прогонки находим 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 приведен в приложении (стр. 4).

ПРИЛОЖЕНИЕ

Программа для численного решения задачи на ПК в среде MATLAB.

% NEYAV

% Решение краевой задачи с применением НЕЯВНОЙ разностной схемы

%------------- ОПРЕДЕЛЕНИЕ ЧИСЛА РАЗБИЕНИЙ ПО ОСЯМ x,y---------------

M=10; N=10;

%---ОПРЕДЕЛЕНИЕ ШАГОВ СЕТКИ:a=b/c,ГДЕ b-ПРЕДЕЛ ВЫЧИСЛЕНИЙ ПО ОСИ x ИЛИ y

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

%--------------ОПРЕДЕЛЕНИЕ РАБОЧИХ КОНСТАНТ ---------------------------

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

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

%------------- ЗАПОЛНЕНИЕ МАТРИЦЫ U(x,y) 1-ым НАЧАЛЬНЫМ УСЛОВИЕМ----

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;

%------------ЭТАП ЗАПОЛНЕНИЯ МАТРИЦЫ U(x,y) 2-ым НАЧАЛЬНЫМ УСЛОВИЕМ----

%------------1) Определение прогоночных коэффициентов-------------------

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;

%------------2) Определение граничных прогоночных коэффициентов---------

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;

%------------ ОПРЕДЕЛЕНИЕ U(i,2) МЕТОДОМ ПРОГОНКИ---------------

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;

%------------ЭТАП ЗАПОЛНЕНИЯ МАТРИЦЫ U(x,y) ---------------------------

%------------1) Определение прогоночных коэффициентов-------------------

for i=1:M-1, A(i)=g2; B(i+1)=g2; C(i+1)=1+2*g2; end

%------------2) Определение граничных прогоночных коэффициентов---------

A(M)=0; B(1)=2*g2; C(1)=1+2*h*g2+2*g2; F(1)=t2*(t+5*t2);

C(M+1)=1;

%------------ ОПРЕДЕЛЕНИЕ U(i,j) МЕТОДОМ ПРОГОНКИ---------------

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

for j=2:N+1,

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,15);pause;

for j=0:N,

i=1:1:M+1;

u1=u(i,j+1)

plot(i,u1),pause;

hold on

end;hold off

mesh(u);

Результаты программы при шаге 0.1:

Значения U(x,y)

Столбцы с 0-го по 5-ый:

Соседние файлы в папке MPM_5B