Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2808.Введение в математическое моделирование..pdf
Скачиваний:
113
Добавлен:
15.11.2022
Размер:
38.88 Mб
Скачать

====== Приложение 2

ЧИСЛЕННЫЕ МЕТОДЫ

(минимальные сведения)

Раздел математики, в котором разработаны способы приближенно­ го решения различных задач (решения уравнений, интегрирование, диф­ ференцирование, нахождение экстремумов функций и т.д.) не алгебраи­ ческим путем и не методами математического анализа, а путем много­ кратных арифметических действий над числами, называется «Численные методы», или «Вычислительная математика». Начало развития численных методов решения задач относится ко временам Ньютона. Однако лишь с появлением вычислительной техники эти методы нашли широкое при­ менение.

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

П2.1. Решение уравнений высоких степеней и трансцендентных уравнений с одним неизвестным

Очень часто при исследовании математических моделей приходится сталкиваться с необходимостью решать уравнения с одной неизвестной. Так, для линейного уравнения

ах + b = О

(П2.1)

все сводится к нахождению х по формуле х = b/а . В случае квадрат­

ного уравнения —к нахождению хх и х^ по Алгоритму П1.1 из приложе­ ния 1. Кубическое уравнение

ах3 + Ъх2 + сх + d = О

(П2.2)

всегда может быть приведено к виду

у* + ру + q = о

(П2.3)

путем деления его на а и подстановкой х = у - Ь/(Ъа). Корни уравнения (П2.3) могут быть найдены по формуле Кардано:

(П2.4)

Преобразование (П2.2) к виду (П2.3) и нахождение корней с помо­ щью (П2.4) довольно громоздко, поэтому применение вычислительной техники здесь уже вполне рационально. Не менее сложным является решение уравнения четвертой степени, если только оно не сводится к биквадратному. Формул для решения уравнений пятой степени и выше не существует. Уравнения, в которых неизвестное встречается не толь­ ко в какой-либо степени, но и под знаком других функций (sin х, lg х, е^ит.п.), называются трансцендентными. Кроме самых простых случаев для нахождения корней этих уравнений формул не существует.

Численные методы в совокупности с ЭВМ позволяют решать срав­ нительно просто как алгебраические уравнения произвольных степеней, так и трансцендентные. Любое уравнение с одним неизвестным может быть приведено к виду

Дх) = 0.

(П2.5)

Корнем такого уравнения будет значение х, при котором Дх) про­ ходит через ноль (рис. П2.1). Разобьем решение уравнения на два эта­ па: изоляцию корней и уточнение значения изолированного корня.

Рис. П2.1. Корни уравнения

Изоляция корней означает определение такого отрезка [а, А], где есть корень, притом только один. Эта задача решается либо путем анализа функции Дх), либо построением таблицы значений функции при различ­ ных значениях аргумента (выполнение табуляции функции). Далее по­ строенный по полученной таблице график функции Дх) удобно исполь­ зовать для приближенного вычисления корней уравнения. Как табуля­ цию, так и построение графика функции целесообразно выполнять с использованием электронных таблиц (например, электронной таблицы MS Excel), не прибегая к написанию собственных программ.

Рис. П2.2. Иллюстрация к методу деления отрезка пополам

Для уточнения значения корня уравнения после его изоляции суще­ ствуют различные методы. Простейшим является метод деления отрезка пополам. Идея метода заключается в следующем. На первом шаге вычис­ ляются значения функции на концах отрезка (рис. П2.2). Затем исход­ ный отрезок [а, Ь] делят пополам (точка Xj) и вычисляют значение фун­ кции в этой точке. Из двух отрезков выбирается тот, для которого зна­ чения функции на концах отрезка имеют противоположные знаки (отрезок [xj, b\ на рис. П2.2). Выбранный отрезок снова делят пополам, вновь вычисляют значение функции в полученной точке и осуществля­ ют выбор отрезка. Процесс продолжается до тех пор, пока модуль зна­ чения функции в средней точке очередного выбранного отрезка не ста­ нет меньше некоторого малого положительного е. Ниже приведен воз­ можный алгоритм данного метода.

А л гор и тм П2.1

Procedure Уточнение корней уравнения методом деления пополам. Данные: F(x) —исследуемая функция;

а, b —Исходный исследуемый отрезок; е - точность вычислений. Результаты: х —значение корня уравнения,

start

х := а

if (F(a)F(b) < 0) then while (|Дх)| > () do

х:= (a + b )/ 2

if (F(x):F(a) < 0) then b : = x новый отрезок [a, (a+ b)/2] else а:=хновый отрезок [(a+b)/2, b]

end if end while

else Attention(Отрезок задан неверно. Корень не изолирован.)

return

Более эффективным методом уточнения корней уравнения являет­ ся метод хорд. В отличие от предыдущего метода исследуемый отрезок разбивается на два новых точкой пересечения оси абсцисс с линией,

проходящей через точки А и В графика функции Дх), соответствующие

концам отрезка (рис. П2.3). Ниже приведен алгоритм метода хорд.

Рис. П2.3. Схема к методу хорд

А л гор и тм П2.2

Procedure Уточнение корней уравнения методом хорд.

Данные: Дх) - исследуемая функция; е —точность вычислений. а, Ъ—исходный исследуемый отрезок, а < Ь.

Результаты: х —значение корня уравнения, start

х := а

if (Дд)-Д6) < 0) then

 

while (|F(x)| > е)

do

 

* = * + -

а) *\ттьут)\

if (Д х)Д а) < 0) then b:=x

новый отрезок [а, х]

 

else а\—х

новый отрезок [х, Ь\

end if end while

else Attention(Отрезок задан неверно. Корень не изолирован,)

return

П2.2. Решение систем линейных уравнений

Многие задачи математического моделирования сводятся к системе п линейных алгебраических уравнений:

аих1+а12х2+...+а1пхп=Ь1, а21хх+ап х1 + ...+агпхп=Ъ1,

(П2.6)

anlx l +a n2x2 + - + a nnxn = bn-

°\\

°п

и\п

 

°2 1

°2 2

°2п

(П2.7)

 

 

 

_ап1

ап2

 

 

ИЛИ

[А]{Х}={В}. (П2.8)

При исследовании многих моделей, связанных, например, с реше­ нием задач механики сплошных сред в объемной постановке или задач из области экономики, приходится решать системы, состоящие из не­ скольких тысяч или десятков тысяч уравнений. В этом случае особое вни­ мание приходится уделять вопросам повышения эффективности и точ­ ности применяемых методов решения.

Все методы решения систем линейных уравнений делят на прямые и итерационные.

Прямые методы позволяют за конечное число действий найти точ­ ное решение системы уравнений (П2.6), если входная информация (пра­ вая часть уравнений {В} и элементы ау матрицы [А]) заданы точно и

вычисления ведутся без округления. Конечно, прямые методы также дают решение с определенной точностью, которая зависит от ошибок округ­ ления, т.е. от точности представлений данных в ЭВМ, характера решае­ мых задач и самого метода решения системы уравнений. К наиболее известным представителям прямых методов можно отнести методы Га­ усса и квадратного корня.

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

В качестве примера рассмотрим алгоритм наиболее часто применя­ емого метода —метода Гаусса. Как уже отмечалось, данный метод отно­ сится к прямым и позволяет найти решение за конечное число шагов. Алгоритм метода состоит из двух этапов, или ходов: прямого и обратно­ го. При прямом ходе система уравнений приводится к треугольному виду.

Пусть требуется решить следующую систему уравнений:

2JCJ + 8JC2 +4х3 = 4,

(П2.9а)

4 * i + * 2 “

2 х з =

(П2.96)

 

П р я м о й х о д . Первый шаг. И с к л ю ч а е м

и з в с е х у р а в н е н и й , к р о м е п е р ­

в о г о , н е и з в е с т н о е xv Р а з д е л и м п е р в о е у р а в н е н и е ( П 2 .9 а ) н а аи = 2:

*! + 4*2 + 2*3 = 2.

( П 2 .1 0 )

Д л я

и с к л ю ч е н и я хх и з у р а в н е н и я ( П 2 .9 6 ) , у м н о ж и м (П 2 .1 0 ) н а — 4

и с л о ж и м с ( П 2 .9 6 ) . А н а л о г и ч н о , у м н о ж а я ( П 2 . 10) н а - 8 и с к л а д ы в а я с

( П 2 .9 в ) , и с к л ю ч и м и з

н е г о

х{:

 

 

 

 

 

 

 

- 1 5 * 2 - 1 0 * 3 = - 1 0 ,

 

 

( П 2 .1 1 а )

 

- 2 0 * 2

- 8*3 = - 4 .

 

 

( П 2 .1 1 6 )

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

 

 

Второй шаг. И с к л ю ч и м

*2 и з в с е х у р а в н е н и й , к р о м е п е р в о г о

и в т о ­

р о г о . Д л я э т о г о р а з д е л и м ( П 2 .1 1 а ) н а - 1 5

 

 

 

 

 

*2 + 0,6 7 * 3

= 0 ,6 7 .

 

 

 

( П 2 .1 2 )

У м н о ж и м ( П 2 .1 2 ) н а 2 0 и с л о ж и м с ( П 2 .1 1 6 ) :

 

 

 

 

5,33*з = 9,33.

 

 

(П2.13)

Третий шаг. Д е л и м ( П 2 .1 3 )

н а 5 ,3 3 , в

р е з у л ь т а т е и м е е м

* 3 =

1 ,7 5 .

И т а к п о л у ч а е м с и с т е м у :

 

 

 

 

 

 

 

 

* j + 4 * 2 + 2 * 3 = 2,

 

 

 

 

* 2 + 0 ,6 7 * 3 = 0 ,6 7 ,

( П 2 .1 4 )

 

 

* 3 = 1 ,7 5

 

 

 

 

 

 

 

1

4

2

'

 

 

с в е р х н е й т р е у г о л ь н о й м а т р и ц е й

0 1 0 ,6 7

 

 

 

 

 

 

0

0

1

 

 

 

О б р а т н ы й х о д . И з с и с т е м ы ( П 2 .1 4 ) п о с л е д о в а т е л ь н о н а х о д и м :

3 - е у р а в н е н и е : * 3 = 1 ,7 5 ;

 

 

 

 

 

 

2 - е у р а в н е н и е : х^ = 0 ,6 7 - 0 ,6 7 * 3 = - 0 ,5 ;

 

 

1 -е у р а в н е н и е :

*1 =

2 - 4*2 -

2*3 =

0 ,5 .

 

 

Р е ш е н и е с и с т е м ы у р а в н е н и й ( П 2 .9 ) н а й д е н о :

 

 

 

* ! = 0 ,5 ,

*2 = - 0 ,5 ,

* 3 = 1 ,7 5 .

 

 

Н и ж е п р и в е д е н а з а п и с ь а л г о р и т м а м е т о д а Г а у с с а н а п с е в д о к о д е д л я с и с т е м ы и з п у р а в н е н и й с п н е и з в е с т н ы м и .

А л г о р и т м П 2 .3 .

 

 

 

 

P r o c e d u r e М е т о д

Г а у с с а

д л я

с и с т е м ы у р а в н е н и й [А ]{Х }={В }.

Данные:

п -

 

ч и с л о н е и з в е с т н ы х ;

 

В[1...п]

 

— к в а д р а т н а я м а т р и ц а к о э ф ф и ц и е н т о в ;

 

— п р а в а я ч а с т ь с и с т е м ы у р а в н е н и й .

Результат: В[1...п\

— р е ш е н и е с и с т е м ы ,

s t a r t

 

 

 

 

 

 

 

fo r к:=1 to л -1

 

 

 

< = п р я м о й х о д

if \АкrJc\<

1 0 “ 20

th e n

 

E r r o r

( Элемент главной диагонали равен О)

E x it

 

 

 

 

 

 

e n d

if

 

 

 

 

 

 

В/с := Вк / Akk

 

обработка k-й строки

fo r /

:= k + 1 to

 

 

 

A ki

 

 

A k i / A kk

 

n e x t

i

 

 

 

 

 

 

fo r j

k+ \

to

n

обработка всех нижележащих строк

 

if

\Ajk\

>

10”20 th e n

 

 

 

Bj

 

Bj — B k Ajk

 

 

fo r

/ :=

k + 1

t o n

 

 

 

 

 

Aji

Aji ~~ Ajk ' A ki

 

 

 

n e x t

/

 

 

 

 

AJ k = 0

 

 

 

e n d

if

 

 

 

 

n e x t j

 

 

 

 

 

 

n e x t k

 

Ann

 

 

 

B„ := Bn /

 

 

 

n

n •

nn

 

 

 

<= обратный ход

fo r j := YI—1 to

1 s te p - 1

fo r / := n to y+ 1 s te p - 1

 

Bj

 

Bt -

AJt

B,

n e x t

/

 

 

 

 

 

 

n e x t j

 

 

 

 

 

 

 

r e tu r n

 

 

 

 

 

 

 

П 2.3. Решение обыкновенных дифференциальных уравнений

М а т е м а т и ч е с к а я п о с т а н о в к а м н о г и х з а д а ч м а т е м а т и ч е с к о г о м о д е л и ­

р о в а н и я с в о д и т с я к с и с т е м е обыкновенных дифференциальных уравнений

(О Д У ) . П р о с т е й ш е е О Д У - у р а в н е н и е п е р в о г о п о р я д к а

% =

(П 2 .1 5 )

а х

 

Р е ш е н и е э т и х у р а в н е н и й з а к л ю ч а е т с я в н а х о ж д е н и и т а к и х ф у н к ц и й у (х ), к о т о р ы е п р и п о д с т а н о в к е о б р а щ а ю т у р а в н е н и е в т о ж д е с т в о . Н а п р и ­

м е р , у р а в н е н и е

dyjdx = ax+b и м е е т

р е ш е н и е

у = ах2/ 2 + Ьх + с .

Е с л и д а н о

н а ч а л ь н о е у с л о в и е ,

н а п р и м е р

>|х=0 = у0 , т о м о ж н о н а й т и

з н а ч е н и е к о н с т а н т ы

с : с —у 0.

 

К а к п р а в и л о ,

т о л ь к о в

о т н о с и т е л ь н о п р о с т ы х с л у ч а я х р е ш е н и е

О Д У м о ж н о п о л у ч и т ь а н а л и т и ч е с к и , т .е . в в и д е ф о р м у л . Ч и с л е н н ы е м е ­

т о д ы п о з в о л я ю т н а й т и р е ш е н и е любого О Д У ,

о д н а к о о т в е т п о л у ч а е т с я н е

в в и д е а н а л и т и ч е с к о й з а в и с и м о с т и , а в в и д е

т а б л и ц ы :

X

Y

X ,

У,

Хг Хз

ЪУз

П р и э т о м о б я з а т е л ь н о з а д а н и е н а ч а л ь н ы х у с л о в и й . О д н и м и з п р о с т е й ш и х

м е т о д о в ч и с л е н н о г о и н т е г р и р о в а н и я О Д У я в л я е т с я м е т о д Э й л е р а .

М е т о д Э й л е р а . П у с т ь д и ф ф е р е н ц и а л ь н о е у р а в н е н и е п р и в е д е н о к

в и д у ( П 2 . 1 5 ) , а в и д ф у н к ц и и f(x ,y ) и з в е с т е н .

З а м е н и м

п р и б л и ж е н н о

д и ф ф е р е н ц и а л ы п р и р а щ е н и я м и :

 

 

 

Ау

Ау = f(x,y)А х .

 

= / ( * , У ) , и л и

( П 2 .1 6 )

З а д а д и м н а ч а л ь н ы е у с л о в

и я jjx=0 = у0 и

в ы б е р е м

ш а г А х п р и р а щ е н и я а р ­

г у м е н т а . Т о г д а , и с п о л ь з у я ( П 2 .1 6 ) , м о ж н о п о с л е д о в а т е л ь н о в ы ч и с л и т ь з н а ч е н и я х и у:

*0

X\=XQ+ A X

х2=х\+Ах

х3=х2+Дх

 

Уо

У1=Уо+А.х»Уо) Д*

У2=У1+Л*1.л) А*

Уз=У

+Л хьУ ) Лх

. . .

 

 

2

2

 

и л и

 

 

 

 

 

 

xk+l =хк +Ах, yk+l =yk + f(x k,yk)Ax.

( П 2 .1 7 )

С п о м о щ ь ю а н а л и т и ч е с к о г о м е т о д а п о л у ч а е м р е ш е н и е в в и д е г л а д ­ к о й и н т е г р а л ь н о й к р и в о й у р а в н е н и я ( П 2 .1 5 ) (р и с . П 2 .4 ) .

И с п о л ь з о в а н и е м е т о д а Э й л е р а п о з в о л я е т п о л у ч и т ь п о с л е д о в а т е л ь ­ н о с т ь т о ч е к , с о е д и н и в к о т о р ы е м о ж н о п о с т о о и т ь ломаную Эйлера. С у м е н ь -

шением шага интегрирования Дх кривая Эйлера приближается к интег­ ральной кривой.

Для метода Эйлера характерны малая точность вычислений и систе­ матическое накопление ошибок. Пример алгоритма, использующего ме­ тод Эйлера, для системы уравнений первого порядка приведен в гл. 2.

Примечание. Задачи динамики точки, как правило, приводят к сис­ теме двух ОДУ первого порядка по каждой координате. При вычислении новых скоростей точки значения действующих сил берутся на момент начала каждого шага и не учитывается их изменение за шаг. Таким об­ разом, принимается, что на шаге по времени точка движется под дей­ ствием постоянных сил и с постоянным ускорением.

Это обстоятельство можно учесть при вычислении новой координа­ ты точки. Если уравнение для координат решать после уравнения для скоростей, то в этом случае можно воспользоваться значениями скорос­ тей точки на начало и на конец шага по времени. При равноускоренном движении пройденный путь равен произведению величины интервала времени на среднюю скорость точки на этом интервале. С учетом ука­ занного обстоятельства соотношения для скорости и координаты точки могут быть переписаны следующим образом:

v*+l =vk +AtF(t,xk,vk); хк+\ =xk +*t(vM +vk)/2.

Приведенная схема вычисления соответствует модифицированному методу Эйлера и дает более точные результаты интегрирования.

Метод Рунге-Кутта. Пусть дифференциальное уравнение приведено к виду (П2.15), а вид функции f(x,y) известен. Выберем шаг интегриро­ вания Ах и для краткости введем обозначения хк = х$ + кАх и Ук~У(х1)’ к = 0, 1,2, 3,...

р\к) = /(**, Ук)Ах,

 

Р{к) = f ( x k + &х/2, ук +p[k)/l)Ax,

 

р2к) =f(xk + Дх/2, ук +р\к)/2)Ах,

(П2.18)

Р(к) = f(xk + Ах, ук + р(3к))Ах.

 

Согласно обычному методу Рунге-Кутта [36], последовательность значений ук искомой функции у определяется по формуле:

Ук+l = У к+ АУк’

где

АУк = (Р\к) + 2/4*> + 2р\к) + 4*>)/б, к = 0, 1, 2, 3,

(П2.19)

Метод Рунге-Кутта обладает значительной точностью и несмотря на свою трудоемкость широко используется при численном решении ОДУ.

Основная сложность при использовании численных методов интег­ рирования ОДУ — выбор величины шага интегрирования Ах. На прак­ тике величину шага Ах выбирают двойным пересчетом: вначале опреде­ ляют ук с шагом Ах, а затем с шагом Дх/2. Если расхождение результа­ тов превысило некоторую малую заданную величину е, то шаг уменьшают еще в 2 раза и повторяют вычисления. Уменьшение производят до тех пор, пока не будет достигнута заданная точность вычислений.