Тарасевич Ю.Ю. - Численные методы на Mathcad
.pdf5.2. Решение уравнений в частных производных.
Введение
Одним из методов решения дифференциальных уравнений в частных производных является метод сеток. Идея метода заключается в следую- щем. Для простоты, ограничимся случаем только функции двух перемен- ных, и будем полагать, что решение уравнения ищется на квадратной об- ласти единичного размера. Разобьем область сеткой. Шаг сетки по оси x и по оси y, вообще говоря, может быть разный. По определению частная про-
изводная равна
∂u(x, y) = lim |
u(x + |
x, y) − u(x) |
≈ |
u(x + x, y) − u(x) |
|
||||
|
|
|
x |
||||||
∂x |
x→0 |
x |
|
|
|
||||
Если рассматривать функцию только в узлах сетки, то частную произ- |
|||||||||
водную можно записать в форме |
|
|
ui +1, j − ui, j |
|
|||||
|
|
∂u(x, y) |
≈ |
||||||
|
|
∂x |
|
h |
|||||
|
|
|
|
||||||
где узел (i, j) |
соответствует точке (x, y) . Полученное выражение назы- |
вается правой конечной разностью. Название связано с тем, что для вы- числения производной в точке используются значение функции в этой точ- ке и точке, лежащей правее. Очевидно, что сходное выражение можно было бы получить, используя точку, лежащую слева.
∂u(x, y) ≈ ui, j − ui−1, j
∂x h
Такое выражение называется левой конечной разностью. Можно по- лучить центральную конечную разность, найдя среднее этих выражений.
Теперь получим выражения для вторых производных.
∂2u(x, y) |
≈ |
ui+1, j − 2ui, j + ui −1, j |
|
∂x2 |
h2 |
||
|
В данном случае для нахождения производной мы использовали сим- метричные точки. Однако, очевидно, можно было бы использовать точки с несимметричным расположением.
5.2.1. Уравнения гиперболического типа
В качестве примера рассмотрим решение волнового уравнения (уравне- ния гиперболического типа).
∂ 2U |
= |
1 ∂ 2U |
|
∂ x2 |
|
v2 |
∂ t2 |
Уравнение будем решать методом сеток. Запишем уравнение в конеч-
ных разностях
51
|
|
|
|
|
ui +1, j - 2ui, j |
+ ui−1, j |
= |
1 ui, j +1 - 2ui, j + ui, j |
|
|||||||||||
|
|
|
|
|
|
|
|
h2 |
|
|
|
v2 |
|
|
τ 2 |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Полученное уравнение позволяет выразить значение функции u в мо- |
||||||||||||||||||||
мент времени |
j +1 через значения функции в предыдущие моменты време- |
|||||||||||||||||||
ни. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
u |
i, j+1 |
= v2 æ |
τ |
ö2 |
(u |
i+1, j |
- 2u |
+ u |
) + 2u |
i, j |
- u |
i, j −1 |
||||
|
|
|
|
|
|
ç ÷ |
|
|
|
i, j |
|
i −1, j |
|
|
||||||
|
|
|
|
|
|
|
è h |
ø |
|
|
|
|
|
|
|
|
|
|
|
|
Такая разностная схема называется явной, так как искомая величина |
||||||||||||||||||||
получается в явном виде. Она устойчива, еслиτ £ h v . |
|
|||||||||||||||||||
Зададим начальные условия: смещение струны U в начальный и после- |
||||||||||||||||||||
дующий моменты времени описывается синусоидальной функцией. |
||||||||||||||||||||
n |
|
20 |
|
|
j |
0.. n |
i |
0.. 100 |
|
|
|
|
|
|
|
|
|
|||
U |
|
sin |
π . i |
|
|
U |
|
|
U |
|
|
|
|
|
|
|
|
|
||
i , 0 |
|
|
|
50 |
|
|
i , 1 |
|
i, 0 |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(Совпадение смещений при j=0 и j=1 соответствует нулевой начальной |
||||||||||||||||||||
скорости.) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Зададим граничные условия: на концах струны смещение равно 0 в лю- |
||||||||||||||||||||
бой момент времени U0, j |
|
0 |
|
U100, j |
0 |
|
|
|
|
|
||||||||||
Будем полагать коэффициент a |
|
1 |
|
|
k |
|
0.02 |
|||||||||||||
i |
1.. 99 |
|
|
j |
1.. n |
1 |
|
|
|
|
|
l |
0.. 100 |
|
|
|
||||
Записываем уравнение в конечных разностях, разрешенное относитель- |
||||||||||||||||||||
но Ui, j +1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
U |
|
|
a |
2. . |
|
|
|
. |
|
|
U |
|
|
. |
|
U |
|
|
||
|
1 |
k U |
i |
1, j |
|
2 U |
|
1, j |
|
2 U |
|
1 |
||||||||
i , j |
|
|
|
|
|
i , j |
|
i |
|
|
i , j |
i, j |
||||||||
Представляем результат на графике |
|
|
|
|
|
|
||||||||||||||
|
Ul, 0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ul, 10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ul, 15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ul, 20 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
l |
|
|
|
|
|
52 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5.2.2. Уравнения параболического типа. |
|
|
||||||||||||||||
Еще один пример использования конечных разностей – уравнение диф- |
||||||||||||||||||
фузии. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
∂u |
= D |
∂2u |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
∂t |
|
|
∂x2 |
|
|
|
|
|
|
|
Это уравнение параболического типа. Явная разностная схема для этого |
||||||||||||||||||
уравнения имеет вид |
|
|
τ |
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
u |
|
= D |
(u |
|
− 2u |
|
+ u |
|
|
) + u |
|
(5.3) |
||
|
|
|
|
|
i, j+1 |
|
h2 |
i +1, j |
|
|
i, j |
|
i−1, j |
|
i, j |
|
||
Эта разностная схема устойчива, если τ ≤ |
h2 . Для краткости в даль- |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2D |
|
|
|
нейшем мы будем обозначать весь множитель, стоящий перед скобкой, как |
||||||||||||||||||
κ. |
|
|
|
|
|
|
|
κ |
|
|
|
|
|
|
|
|
|
|
Задаем коэффициент |
|
|
|
.15 |
|
|
|
|
|
|
|
|||||||
и диапазон изменения пространственной и временной координат: |
|
|||||||||||||||||
t |
|
0.. 29 |
x |
1.. 49 |
|
|
|
|
|
|
|
|
|
|
|
|
||
Задаем начальные и граничные условия |
|
|
|
|
|
|||||||||||||
f0, x |
0 |
|
|
|
f0, 0 |
0 |
|
|
|
f0, 50 |
|
0 |
f0, 25 |
1 |
||||
Уравнение в конечных разностях имеет вид |
|
|
|
|
||||||||||||||
f |
|
f |
κ. |
f |
1 |
2.f |
f |
|
1 |
|
|
|
|
|
|
|||
t |
1, x t, x |
|
|
t, x |
|
t, x |
t, x |
|
|
|
|
|
|
|||||
Представляем результаты на графике. (Для большей наглядности изо- |
||||||||||||||||||
бражена только центральная часть) |
|
|
|
|
|
|
|
|
|
|
||||||||
x |
|
15.. 35 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f0 , x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f4 , x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f9 , x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0.5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f19, x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f29, x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 15 |
|
|
|
20 |
|
|
|
|
|
25 |
|
|
|
30 |
35 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
Основное достоинство явных методов – их простота – зачастую сводит- ся на нет достаточно жесткими ограничениями на величину шага. Явные схемы обычно устойчивы при столь малых шагах по времени, что они ста- новятся непригодными для практических расчетов. Этого существенного недостатка позволяют избежать неявные схемы. Свое название они получи- ли потому, что значения искомой функции на очередном временном шаге не могут быть явно выражены через значения функции на предыдущем ша- ге.
Рассмотрим применение неявной схемы на примере уравнения тепло-
проводности
¶u |
= c |
¶2u |
(5.4) |
|
¶t |
¶x2 |
|||
|
|
Запишем неявную разностную схему для этого уравнения
ui, j +1 - ui, j |
= |
c |
(ui+1, j +1 - 2ui, j +1 + ui−1, j +1 ) |
(5.5) |
τ |
h2 |
Здесь первый индекс соответствует пространственной, а второй – вре- менной координате. В отличие от явной схемы, для вычисления в правой части уравнения используются значения функции на том же самом времен-
ном шаге. Вводя обозначение μ = chτ2 , уравнение (5.5) можно переписать в
виде
(1+ 2μ)ui, j +1 - μ(ui+1, j+1 + ui−1, j +1 ) = ui, j |
(5.6) |
или в матричной форме
æ1+ 2μ |
-μ |
|
ç |
-μ |
1+ 2μ -μ |
ç |
||
ç |
|
L |
ç |
|
1+ 2μ |
ç |
|
|
ç |
|
-μ |
è |
|
где u(0,t) = α, u(t,1) = β .
|
öæ |
u |
ö |
æ u |
|
+ μα ö |
|
||
|
֍ |
1, j +1 |
÷ ç |
1, j |
|
÷ |
|
||
|
֍ |
u2, j+1 |
÷ ç |
|
u2, j |
÷ |
|
||
|
֍ |
M |
÷ |
= ç |
|
|
M |
÷ |
(5.7) |
-μ |
֍ |
|
÷ |
ç |
|
un−1, j |
÷ |
|
|
÷çun−1, j +1 |
÷ ç |
|
÷ |
|
|||||
1+ 2μ |
֍ |
un, j+1 |
÷ |
ç |
|
|
|
÷ |
|
øè |
ø èun, j + μβ ø |
|
Задаем количество узлов сетки (в данном случае оно одинаково для обеих переменных) n := 30
i := 0.. n |
|
|
|
|
|
|
j := 0.. n |
k := 0.. n - 1 |
m := 1.. n - 1 |
Задаем значения параметров a := 0 |
b := 1 m := 5 |
|
|||||||
и начальное распределение температуры в области |
|
||||||||
ui , 0 := sin |
æ |
p× |
i ö |
+ |
i |
|
|
||
|
|
|
|
|
|
|
|||
è |
n ø |
n |
|
|
|||||
|
|
|
|
|
|||||
Формируем матрицы уравнения (5.7) |
|
|
|||||||
u0, j := a |
|
|
un, j := b |
|
|
54
Ai , i := 1 + 2×m |
A m , m−1 := -m |
A m−1, m := -m |
||
mai := 0 |
ma0 := m×a |
mbi := 0 |
mb0 := m×b |
|
Находим решение системы |
u áj+1ñ |
:= A− 1×(u ájñ + ma + mb) |
u
5.2.3. Решение уравнений Лапласа и Пуассона.
Для решения уравнений Пуассона ∂2u + ∂2u = F(x, y) и Лапласа (част- ∂x2 ∂y2
ный случай, когда F(x, y) = 0 ) – уравнений эллиптического типа – предна-
значена функция relax(a, b, c, d, e, f, u, rjac), реализующая метод релакса- ции. Фактически, эту функцию можно использовать для решения эллипти-
ческого уравнения общего вида
A |
∂ 2u |
+ 2B |
∂ 2u |
+ C |
∂ 2u |
+ a |
∂ u |
+ b |
∂ u |
+ cu = F (x, y), |
|
∂ x2 |
∂ x∂ y |
∂ y2 |
∂ x |
∂ y |
|||||||
|
|
|
|
|
|
D = AC − B2 > 0,
которое может быть сведено к уравнению в конечных разностях
|
ai, j ui+1, j + bi, j ui −1, j + ci, jui, j+1 + di, jui, j−1 + ei, jui, j = fi, j |
||||
В |
частности, |
для |
уравнения |
Пуассона |
коэффициенты |
ai, j = bi, j = ci, j = di, j = 1, ei, j = −4 .
Идея метода релаксации заключается в следующем. Если нет источни- ков (уравнение Лапласа), то значение функции в данном узле на текущем шаге k +1 определяется как среднее значение функции в ближайших узлах
на предыдущем шаге k |
|
|
|
|
|
|
|
|
|
uk +1 |
= |
1 |
(uk |
+ uk |
+ uk |
+ uk |
) |
(5.8) |
|
4 |
|||||||||
i, j |
|
i−1, j |
i +1, j |
i, j−1 |
i, j +1 |
|
|
55
При |
наличии |
|
источников |
разностная |
|
схема |
имеет |
вид |
|||||
|
uk +1 |
= |
1 |
(uk |
+ uk |
+ uk |
+ uk |
) − |
h2 |
f |
|
|
(5.9) |
|
4 |
|
|
|
|||||||||
|
i, j |
|
i−1, j |
i+1, j |
i, j −1 |
i, j+1 |
4 |
|
i, j |
|
|
Метод релаксации сходится достаточно медленно, так как фактически он использует разностную схему (5.3) с максимально возможным для дву-
мерного случая шагом τ = h2 . 4
В методе релаксации необходимо задать начальное приближение, то есть значения функции во всех узлах области, а так же граничные условия.
Функция relax возвращает квадратную матрицу, в которой:
1)расположение элемента в матрице соответствует его положению внут- ри квадратной области,
2)это значение приближает решение в этой точке.
Эта функция использует метод релаксации для приближения к реше- нию.
Вы должны использовать функцию relax, если Вы знаете значения ис- комой функции u(x, y) на всех четырех сторонах квадратной области.
Аргументы:
a, b, c, d, e – квадратные матрицы одного и того же размера, содержа- щие коэффициенты дифференциального уравнения.
f – квадратная матрица, содержащая значения правой части уравнения в
каждой точке внутри квадрата
u – квадратная матрица, содержащая граничные значения функции на краях области, а также начальное приближение решения во внутренних точках области.
rjac – Параметр, управляющий сходимостью процесса релаксации. Он может быть в диапазоне от 0 до 1, но оптимальное значение зависит от де- талей задачи.
n |
|
24 |
i |
|
0.. n j |
|
0.. n |
|
|
|
|||||
|
|
|
Задаем правую часть уравнения Пуассона – два точечных источника
Mi, j |
|
0 |
M6, 8 |
|
10 |
|
|
M10, 8 |
|
10 |
|
|
|
|
|
|
|||
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|||||||||||||||
Задаем значения параметров функции relax |
|
4.a |
|||||||||||||||||
ai, j |
|
1 |
|
|
b |
|
a |
c |
|
a |
|
d |
|
a f |
|
M e |
|
||
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
Задаем граничные условия и начальное приближение – нули во всех
внутренних точках области
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. |
j |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
ui, j 0 |
|
|
ui , n |
1 |
|
|
ui, 0 |
1 |
|||||||||||||
|
|
|
u0, j |
|
1 |
|
2 |
n |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
. |
j |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
un, j |
|
1 |
|
2 |
n |
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
Находим решение Z |
|
|
relax( a, b , c, d , e, f, u , 0.95) |
|
|
||||||||||||||||
|
|
|
|
||||||||||||||||||
|
|
|
|
и представляем его графически в виде поверхности и линий уровней.
56
Z |
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0.5 |
|
0.5 |
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
1 |
1.5 |
0.5 |
|
|
0.5 |
|
|
|
|
11.5 |
|
|
|
|||
0 |
0.5 |
|
4.5 |
1 0 |
|
|
|
|
1 |
2 |
0.5 2.5 |
3 |
2 |
1 |
|||
0 |
1.5 |
|
1 1.5 |
|||||
|
|
|
0.5 |
|
|
|
||
|
|
|
|
|
|
|
|
|
0.5 |
0.5 |
|
0 |
|
|
|
|
|
|
|
0.5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
1 |
0.5 |
|
|
0 |
|
|
0.5 |
1 |
Z |
|
|
|
|
|
|
|
|
Если граничные условия равны нулю на всех четырех сторонах квадра- та, можно использовать функцию multigrid.
Z multigrid( M , 3)
Алгоритм метода достаточно громоздкий, поэтому рассматривать его мы не будем.
57
Глава 6. Статистические расчеты на Mathcad
6.1. Генерация чисел, распределенных равномерно.
Mathcad дает возможность обрабатывать статистическую информацию. Создадим с помощью датчика случайных чисел rnd последовательность, подчиняющуюся равномерному распределению.
n |
|
999 |
i |
|
0 .. n |
xi |
|
rnd( 10) |
|
|
|
||||||
|
|
|
Представим последовательность чисел графически
10
xi 5
0 0 |
500 |
1000 |
Вычислим среднее значение |
i |
|
||||||
Xmean |
|
mean( x ) Xmean = 4.966 , |
||||||
|
||||||||
|
||||||||
стандартное отклонение |
Xst |
|
stdev( x ) |
Xst = 2.885 , |
||||
|
||||||||
|
||||||||
и дисперсию σ |
|
var( x ) |
σ = 8.323 |
|
||||
|
|
|||||||
|
|
|||||||
Проверим, насколько хорошо подчиняются наши числа закону равно- |
||||||||
мерного распределения, построив гистограмму. |
Определим интервалы для |
группировки данных: Nmax 5 k 0 .. Nmax. И подсчитаем, сколько раз
попадают числа из нашей последовательности в каждый из интервалов intervalk
0
2
4
6
8
10
i 0 .. Nmax 1 f hist ( interval , x )
58
fi
208
194
193
211
194
Числа fi показывают, сколько раз числа из массива x попадают в каж-
дый из определенных нами интервалов 0–2, 2–4, 4–6, 6–8, 8–10 Внимание! В массиве f элементов на 1 меньше, чем в массиве interval. Определим границы для построения гистограммы.
Fmax |
|
|
max( f) |
|
|
|
1 |
|
|
|
|
|
IntMax |
|
|
max( interval ) |
IntMin |
|
min( interval ) |
|
1 |
||||
|
|
|
||||||||||
|
|
|
|
fi
0 |
5 |
10 |
interval i
Внимание! При построении гистограммы следует использовать трасси- ровку типа bar, при этом столбцы центрируются относительно начала ин- тервала. Для центрирования столбцов относительно середины интервала
используйте трассировку step.
Повторим построение гистограммы, используя большее число интерва- лов.
Nmax |
|
10 |
|
|
k |
|
0 .. Nmax |
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|||||||||||||||
i |
|
0 .. Nmax |
|
1 |
intervalk |
|
|
k |
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|||||||||||||
f |
|
hist ( interval , x ) |
Fmax |
|
|
max( f) |
|
|
|
1 |
|
|
||||||||||
IntMax |
|
|
max( interval ) |
IntMin |
|
|
min( interval ) |
|
1 |
|||||||||||||
|
|
|
||||||||||||||||||||
|
|
|
|
|
59
fi
interval i
fi
100
108
98
96
96
97
111
100
108
86
Числа fi показывают, сколько раз числа из массива x попадают в каж-
дый из определенных нами интервалов 0–1, 1–2, 2–3, 3–4, 4–5, 5–6, 6–7, 7– 8, 8–9, 9–10
6.2. Генерация случайных чисел, распределенных по нормальному закону.
Для преобразования равномерно распределенных случайных чисел в числа, распределенные по нормальному закону, воспользуемся преобразо- ванием:
N |
|
999 |
|
|
|
M |
|
|
10 |
|
S |
|
|
10 |
i |
|
0 .. N |
||||||||||||||
|
|
|
|
||||||||||||||||||||||||||||
|
|
|
|
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
S. |
|
|
|
|
|
).2 ).sin( 2.π .rnd( 1 ) ) |
||||||||||||||||
x1i |
|
|
M |
|
|
|
( ( |
|
ln( rnd( 1 ) ) |
|
|
||||||||||||||||||||
|
|
|
|
|
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|||||||||||||||||||||||||
Представим числа на графике |
|
|
|
|
|
|
|
|
|||||||||||||||||||||||
Nmax |
|
|
|
ceil ( max ( x1 ) ) |
Nmin |
|
floor( min( x1 ) ) |
||||||||||||||||||||||||
|
|
|
|
||||||||||||||||||||||||||||
|
|
|
|
||||||||||||||||||||||||||||
Nall |
|
Nmax |
|
|
|
|
|
Nmin |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60