П.А. Ларионов

реклама
Использование возможностей математического пакета MATHCAD для
численного решения дифференциальных уравнений в частных производных
П.А. Ларионов,
И.В. Беленкова
ГОУ ВПО «Нижнетагильская государственная социально-педагогическая
академия»
г. Нижний Тагил
Часто при моделировании физических процессов и явлений получаются
уравнения, которые содержат функции нескольких переменных и частные
производные от этих функций. Такие уравнения называются уравнениями с
частными производными (или уравнения в частных производных). Поскольку
источником уравнений в частных производных является моделирование
физических процессов, раздел математики, связанный с изучением свойств их
возможных решений называется математической физикой. Уравнениями в
частных производных описывается множество разнообразных физических
явлений. С их помощью можно моделировать самые сложные явления и
процессы: диффузия, гидродинамика, квантовая механика, экология и т. д.
Наиболее существенное значение с точки зрения приложений в физике и
технике имеют уравнения первого и второго порядка. Решение простейших
задач для уравнений с частными производными в ряде случаев может быть
проведено аналитическими методами. Однако в подавляющем большинстве
случаев, при решении научно-технических задач, получаемые уравнения не
могут быть решены аналитически. Для их решения используют приближенные,
в частности, численные методы. Реализация численных методов требует
выполнения огромного количества элементарных операций, что под силу
только современным компьютерам, обладающим большим объемом памяти и
высокой скоростью вычислений.
В случае двух независимых переменных x и y дифференциальное
уравнение второго порядка с частными производными можно записать в виде:
2
2
2 


u

u

u

u

u
F  x, y, u, , , 2 , 2 ,
0

x

y

x

y

x

y


,
(1)
где F – заданная функция, u  u ( x, y) – искомая функция.
Мы будем рассматривать линейные уравнения первого и второго порядков
с постоянными коэффициентами. Такие уравнения имеют вид:
 2u
 2u
 2u
u
u
a 2  2b
c 2 d
 e  fu  g ( x, y )
xy
x
y
x
y
.
(2)
В общем же случае коэффициенты a, b, c, d, e, f также как и правая часть
g, могут зависеть от переменных x, y и искомой функции u.
2
В зависимости от знака выражения b  ac оно может принадлежать к
2
одному из трех типов: гиперболическому ( b  ac  0 ), параболическому
2
2
( b  ac  0 ) или эллиптическому ( b  ac  0 ).
Если решение ищется на ограниченной области изменения независимых
переменных, то задаются условия на границах области, называемые
граничными (краевыми) условия. Соответствующие задачи называются
краевыми задачами для уравнений с частными производными.
Если одной из независимых переменных является время t, то задаются
некоторые условия (например, значения искомой функции) в начальный
момент времени t 0 , называемые начальными условиями. Задача, которая
состоит в решении уравнения при заданных начальных условиях, называется
задачей Коши для уравнения с частными производными.
Задачи, при формулировке которых ставятся одновременно начальные и
граничные условия называются нестационарными (смешанными) краевыми
задачами. Получающиеся при этом решения меняются с течением времени.
Наиболее распространенными и универсальными среди численных
методов
являются
разностные
(сеточные)
методы.
Исходное
дифференциальное уравнение заменяется системой алгебраических уравнений,
называемой разностной схемой. Решая эту систему можно найти в узлах сетки
значения сеточной функции, которые приближенно считаются равными
значениям искомой функции.
Если правая часть равная нулю F ( x, y, z )  0 , то уравнение (2) называется
уравнением Лапласа. Далее для простоты будем рассматривать двумерное
уравнение Лапласа
 2U  2U

0
x 2 y 2
.
(3)
Решение этого уравнения будем искать на ограниченной области G
изменения независимых переменных x и y. Границей области является
замкнутая линия L. В простейшем случае область может иметь прямоугольную
форму. Для полной формулировки краевой задачи кроме самого уравнения (4)
нужно задать граничное условие на границе L. Запишем его в следующем виде
U ( x, y ) L   ( x, y ) .
(4)
Задача, состоящая в решении уравнения Лапласа при заданных значения
искомой функции на границе расчетной области, называется задачей Дирихле.
Рассмотрим алгоритм решения задачи Дирихле для уравнения Лапласа, с
использованием возможностей математического пакета Mathcad.
Задание: Используя метод сеток, составить функцию, реализующую решение
задачи Дирихле для уравнения Лапласа (или уравнения эллиптического типа),
удовлетворяющее на эллипсе Г, заданном уравнением x2  y2 16, условию
U ( x, y) Г  0,5  x  2  y с шагом h=1. Уточнение решения производить до сотых
долей с помощью процесса Либмана.
Решение:
1) Используя симметрию заданных начальных условий, будем искать значение
функции U=U(x,y) только в I четверти:
Для того, чтобы построить область G, ограниченную контуром Г, составим
таблицу значений y от x.
x
y
2
x y
2
0
4
2
3,46
3
2,65
4
0
U ( x, y) Г  0,5  x  2  y
h  1
16
1
3,87
Построим часть этого эллипса в I четверти (см. рис. 1):
2
y( x)  16  x
Ah
4
4
Bh
Сh
3
U2
3
U3
Dh
Eh
y ( x)
2
2
1
1
0
U4
U5
U6
U7
U8
U9
U10
U11
U13
U12
0
1
2
3
4
0
1
U14
2
Fh
Gh
U15
3
4
Hh
x
Рис. 1. График функции y(x)
Рис. 2. Визуализация узлов координатной
сетки
2) Строим сетку с шагом h = 1. Точки, отмеченные белыми кружками (см. рис.
2) - внутренние. Граничные узлы I рода на рисунке обозначены черными
кружками и буквами Ah, Bh, Ch, Dh, Eh, Fh, Gh, Hh - все эти точки (граничные
и внутренние) расчетные. ГУ II рода в данном случае нет.
3) Ищем значения функции на границе, т.е. в точках Ah, Bh, Ch, Dh, Eh, Fh, Gh,
Hh, где граничная функция задана нам в начальных условиях.
x( y)  16  y
2
значение искомой функции в граничной точке Ah
U
 Uã( 0 4)
U
 Uã( 1 y( 1) )
значение искомой функции в граничной точке Bh
U
 8.246
U
 Uã( 2 y( 2) )
значение искомой функции в граничной точке Ch
U
 7.928
U
 Uã( x( 3)  3)
значение искомой функции в граничной точке Dh
U
 7.323
U
 Uã( 3 y( 3) )
значение искомой функции в граничной точке Eh
U
 6.792
U
 Uã( x( 2)  2)
значение искомой функции в граничной точке Fh
U
 5.732
U
 Uã( x( 1)  1)
значение искомой функции в граничной точке Gh
U
 3.936
U
 Uã( 4 0)
U
2
0 0
0 1
0 2
1 3
1 4
2 4
3 4
4 4
значение искомой функции в граничной точке Hh
0 
 8 8.246 7.928 0
0 0

0 7.323 6.792


U 0 0
0
0 5.732 
0 0
0
0 3.936 


0
0
2 
0 0
0 1
0 2
1 3
1 4
2 4
3 4
4 4
U
0 0
8
4) Теперь определим начальные значения функции U(x,y) во внутренних
точках. Для этого заменим уравнение Лапласа в каждой такой точке конечноразностными уравнениями; замену проведем согласно формуле:
1
U( x y)
 ( U( x  h  y)  U( x  h  y)  U( x y  h)  U( x y  h) ).
4
u1  0 u2  0 u3  0 u4  0 u5  0 u6  0 u7  0 u8  0 u9  0 u10  0
u11  0 u12  0 u13  0 u14  0 u15  0
Given
1
u1
 U
 2 u2  u4
4 0 0
1
u4
 ( u1  2 u5  u8)
4
1
u7
 U
U
 u11  u6
2 4
4 1 4
1
u10
 ( u9  u6  u14  u11)
4
1
u14
 ( u13  2 u10  u15)
4




4
1
u2
1
u5
4
1
 u8
 U
0 1

 u3  u1  u5
 ( u2  u4  u6  u9)
4
1
u6
1
 ( u4  2 u9  u12) u9
4
1
1
u3
4
4
u15
1 3
U
0 2

 u2  u6
 ( u3  u5  u7  u10)
1
 ( u8  u5  u13  u10) u12
  u14  u10  u7 u13
4 3 4
1
 U
 u14  2 u11
4 4 4
u11

 U
1
 U
4
4
 ( 4 u9)
 ( u12  2 u9  u14)
t  Find( u1 u2 u3 u4 u5 u6 u7 u8 u9 u10 u11 u12 u13 u14 u15)
5) Из пятнадцати уравнений, представленных выше, составим систему и найдем
первое приближение к решению. Приближения будем искать до тех пор, пока
не будет достигнута заданная точность.
U
 t U
U
 t U
1 0
3 0
0
2 2
7 4 2

 7.485

U   6.961
 6.591

 6.468
8
 t U
3 3
5
 t
13
 t
U
2 1
U
10 4  0
 t
4
 t
U
3 2



6.885 6.62 6.16 5.732 
6.468 6.096 5.498 3.936 

6.3 5.798 4.698 2 
8.246 7.928
0
11
U
1 1
 t U
9
4 3
 t U
1 2 3
 t
 t U
3 1
6
 t U
8 4 1
 t
12
U
1 2
 t U
2
2 0
 t
3
14
0
7.489 7.34 7.323 6.792
Найденные значения функции U(x,y) есть грубое
приближение решения уравнения Лапласа –
шаблон №1.
6) Уточняем значения решения в граничных точках, используя для этого
формулу линейной интерполяции (шаблон №2).
для точки А
U
для точки B
  y( 2)  3
для точки C
  x( 3)  3
для точки D
  y( 3)  3
для точки E
  x( 2)  3
для точки F
  x( 1)  4
для точки G
  y( 4)  0
0 0
8
  y( 1)  4
  0.127 U
0 1
 U
0 1
 U1  1  U0  1 
 U  8.356
 h    0 1
  
 U1  2  U0  2 

U
 7.742
0 2
0 2
0 2
 h 
 U2  3  U1  3 
  0.354 U
 U
  

U
 7.961
1 3
1 3
1 3
 h 
 U2  4  U1  4 
  0.354 U
 U
  

U
 7.373
1 4
1 4
1 4
 h 
 U2  3  U2  4 
  0.464 U
 U
  

U
 5.868
2 4
2 4
2 4
 h 
 U3  3  U3  4 
  0.127 U
 U
  

U
 3.709
3 4
3 4
3 4
 h 
 U4  3  U4  4 
0 U
 U
  
 U 2
4 4
4 4
 h    4 4
  0.464 U
 U
  
для точки H
Т.к. точки H и Hh совпадают, то h 0, значит, U(Hh) = U(H) = 2 (так же как и в
случае с Ah и A).
Заметим, что все граничные точки не принадлежат области G, поэтому
согласно теории, во всех случаях   0, кроме частных случаев с точками A и H
7) Аналогично строим шаблоны №3, 4, 5 и т.д., пока последовательные два
шаблона не совпадут с заданной точностью. Для этого составим ряд функций,
реализующих построение шаблонов (см. рис. 3), и позволяющих достигать
заданную точность (см. рис. 4).
ZeidelLaplasDirihle ( N  U) 
h1
for k  0  N
for j  1  3
for i  1  3
U
1 3
U
i j
 7.961

1
4

 U
i 1  j
U
i 1  j
U
i  j 1
U

i  j 1
U
Рис. 3. функция, возвращающая шаблон, вычисленный на определенном шаге
ZCIK U    char 
k0
for i  0  4
for j  0  4
 i  j  ZeidelLaplasDirihle ( k  1  U) i  j  ZeidelLaplasDirihle ( k  U) i  j
for i  0  4
for j  0  4
while  i  j  
for q  0  4
for o  0  4
 q  o  ZeidelLaplasDirihle ( k  1  U) q  o  ZeidelLaplasDirihle ( k  U) q  o
kk 1
k  1 if char
"shag"
ZeidelLaplasDirihle ( k  1  U) otherwise
Рис. 4. Функция, возвращающая решение задачи или шаг, на котором получено это решение
 8
 7.485

ZCIK( U  0.01  "setka" )   6.961
 6.591

 6.468



6.935 6.737 6.449 5.868 
6.472 6.059 5.229 3.709 

6.3 5.798 4.698 2 
8.356 7.742
0
0
7.57 7.503 7.961 7.373
ZCIK( U 0.01 "shag" )  4
Решая задачу, замечаем, что шаблоны №3 и №4 совпадают до сотых
долей, поэтому итерационный процесс заканчивается.
Значения в шаблоне №4 – ZCIK (U ,0.01) являются численными решениями
задачи Дирихле для уравнения Лапласа. Уменьшая значение погрешности,
можно найти достаточно точное решение поставленной задачи, сделав большее
количество расчетных шагов.
Таким образом, использование математических пакетов (например,
Mathcad) позволяет оптимизировать процесс нахождения решения физической
задачи, а использование программного режима работы закрепляет знания
программирования.
Литература:
1. Воробьева Г.Н., Данилова А.Н. Практикум по вычислительной математике.
М.: Высшая школа, 1990.
2. Поршнев С.В., Беленкова И.В. Численные методы на базе Mathcad. СПб.:
БХВ-Петербург, 2005.
Скачать