Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция№12.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
737.79 Кб
Скачать

Листинг_№1

%Программа решения двухмерного уравнения

%теплопроводности (11) с помощью продольно-

%поперечной схемы

function heat_dim2

global a b vc0 r0 r1

%Определяем габариты области интегрирования

%по времени, направлениям x1 и x2, а также

%коэффициент теплопроводности и константу vc0,

%задающую амплитуду начального распределения

a=1; b=1; koef=0.5; vc0=100;

r0=0.2*min(a,b); r1=0.4*min(a,b);

%Задаем точность расчета eps и время счета T

eps=1e-8;

T=(a^2*b^2*log(1.0/eps))/(koef*pi^2*(a^2+b^2));

%Определяем число шагов по направлениям x1 и x2

N=51; M=51; h1=a/(N-1); h2=b/(M-1);

%Определяем сетки по x1 и x2

x1=0:h1:a; x2=0:h2:b;

%Рисуем начальное распределение в виде

%кольцевой области

for n=1:N

for m=1:M

z(n,m)=v0(x1(n),x2(m));

end

end

subplot(1,2,1); surf(x2,x1,z);

k=0;

%Формируем цикл расчетов с различными шагами по времени

for Nt=100:10:300

tau=T/(Nt-1);

%Определяем начальные данные в виде кольца

for n=1:N

for m=1:M

y(1,n,m)=v0(x1(n),x2(m));

end

end

%Определяем граничные условия при x1=0 и x1=a

for t=1:Nt

for m=1:M

y(t,1,m)=0; y(t,N,m)=0;

end

end

%Определяем граничные условия при x2=0 и x2=b

for t=1:Nt

for n=1:N

y(t,n,1)=0; y(t,n,M)=0;

end

end

%Организуем основной цикл интегрирования по времени

for t=1:(Nt-1)

p1=(0.5*tau*koef)/h1^2;

p2=(0.5*tau*koef)/h2^2;

%Находим решение на полуцелом временном слое,

%т.е. решаем уравнение (11.39)

for m=2:(M-1)

%Учитываем нулевое граничное при x1=0

alpha(2)=0; beta(2)=y(t,1,m);

for n=2:(N-1)

alpha(n+1)=p1/(1+p1*(2-alpha(n)));

beta(n+1)=(y(t,n,m)+p2*(y(t,n,m-1)-...

2*y(t,n,m)+y(t,n,m+1))+p1*beta(n))/...

(1+p1*(2-alpha(n)));

end

%Учитываем нулевое граничное при x1=a

ys(N,m)=y(t,N,m);

for n=N:-1:2

ys(n-1,m)=alpha(n)*ys(n,m)+beta(n);

end

end

%Находим решение на следующем временном слое,

%т.е. решаем уравнение (11.39')

for n=2:(N-1)

%Учитываем нулевое граничное при x2=0

alpha(2)=0; beta(2)=y(t,n,1);

for m=2:(M-1)

alpha(m+1)=p2/(1+p2*(2-alpha(m)));

beta(m+1)=(ys(n,m)+p1*(ys(n-1,m)-...

2*ys(n,m)+ys(n+1,m))+p2*beta(m))/...

(1+p2*(2-alpha(m)));

end

for m=M:-1:2

y(t+1,n,m-1)=alpha(m)*y(t+1,n,m)+beta(m);

end

end

end

%Находим норму решения эволюционной задачи в L2

s=0;

for n=1:N

for m=1:M

s=s+h1*h2*y(Nt,n,m)^2;

end

end

k=k+1;

w(k)=sqrt(s);

tt(k)=tau;

end

%Рисуем зависимость нормы решения ||y(Nt,n,m)||

%в L2 от tau

subplot(1,2,2); semilogy(tt,w);

%Определяем функцию начального распределения

function y=v0(x1,x2)

global a b vc0 r0 r1

r=sqrt((x1-0.5*a)^2+(x2-0.5*b)^2);

y=0;

if (r>=r0)&(r<=r1)

y=vc0*(r1-r)*(r-r0);

end

После работы кода программы листинга_№1 должен появиться график, примерный вид которого представлен на рис.1. Левый рисунок изображает трехмерный профиль начального распределения (12) задачи (11). Это распределение взято в несколько экзотической форме кольца. На правом рисунке приведен график зависимости нормы решения в точке t = T в зависимости от шага по времени продольно-поперечной разностной схемы. Красная пунктирная линия на графике обозначает выбранный уровень точности = 108. Отчетливо видно, что, начиная с некоторого порогового значения шага сетки , при всех меньших значениях шага достигается заданный уровень точности сходимости решения эволюционной задачи (11) к решению эллиптической задачи (10).

Рис.1. Счет на установление эволюционной задачи (11) вплоть до выхода на решение эллиптической задачи (10)

Выбор оптимального шага по времени. Из изложенной в предыдущем пункте процедуры счета на установление, следует важность выбора оптимального значения шага по времени между крайностями высокоточной аппроксимации и минимумом количества операций. Для исследования вопроса о величине оптимального шага по времени ограничимся рассмотрением двумерной задачи Дирихле в прямоугольнике:

(15)

Задаче (15) соответствует эволюционная задача вида:

, (16)

которую будем решать численно на равномерной сетке , , n = 0,1,…,N, m = 0,1,…,M, где h1 = a/N, h2 = b/M.

Для решения задачи (16) рассмотрим продольно-поперечную схему в форме:

и преобразуем ее в каноническую форму

, (17)

где

, (17)

(17)

В процессе численного решения уравнения (16) по схеме (17) при выходе на стационарное решение . В этом случае в пределе схема (17) переходит в неэволюционную разностную схему вида:

, (18)

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

Скорость затухания начальных данных можно исследовать методом разделения переменных. Нетрудно проверить, что собственные функции разностного оператора в прямоугольной области и на равномерной сетке представляются в виде:

, (19)

где q = 1,…,N1, r = 1,…,M1. Подставляя (19) в разностную схему (17) — (17) и полагая , находим для множителя, описывающего рост гармоники, следующую формулу

(20)

На рис.2 (левый график) приведен типичный трехмерный профиль множителя роста в зависимости от номеров гармоник q и r, которые пробегают значения 1,…,N1 и 1,…,M1 соответственно. Из рисунка видно, что наиболее медленно убывающие гармоники, т.е. те гармоники, модули которых наиболее близки к единице, находятся в окрестности четырех точек (q,r): (1,1), (N1,M1), (N1,1), (1,M1). На правом рис.2 приведен график зависимости сомножителя от q, пробегающего значения 1,…,N1. Видно, что сомножитель по модулю меньше единицы и близок к единице в окрестности q = 1 и q = N1. Считая параметр N достаточно большим, можно получить следующие оценки для сомножителя в окрестности значений параметра q = 1 и q = N1:

. (21)

Аналогично ведет себя второй сомножитель , который по абсолютной величине максимален либо при r = 1, либо при r = M1. В окрестности этих точек по аналогии с (21) и при M >> 1 можно записать:

. (21)

Рис.2. Трехмерный профиль множителя роста гармоник (20) и зависимость множителя q от q

Перемножая попарно (21), (21), найдем четыре множителя роста , , , наиболее приближенные по модулю к единице. На трехмерном профиле множителя роста, представленном на рис.2, отчетливо видны точки с максимально близкими по модулю значениями к единице. Найдем среднюю величину из четырех этих значений, тогда

(22)

Оптимальный шаг по времени 0 найдем, исходя из того, чтобы величина была минимальной. Дифференцируя (22) по и приравнивая результат к нулю, найдем оптимальное значение шага по времени

. (23)

На листинге_№2 приведен код программы построения трехмерного профиля для множителя роста гармоник (20) в зависимости от номеров гармоник q и r. Кроме того, код программы строит график зависимости сомножителя q от q. Оба графика построены, исходя из оптимального значения (23) шага по времени 0. После отработки кода программы листинга_№2 должен появиться график, примерный вид которого приведен на рис.2.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]