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

Учебное пособие «Прикладная информатика»

..pdf
Скачиваний:
13
Добавлен:
05.02.2023
Размер:
592.86 Кб
Скачать

f (x , x ,..., x ) = 0,

 

 

1

1

2

n

 

f2 (x1

, x2 ,..., xn ) = 0,

 

................................

(5.13)

 

 

 

 

 

 

f

n

(x , x ,..., x ) = 0.

 

 

1

2

n

 

Систему (5.13) удобнее записать в матричном виде:

f (x) = 0,

 

(5.14)

где f =

f1

- вектор – функция; x =

x1

 

...

...

- вектор – аргу-

 

fn

 

xn

 

мент.

Решение системы (5.14), как и для системы линейных уравнений (см. п. 3.8), будем искать в виде

x( p+1) = x( p ) − μ pWp' f (p ).

(5.15)

Здесь x( p ) и x( p +1) - векторы неизвестных на p и p+1 шагах итераций; вектор невязок на p-ом шаге – f(p) = f(x(p)); W'p – транспонированная матрица Якоби на p – ом шаге;

μ p

=

( f p ,W W '

f (p ))

 

 

 

 

 

p p

 

 

 

;

 

'

f

(p )

 

'

f

(p )

 

 

(W W

 

,W W

)

 

 

 

p

p

 

 

p

p

 

 

 

 

 

f ( p )

W =

i

p

x(j p )

 

 

 

(i, j = 1, 2,...n) .

61

Пример 5.2. Методом градиента вычислим приближенно корни системы

 

x + x

2

- 2 yz = 0.1,

 

 

y - y2 + 3xz = -0.2,

 

z + z

2

+ 2xy = 0.3,

 

 

расположенные в окрестности начала координат.

Имеем:

x + x2 - 2 yz - 0.1 f = y - y2 + 3xz + 0.2 ;

z + z2 + 2xy - 0.3

 

1+ 2x

-2z

W =

 

3z

1- 2 y

 

 

 

2 y

2x

 

 

 

 

-2 y

3x .

1+ 2z

Выберем начальное приближение:

 

 

 

 

 

0

 

-0.1

 

 

1

0

0

 

x(0) = 0

;

f (0) =

0.2

;

W = 0

1

0

= E.

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

0

 

 

-0.3

 

 

0

1

 

По вышеприведенным формулам найдем первое приближе-

ние:

 

( f (0)

, f (0) )

 

 

 

 

 

 

 

 

 

 

0.1

μ0 =

 

 

(1)

 

(0)

 

 

(0)

 

 

 

 

 

 

 

 

=1;

x

 

= x

 

-1

× Ef

 

=

 

-0.2 .

( f

(0)

, f

(0)

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.3

Аналогичным образом находим следующее приближение:

62

 

 

 

0.13

 

1.2

-0.6

0.4

 

0.181

 

f (1)

=

0.05 ;

W =

 

0.9

1.4

0.3 ;

W ' f (1)

= 0.002

 

;

 

 

 

 

 

1

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

-0.4

0.2

 

 

 

 

 

 

 

 

0.05

 

 

1.6

 

0.147

 

 

 

 

 

 

0.2748

 

 

 

 

 

 

 

 

 

 

 

W W ' f (1) = 0.2098

;

 

μ =

0.054374

= 0.3719;

 

 

 

 

 

 

 

 

1

1

 

 

 

 

 

 

1

 

0.14619797

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.1632

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.1

 

 

 

0.181

 

0.0327

 

 

 

 

 

(2)

=

 

 

0.3719 ×

 

 

 

=

 

 

 

 

 

x

 

-0.2 -

0.002

 

-0.2007

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.3

 

 

 

0.147

 

 

0.2453

 

 

 

 

Ограничимся двумя итерациями (шагами), и оценим невяз-

 

ку:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.032

 

 

 

 

 

 

 

 

 

 

 

 

 

(2)

=

 

-0.017

 

 

 

 

 

 

 

 

 

 

 

 

f

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-0.007

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Замечания

Как видно из примера, решение достаточно быстро сходится, невязка быстро убывает.

При решении системы нелинейных уравнений методом градиента матрицу Якоби необходимо пересчитывать на каждом шаге (итерации).

Вопросы для самопроверки

63

Как найти начальное приближение: а) для метода Ньютона; б) для метода градиента?

В методе скорейшего спуска вычисляется Якобиан (матрица Якоби). Чем отличается Якобиан, вычисленный для СЛАУ, от Якобиана, вычисленного для нелинейной системы уравнений?

Каков критерий остановки итерационного процесса при решении системы нелинейных уравнений: а) методом Ньютона; б) методом скорейшего спуска?

64

6. РЕШЕНИЕ ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ

6.1. Методы решения задачи Коши

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

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

Пусть на отрезке x0 x b требуется найти решение y(x) дифференциального уравнения

y '= f (x ,y ),

(6.1)

удовлетворяющее при x = x0 начальному условию

y(x0 ) = y0 .

(6.2)

Будем считать, что условия существования и единственности решения поставленной задачи Коши выполнены.

На практике найти общее либо частное решение задачи Коши удается крайне редко, поэтому приходится решать эту задачу приближенно. Отрезок [x0, b] накрывается сеткой (разбивается на интервалы) чаще всего с постоянным шагом h ( h = xn+1 - xn ), и по какому-то решающему правилу находится значение yn+1 = y(xn+1). Таким образом, в качестве решения задачи Коши

65

численными методами мы получаем таблицу, состоящую из двух векторов: x = (x0 , x1 , … xn) вектора аргументов и соответствующего ему вектора функции y = ( y0 , y1,yn ).

Численные методы (правила), в которых для нахождения значения функции в новой точке используется информация только об одной (предыдущей) точке, называются одношаго-

выми.

Численные методы (правила), в которых для нахождения значения функции в новой точке используется информация о нескольких (предыдущих) точках, называются многошаговы-

ми.

Из общего курса обыкновенных дифференциальных уравнений широкое распространение получил аналитический метод, основанный на идее разложения в ряд решения рассматриваемой задачи Коши. Особенно часто для этих целей используется ряд Тейлора. В этом случае вычислительные правила строятся особенно просто. При этом приближенное решение ym(x) исходной задачи ищут в виде

 

m

(x x )i

 

 

 

 

 

y m (x) =

 

0

y(i ) (x0 ),

 

 

 

 

i!

 

(6.3)

 

i=0

 

 

 

 

x0 x b.

 

 

 

 

 

 

 

Здесь

y(0) (x ) = y(x ),

y(1) (x ) = y '(x

)= f (x ,y

), а

 

 

 

0

0

0

0

0

0

значения

y(i) (x ),

i = 2, 3,…

m находят по формулам, получен-

 

0

 

 

 

 

 

 

 

ным последовательным дифференцированием уравнения (6.1):

66

y(2) (x ) = y''( x ) =

f ( x , y ) +

f( x

, y ) f ( x

, y );

0

 

 

0

 

 

x

0

 

0

 

 

 

0

0

y

0

 

0

y(3) (x ) = y'''( x) =

 

f2

( x

, y) + 2

 

f( x , y) f ( x , y) +

0

 

 

0

 

 

 

x

 

0

 

0

 

 

 

0

0

y

 

0 0

+ f 2 (x , y )f

 

2 (x , y ) + f

y

(x , y )[f

x

(x , y ) +

 

 

0

0

y

0

 

0

 

 

 

 

0

0

 

0

0

 

 

(6.4)

+ f (x0 , y0 )f y (x0 , y0 )];

 

 

 

 

 

 

 

 

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y(m) (x ) = F

 

(f ;f

x

;f

x2

;f

xy

;f

y2

;...;f

;f

)x = x

, y = y .

0

m

 

 

 

 

 

 

xm−1

 

 

ym−1

 

 

0

0

Для значений x, близких к x0, метод рядов (6.3) при достаточно большом значении m дает обычно хорошее приближение к точному решению y(x) задачи (6.1). Однако с ростом расстояния x - x0 погрешность приближенного равенства y(x) ≈ ym(x), вообще говоря, возрастает по абсолютной величине, и правило (6.3) становится вовсе неприемлемым, когда x выходит из области сходимости соответствующего ряда (6.3) Тейлора.

Если в выражении (6.3) ограничиться m = 1, то для вычисления новых значений y(x) нет необходимости пересчитывать значение производной, правда и точность решения будет невысока. Графическая интерпретация этого метода приведена на рис. 6.1.

67

y

y0

y1 производная f(xo,y0) y2

интегральная кривая

x0 x1 x2

x

Рис. 6.1. Разложение функции в ряд Тейлора (m=1)

6.2. Метод рядов, не требующий вычисления производных правой части уравнения

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

m

h

i

 

ym (xn+1 ) ≈

 

y(i) (xn ),

(6.5)

 

 

i=0

i!

 

где xn+1 = xn + h.

Чтобы выполнить это условие (последнее), производные

y(i)(x),

i = 2, 3,..., m, входящие в правую часть уравнения (6.5), можно заменить по формулам численного дифференцирования их приближенными выражениями через значение функции y' и учесть,

что y'(x) = f [x, y(x)].

В случае m = 1 приближенное равенство (6.5) не требует вычисления производных правой части уравнения и позволяет с погрешностью порядка h2 находить значение y(xn+ h) решения этого уравнения по известному его значению y(xn). Соответствующее одношаговое правило можно записать в виде

68

yn+1 = yn + h fn .

(6.6)

Это правило (6.6) впервые было построено Эйлером и носит его имя. Иногда его называют также правилом ломаных или методом касательных. Метод Эйлера имеет простую геометрическую интерпретацию (см. рис. 6.2).

69

y

y0

 

y1

 

y2

ломаная Эйлера

 

интегральная кривая

x0 x1 x2

x

Рис. 6.2. Нахождение решения методом Эйлера

Замечание Метод Эйлера имеет порядок точности ~ h2 на одном шаге. Практическая оценка погрешности приближенного решения может быть получена по правилу Рунге.

6.3. Метод Рунге-Кутта

Изложим идею метода на примере задачи Коши:

y '= f (x ,y );

x0 x b;

(6.7)

y(x0 ) = y0 .

 

Интегрируя это уравнение в пределах от x до x + h (0 < h <1), получим равенство

x+h

 

y(x + h) = y(x) + f [t, y(t)]dt,

(6.8)

x

которое посредством последнего интеграла связывает значения решения рассматриваемого уравнения в двух точках, удаленных друг от друга на расстояние шага h.

70