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

Ращиков В.И

..pdf
Скачиваний:
100
Добавлен:
13.04.2015
Размер:
1.69 Mб
Скачать
(13.3)

 

 

 

 

2

 

 

aj =10.5 pj h,

bj = 2 qj h

,

где

 

cj =1

+0.5 pj h,

d j = f j h2

,

 

 

 

 

 

 

 

рj(хj), qj= q(xj), fj=f(xj).

Система уравнений имеет трехдиагональную матрицу, так как каждое уравнение содержит лишь три соседних неизвестных yj, у1. Экономным методом решения таких систем является метод прогонки, представляющий собой разновидность метода исключения Гаусса. В этом методе решение отыскивается в виде

yj = ξj+1yj+1 + ηj+1 (j = 1, 2, …, N–1),

где ξj+1, ηj+1 — пока не известные коэффициенты, называемые прогоночными.

Заменим j на j–1 и, подставляя yj–1 = ξjyj + ηj в уравнение (13.2), преобразуем его к виду

 

y j =

cj

y j+1 +

aj ηj

d j

 

 

 

 

 

 

 

.

 

 

bj aj ξj

bj aj ξj

 

Сравнивая теперь полученное yj

с (13.3),

находим рекуррентные

формулы для прогоночных коэффициентов

 

 

 

ξj+1 =

cj

, ηj+1 =

aj ηj d j

( j =1, 2, ..., N 1).

(13.4)

bj aj ξj

 

 

 

 

bj aj ξj

 

 

 

При j = 0, находим, что

 

ξ1 = 0, η1 = y0.

 

 

 

 

 

 

 

 

(13.5)

Таким образом, метод решения складывается из двух этапов. На первом этапе (прямой ход прогонки) вычисляются прого-

ночные коэффициенты по рекуррентным формулам (13.4) с известными начальными значениями (13.5).

На втором этапе (обратный ход прогонки) по формуле (13.3) вычисляются yj (j = N–1, N–2, …, 1) с учетом заданного краевого условия yN.

Погрешность решения имеет тот же порядок, с которым аппроксимируются производные, т. е. О(h2).

91

ВАРИАНТЫ ЗАДАНИЙ

Вычислить установившееся распределение концентрации газа в одномерной системе из краевой задачи

 

D

d 2u

=f(x) (0<x<l),

 

dx2

 

 

 

D = const;

 

 

 

 

u(0)=u0, u(l)=ul,

где D — коэффициент

диффузии, f (х) — плотность источни-

ков газовыделения.

 

 

 

 

ВАРИАНТЫ ФУНКЦИЙ

 

(0≤α≤x≤β≤l, β>α, β α<l, l,n,r,s=1÷3)

1) f(x)=

l (α ≤ x ≤β),

0

(0 x ≤ α,β ≤ x l);

c (x −α) / (γ −α) (α ≤ x ≤ γ)

2) f(x)= c (β− x) / (β− γ) (γ ≤ x ≤β)

 

(0 x < α,β < x l);

0

3)f(x)=|sin(πnx/l)|s;

4)f(x)=|cos(πnxr/l)|s;

 

 

r

(β− x)

s

(α ≤ x ≤ β)

5)f(x)= ( x −α)

 

 

 

0

(0 x < α, β< x l ).

 

 

 

 

 

 

ПРОГРАММИРОВАНИЕ

Функцию f(x) в правой части удобно описать с помощью под- программы-функции. Для d1, ξ1, η1 надо задать одномерные массивы.

Для проверки программы можно предварительно решить тестовую задачу при f(x) 0,имеющую аналитическое решение

92

и(х)0+(и1-u0)x/l,

или тестовую задачу при f(x) D, имеющую аналитическое реше-

ние

u(x)=x2/2+Ax+u0, A=(u1-u0-0.5l2)/l.

Блок-схема программы приведена на рис. 13.1. В цикле 3-5 вычисляются элементы трёхдиагональной матрицы и правые части системы. В цикле 7-9 находятся прогоночные коэффициенты (аналог прямого хода метода Гаусса для трёхдиагональной матрицы), а в цикле 10-12 – искомые величины, которые затем выводятся в виде графика.

Начало 1

 

Начальные

 

 

2

 

 

данные

 

 

 

 

 

 

 

 

 

 

 

Цикл

 

 

 

 

 

 

 

 

по j= 1,n

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

aj ,bj ,cj , d j

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Цикл

 

5

 

по j

 

 

 

 

 

 

 

6

ξ(1) = 0, η(1) = y0

7

Цикл

 

 

по j= 1,n-1

 

 

 

 

 

ξ(j+1) =

 

cj

 

 

8

b

a

ξ(j)

 

 

 

j

j

 

 

η(j+1) =ajη(j)dj bj ajξ(j)

9

 

Цикл

 

 

 

по j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

Цикл

 

 

 

 

 

по j=n-1,1

 

11

 

 

 

 

 

 

y( j) = ξ( j +1) × ×y( j +1) ( j +1)

12Цикл по j

13 Вывод

14 Конец

Рис. 13.1. Блок-схема программы решения краевой задачи

93

СОДЕРЖАНИЕ ОТЧЕТА

Отчет должен содержать:

формулы и параметры для конкретного варианта;

текст программы;

результаты решения, графики зависимостей.

КОНТРОЛЬНЫЕ ВОПРОСЫ

1.Как ставится и решается линейная краевая задача для обыкновенного дифференциального уравнения?

2.Как строится метод прогонки?

3. Какова погрешность данного метода?

4.Каковы условия устойчивости метода прогонки?

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

94

Задание № 14

ЧИСЛЕННОЕ РЕШЕНИЕ ЛИНЕЙНОГО УРАВНЕНИЯ ПЕРЕНОСА

Цель работы — изучение разностных схем и конечноразностных методов численного решения линейного одномерного уравнения переноса, решение уравнения переноса по схеме бегущего счета.

ПОСТАНОВКА ЗАДАЧИ

В физических приложениях часто встречаются уравнения эволюционного типа:

ut + L0u = f ,

где дифференциальный оператор L0 уже не содержит производных по времени t; такие уравнения как бы описывают эволюцию начальных условий. Если L0 — оператор первого порядка, то уравнение называется уравнением переноса и типично для задач механики сплошной среды. Примером уравнения переноса может служить известное уравнение непрерывности (закон сохранения заряда)

∂ρt +divj = 0, j =ρν,

где ρ —плотность объемного заряда, j — плотность тока, v

скорость движения заряженной среды.

Простейшая линейная одномерная задача для уравнения перено-

са:

ut +c ux = f (x, t),

c = const (0 < x < l), u(0, t) = ϕ(t) , u(x, 0) = u0 (x),

описывает движение сплошной среды с плотностью u вдоль оси x со скоростью c; правая часть f описывает приток (отток) вещества вследствие каких-либо сторонних процессов. Будем также для простоты полагать, что

95

ϕ(0) = u0(0).

Для получения численного решения введем равномерную сетку с шагами h, τ и узлами (xj, tm), где

xj = jh (j = 0, 1, …, N),

h = l/N, tm = mτ (m = 0, 1, 2, …).

Значения сеточных функций принято обозначать как umj = u(xj , tm ),

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

u

= u(x

j

, t), u

j

= u(x

, t ), u

j

=u(x

, t − τ);

j

 

 

j

 

j

 

u±j = u(xj , t ± τ/ 2).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

Рис. 14.1. Расположение узлов разностных схем для линейного уравнения переноса

Соответствующие двум шаблонам разностные схемы имеют вид:

u j u j

+c

u j u j 1

= f j

( j =1, 2, ..., N);

τ

h

 

 

(14.1)

u j u j

+c

u j u j 1

= f j

( j =1, 2, ..., N).

τ

h

 

 

(14.2)

 

 

 

 

96

Различия между двумя схемами заключается в том, что производная по пространственной координате берётся в разные моменты времени. Разностная схема (14.1) явная, так как из нее можно явно выразить неизвестное uj через уже известные значения uj, uj–1 и

правую часть fj. Схема (14.2) формально неявная, так как включает два неизвестных значения u j ,u j1 на (m + 1)-м временном слое.

Однако преобразовав ее к виду

uj

=

 

 

1

(uj + ruj1

f j ) (r = cτ / h, j =1, 2, ...N ) ,

1

+ r

 

 

 

 

можно явно вычислить uj

последовательно, начиная с левой гра-

ницы, на которой u0 известно (это заданное краевое условие). Такие

схемы называют схемами «бегущего счета».

Рассмотрим теперь, что принять в в качестве сеточной проекции fj правой части f. Поскольку f зависит от x, t, наименьшая погрешность аппроксимации получается при замене f(x, t) на среднее значение по площади сеточной ячейки, т. е. на значение

 

 

 

x j

 

t

 

 

 

 

hτ

 

 

 

 

 

1

 

dx

 

f (x, t)dt = f (xj

h / 2, t / 2) +O(h2 , τ2 ).

f j =

x j1

t

 

 

 

 

 

 

 

Следовательно, в уравнениях в качестве fj будем принимать f (xj h / 2, t + τ/ 2) = f j+1/2 , т. е. правая часть в разностных схемах

вычисляется в отмеченном звездочкой центре сеточной ячейки. Заметим, что если в качестве fj просто принять значение в j-м узле, т. е. f(xj, t), то погрешность аппроксимации сразу возрастает на порядок.

Анализ устойчивости разностных схем показывает [3], что схе-

ма (14.1) устойчива при выполнении условия

0 r 1 (r = cτ/h), (14.3)

т. е. это условно устойчивая схема. Условие устойчивости имеет простой физический смысл: вещество среды распространяется в положительном направлении оси абсцисс, причем расстояние cτ, на которое смещается вещество за один временной шаг τ, не должно превышать шаг сетки h. Информация распространяется по сетке со скоростью h/τ (сеточная скорость). Эта скорость должна быть больше физической скорости (в данном случае – скорости перено-

97

са). Сформулированный таким образом критерий (14.3) иногда называют критерием Куранта, а число r = cτ/h – числом Куранта.

Схема (14.2) устойчива для всех c > 0. Следовательно, данная схема безусловно устойчивая. Безусловная устойчивость — очень полезное качество разностной схемы, так как позволяет независимо подбирать временной и пространственный шаги сетки, руководствуясь лишь требуемой погрешностью решения.

Используя безусловно устойчивую разностную схему (14.2) найти решение уравнения переноса с заданными ниже краевыми и начальными условиями.

ВАРИАНТЫ ЗАДАНИЙ

ВАРИАНТЫ НАЧАЛЬНЫХ УСЛОВИЙ

(0 ≤ α <1,α <β ≤ l;l, q, s, n =1÷3)

1) u0 (x) = 0;

2)u0 (x)

3)u0 (x)

4)u0 (x)

5)u0 (x)

6)u0 (x)

= 1 (0 ≤ α≤ x ≤β ≤ l, β−α< l),

0 (0 x < α, β< x l);

(x −α) / (γ −α) (α≤ x ≤ γ),

= (β− x) / (β− γ) (γ ≤ x ≤β),

0 (0 x < α, β< x l);

=

 

 

 

πn

x 4

3

 

 

 

 

 

 

 

sin

 

 

 

 

 

 

 

 

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

l

 

 

 

 

=

 

 

 

πn

x 4

3

 

 

 

 

 

 

cos

 

 

 

 

 

 

 

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

l

 

 

 

 

x −α 4 β− x 3

 

 

 

 

 

 

 

 

 

 

(α≤ x ≤β),

 

 

l

 

l

=

 

 

 

 

0 (0 x < α, β< x l).

ВАРИАНТЫ КРАЕВОГО УСЛОВИЯ φ(t)

1) ϕ(t) = 0;

98

 

t tu ), tu = 0.1÷0.5

l

 

1 (0

 

,

c

2) ϕ(t) =

 

 

 

> tu );

 

 

0 (t

 

 

3)ϕ(t) = ept ( p = 0.1 ÷2);

4)ϕ(t) = ept2 ( p = 0.1÷1);

5)ϕ(t) = tept ( p = 0.1 ÷ 2);

6)ϕ(t) = tept2 ( p = 0.1÷1).

 

 

 

 

 

ВАРИАНТЫ ФУНКЦИЙ f(x,t)

 

 

 

 

 

 

 

 

 

 

 

 

(a,b = 0.1÷2)

1) f ( x,t) =

1 (0

≤β1 x ≤β2 l),

 

0 (0

x , β

 

 

< x l);

 

 

2

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

at

(0

≤β1 x ≤β2 l),

 

 

 

1e

 

 

 

2) f (x,t) =

0 (0 x , β

 

< x l);

 

 

 

2

 

 

 

 

 

 

 

 

 

 

1

 

 

3) f (x,t) =

eat

(0 ≤β1 x ≤β2 l),

 

0 (0

 

x , β

 

 

< x l);

 

 

 

2

 

 

 

 

 

 

 

 

 

 

1

 

 

 

x

 

 

 

x

at

 

 

 

 

4) f ( x,t) =

 

 

 

 

1

 

 

e

 

;

 

 

 

 

l

 

 

l

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5)f (x,t) = ea xbct /l ;

6)f (x,t) = 1l x bct ea( xbct )2 /l2 ;

7)f (x,t) 0.

ПРОГРАММИРОВАНИЕ

Для хранения текущих значений uJ достаточно отвести один одномерный массив размера N + 1 (N = 40 ÷100), записывая новые значения uj на место предыдущих. Временной шаг τ, длительность

моделирования Т и число временных шагов Nt рекомендуется определить из условий

99

cτ = (0.5 ÷0.9)h, T = (5 ÷10)l / c, Nt = T / τ.

Выдачи результатов uj (j=0, 1,...,N) следует организовать через каждые M = 10÷50 временных шагов, включая в выдачу также номер временного шага Nt и текущее время t = Nt τ. Соответственно, выдача производится, если Nt, делится нацело на М.

Начало

Начальные

данные

N,Nt,M,mp

Цикл по i = 0,N

ui(0) = u(0) (x)

Цикл по i

1

2

3

4

5

6

76

7

8

9

10

Цикл по m = 0,Nt

u0( m+1) = ϕ(m+1)

Цикл по i=1,N

ui(m+1)

Цикл по i

11

Нет

m > mp

Да 12

ui(m+1)

mp = mp + M

13

Цикл по m

14

Вывод x, ξ c

Конец

15

Рис. 14.2. Блок-схема программы решения уравнения переноса методом бегущего счета

В заданиях функции f(x,t) и φ(t) выбраны так, что при Т>>l/с устанавливается стационарное состояние с uj, не зависящими от t. Для проверки программы можно предварительно решить тестовую

100