Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
-6-05-~1.PDF
Скачиваний:
1
Добавлен:
28.12.2025
Размер:
6.59 Mб
Скачать

50

где α определяется по формулам:

α = (1f1(ξ));

f (ξ)= f (xn )xn . xn xn1

При этом на первом шаге x1, определяется простым методом последовательных приближений.

Численное решение линейных и нелинейных уравнений средствами MATLAB приведено в указаниях по выполнению лабораторных работ.

Тема 2.3 Численное решение систем линейных и нелинейных уравнений

Решение систем линейных алгебраических уравнений методом Гаусса.

Это прямой метод, используемый для решения систем относительно невысокого по-

рядка (n 200). Этот метод называют методом исключения.

Рассмотрим систему линейных алгебраических уравнений в общем виде, которая имеет

вид:

a11 x1 + a12 x2 +...+ a1n xn = b1a21 x1 + a22 x2 +...+ a2n xn = b2

…………………………………

an1 x1 + an2 x2 +...+ ann xn = bn

Алгоритм метода Гаусса включает 2 этапа:

1)прямой ход, связанный с исключением неизвестных из уравнений;

2)обратный ход (обратная подстановка).

Процесс исключения неизвестных осуществляется следующим образом. Пусть a110.

1.Вводим n1 множитель: mi = ai1/a11, i = 2, 3,..., n.

2.Вычитаем из каждого i-го уравнения первое, домноженное на mi, т. е.

aij(1) = aij a1 j mi ;

bi(1) = bi b1 mi ,

где i = 2, 3,..., n; j = 1, 2,..., n.

Отсюда видно, что для всех уравнений ai1=0. Тогда получаем систему уравнений вида

 

a11 x1 + a12 x2 +...+ a1n xn = b1

 

0

(1)

x2

(1)

 

(1)

 

+ a22

+...+ a2n

xn = b2

 

…………………………………

 

 

 

 

 

 

 

 

0

+ a(1)

x

+...+ a(1)

x

= b(1)

 

 

2n

2

nn

n

n

3. Аналогичные действия повторяем для2-го, 3-го и т.д.уравнений. нанекотором этапе k мы используем множитель для исключения xk:

51

m(k1) = a(k1) / a(k1), где i = k +1,...,n .

i

ik

kk

Тогда

aijk (k )= aij(k1) akj(k1) mi(k1) ;

bi(k ) = bi(k1) bk(k1) mi(k1),

где i = k+1,..., n; j = k, k+1,..., n.

4. Окончательно получаем треугольную систему уравнений

 

a11 x1 + a12 x2 +...+ a1n xn = b1

 

(1)

(1)

 

(1)

 

0 + a22 x2

+...+ a2n

xn = b2

 

…………………………………

 

 

 

 

 

 

0 +0 + ...

+ a(n1) x

= b(n1)

 

 

nn

n

n

Блок-схема алгоритма процесса исключения имеет вид (рис. 2. 15)

k=1

i=k+1

Перестановка уравнений, чтобы

akk =0

mi =a ik /a kk

a ik =0

j=k+1

aij =a ij -ma kj

j=n j=j+1

bi =b i -mb k

i=n i=i+1

k=n-1 k=k+1

к обратной подстановке

Рисунок 2. 15 – Блок-схема прямой прогонки

Обратная подстановка задается формулами

xn = bnn1 / annn1 ;

 

52

 

xn1 = (bnn12 ann1,2n xn )/ an(n1,2n)1 ;

 

n

xj = (b(j j1)

a(jij1) xi ) / a(jjj1) , j = n 2, n 3,....

 

i= j+1

Блок-схема алгоритма обратного хода представлена на рис. 2. 16.

от исключения

xn =b n /a nn

i=n-1

j=i+1

s=0

S=S-aij xj

j=n нет j=j+1

да

xi =(b i -S)/aii

i=1 нет i=i-1

да

Конец

Рисунок 2.16 – Блок-схема обратного хода метода Гаусса

Для иллюстрации метода рассмотрим систему из трех уравнений:

a11x1 + a12 x2 + a13x3 = b1;a21x1 + a22 x2 + a23x3 = b2;a31x1 + a32 x2 + a33x3 = b3.

В cлучае необходимости добиваемся, чтобы a111 0 путем перестановки уравнений.

Вводим множители m2 = a21 / a11 и m3 = a31 / a11 .

Умножаем первое уравнение на множитель m2 и вычитаем из второго, аналогично на m3 и вычитаем из третьего.

(a21 m2 a11 ) x1 +(a22 m2 a12 ) x2 +(a23 m2 a13 ) x3 = b2 m2 b1a21 m2 a11 = a21 (a21 / a11 ) a11 = 0.

Тогда получаем

a22(1) x2 + a23(1) x3 = b2(1) ,

53

где a22(1) = a22 m2 a12; a23(1) = a23 m2 a13; b2(1) = b2 m2 b1 .

В результате получаем систему уравнений

a

x

+ a

x

+ a

x

 

= b ;

 

11

1

12

2

13

3

1

 

 

 

a22(1) x2 + a23(1) x3

= b2(1);

 

 

 

(1)

 

(1)

 

 

(1)

 

 

 

a32 x2 + a33 x3

= b3 .

где a32(1) = a32 m3 a12; a33(1) = a33 m3 a13; b3(1) = b3 m3 b1 .

Данная система эквивалентна исходной, однако последние два уравнения содержат только два неизвестных и могут рассматриваться как система из двух уравнений с двумя неизвестными. Исключим из одного из этих уравнений неизвестное x2. Необходимо, чтобы

a122 0 , в случае надобности добиваемся этого перестановкой уравнений местами. Вводим новый множитель m3(1) = a32(1) / a22(1) .

Умножим второе уравнение на m3(1) и вычтем из третьего. Результат вычисления

(a32(1) m3 a22(1) ) x2 +(a33(1) m3(1) a23(1) ) x3 = b3(1) b2(1) m3(1)a32(1) m3(1) a22(1) = a32(1) (a32(1) / a22(1) ) a22(1) = 0.

Окончательно получаем

a33(2) x3 = b3(2) ,

где a33(2) = a33(1) m3(1) a23(1); b3(2) = b3(1) m3(1) b2(1) .

После выполнения двух шагов мы получаем систему уравнений, приведенную к диагональному виду:

a x + a x + a x = b ;

 

11

1

12

2

13

3

1

 

 

 

a22(1) x2 + a23(1)

x3

= b2(1) ;

 

 

 

 

 

(2)

x3

 

(2)

 

 

 

 

 

a33

= b3 .

Теперь начинается обратный ход. Определяем из последнего уравнения x3 = b3(2) / a33(2) . Подставив во второе, имеем

x2 = (b2(1) a23(1) x3 )/ a22(1) .

Аналогично

x1 = (b1 a22 x2 a23 x3 )/ a11 .

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

54

Иногда используется не только перестановка строк, но и перестановка столбцов, что связано с переименованием неизвестных и требует более сложного алгоритма для запоминания этих перестановок.

Рассмотрим численный пример, иллюстрирующий метод главного элемента.

3,241 100 x1 +1,600 102 x2 =1,632 102 ; 1,020 104 x1 +1,540 103 x2 =1,174 104 .

Точное решение этой системы: x1 = 1,000 100; x2 = 1,000 100

1. Решим полученную систему, используя точность 4 знака в мантиссе числа. При решении системы в порядке записи уравнений имеем

m =1,020 104 /3,241 100 =3,147 103 .

Преобразованное второе уравнение имеет вид

5,730 101 x1 5,020 105 x2 = −5,019 105 .

Принимаем первое слагаемое в левой части равным 0, тогда

x2 = −5,019 105 / 5,020 105 = 9,998 101 .

Затем из первого уравнения получаем x1 = 9,873 101 .

2. С помощью метода главного элемента

m = 3,241 100 /1,020 104 = 3,177 104.

Преобразованное второе уравнение записывается

0,000 x +1,595 102

x =1,595 102

x =1,000 100

;

x =1,000 100.

1

2

2

 

1

Итерационные методы решения систем линейных алгебраических уравнений.

Дают сокращение времени решения на 20...30 % по сравнению с точными методами при больших n.

Если итерационный метод сходится, то он дает следующие преимущества по сравнению с точными методами:

1)если итерации сходятся достаточно быстро, то затраты времени на получение реше-

ния уменьшаются, так как общее количество арифметических операций для алгоритма Гаусса пропорционально n3, а для каждой итерации число действий пропорционально n2;

2)погрешность округления сказывается значительно меньше, чем при решении по методу Гаусса. Кроме того, случайные ошибки в процессе итераций исключаются на следующем шаге уточнения решений;

3)особенно выгодно использовать метод итераций, когда значительное число коэффициентов равно 0, что часто встречается при решении конечно-разностных задач.

Для решения СЛАУ итерационными методами система уравнений преобразуется к

виду:

55

x1 = (b1 a12 x2 ...a1n xn )/ a11;

x2 = (b2 a22 x2 ...a2n xn )/ a21;

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

xn = (bn an2 x2 ...ann xn )/ an1.

Задав столбец начальных приближений x10 , x20 , ..., xn0 и, подставляя их в правые части системы, вычисляем новые приближения x11, x12 , ..., x1n .

Общее выражение для итерационного процесса для k-го шага имеет вид:

x1k+1 = φ1 (x2k ,x3k ,...,xnk );

x2k+1 = φ2 (x1k ,x3k ,...,xnk );

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

xnk+1 = φn (x1k ,x2k ,...,xn1k ).

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

x1k+1 = φ1 (x2k ,x3k ,...,xnk );

x2k+1 = φ2 (x1k+1,x3k ,...,xnk );

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

xnk+1 = φn (x1k+1,x2k+1,...,xn1k+1 ).

Данный подход получил название метода Зейделя. Итерационная формула Зейделя имеет вид

 

 

n

m1

 

 

xk+1

=

bm amj xkj amj xkj

+1

 

j=m+1

j=1

.

m

 

 

amm

 

 

 

 

 

 

 

Блок-схема алгоритма метода Зейделя для решения СЛАУ имеет вид, приведенный на рис. 2. 17.

Решение систем трансцендентных уравнений.

Система трансцендентных уравнений в общем виде представляется в следующем виде:

F1 (x1, x2 , , xn )= 0;

F2 (x1, x2 , , xn )= 0;

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

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

Fn (x1, x2 , , xn )= 0.

56

где F1, F2,…, Fn – функции независимых переменных, среди которых есть нелинейные (трансцендентные).

 

 

 

 

 

 

Начало

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод a ij ,b i

 

 

 

 

 

 

 

j=n-1?

 

 

 

 

 

 

 

 

 

 

 

 

E, Max

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

 

 

 

 

 

 

 

 

 

 

 

i=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j=i+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xi =0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

 

 

 

 

 

 

 

 

 

 

SUM=SUM+aij xj

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=n?

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

 

 

 

 

 

 

 

i=i+1

 

 

 

 

 

 

 

 

 

 

 

j=n?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j=j+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

да

 

 

 

 

 

 

 

 

 

 

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ITER=1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

TEMP=(b i -SUM)/a ii

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BIG=0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

|TEMP-x i|>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BIG=

 

 

 

 

 

 

 

 

 

 

i=1

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

BIG ?

 

 

 

 

 

 

 

|TEMP-x i|>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SUM=0

 

 

 

 

 

 

 

 

 

 

нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xi =TEMP

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=1?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=n?

 

 

 

 

 

 

i=i+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j=1

 

 

 

 

 

 

 

 

 

 

да

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SUM=SUM+aij xj

 

 

 

 

 

 

 

BIG<E

 

 

 

останов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

печать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

 

 

 

 

 

нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j=i-1?

 

 

 

 

 

 

 

нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j=j+1

 

 

 

 

 

ITER>=

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

да

 

 

 

 

 

 

 

 

 

MAX

 

 

 

 

 

 

ITER=ITER+1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

останов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 2. 17 – Блок-схема алгоритма метода Зейделя для решения СЛАУ

Система уравнений может не иметь решений, иметь единственное решение, конечное или бесконечное количество решений. Вопрос о количестве решений должен решаться для каждой конкретной задачи отдельно.

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

Пример системы трансцендентных уравнений:

sin (x )+3 lg(x )x2 = 0;

2 1 2

2 x13 x1 x2 5 tg(x1 )+13x2 = 0.

Наиболее распространенным методом для решения подобных задач является метод Ньютона (Ньютона-Рафсона).

Алгоритм метода Ньютона-Рафсона.

1.Задается погрешность вычисления корней уравнения ε, число уравнений n, максимальное число итераций m, и вектор начальных приближений X (0) (x1(0), x2(0), , xn(0) ).

57

2.Используя разложение Fi(xi) в ряд Тейлора формируется матрица Якоби Fi , не-

xi

обходимую для расчета приращений Fi(xi) при малом изменении переменных. Матрица Якоби в развернутом виде записывается следующим образом:

F1

x1

F1

x2

F1

xn

F2

x1

F2

x2

F1

xn

 

 

 

 

 

 

 

x1

Fn x1

Fn

 

 

Fn

xn

Поскольку аналитическое дифференцирование Fi(xi) в общем случае нежелательно (а чаще всего невозможно), то заменяем частные производные в матрице Якоби их приближенными конечно-разностными значениями

Fi

Fi (xi + hi )Fi (xi )

,

h

x

 

i

i

 

где hi – малое приращение переменной xi.

3. Составляется и решается система линейных уравнений для малых приращений переменных xi:

F1

x1

F1

x2

F1

xn

x1

F1

F2

x1

F2

x2

F1

xn

x2

= F2 .

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

Fn x1

Fn

 

 

 

xn

 

 

Fn

 

Fn

xn

 

 

 

 

Из этой системы находится xi.

4. Вычисляются уточненные значения

x1( j+1) = x1( j) + ∆x1, x2( j+1) = x2( j) + ∆x2 ,

xn( j+1) = xn( j) + ∆xn.

или в общем виде

xi( j+1) = xi( j) + ∆xi .

5. Для всех xi проверяется выполнение условия:

xi

 

 

< ε ;

 

xi

 

 

< ε .

 

 

x

 

 

 

i

 

 

 

58

Расчет останавливают при выполнении одного (а иногда и обоих) из двух условий. Если условие не выполняется, то переходят ко 2-му шагу, т. е. выполняется новая итерация. Иначе

вектор xi( j+1) считается решением системы уравнений.

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

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

такой системы необходимо иметь вектор начальных приближений X (0) (x1(0), x2(0), , xn(0) ).

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

Алгоритм метода простых итераций можно представить в виде шагов:

1)производят отделение корней любым доступным способом;

2)из каждого уравнения выражаются поочередно неизвестная переменная, например, из первого уравнения x1, из второго – x2, из третьего – x3 и т. д.;

3)задаются начальными приближениями (x1(0), x2(0), , xn(0) );

4)вычисляются значения (x1(1), x2(1), , xn(1) ) путем подстановки в уравнения, получен-

ные на шаге 2, значений начальных приближений (x1(0), x2(0), , xn(0) );

5) проверяем условие сходимости, т. е. абсолютная разница значений неизвестных на

соседних итерациях

 

x( j +1) x j

 

по модулю должна быть меньше заданной погрешности;

 

 

 

 

i

i

 

 

6) если пункт 5 не выполнился, то повторяется пункт 4.

В методе итераций Зейделя для каждого расчета используют уже найденные наиболее точные значения каждой переменной, аналогично, как в методе Зейделя для СЛАУ, рассмотренном выше.

Численное решение систем линейных алгебраических и нелинейных уравнений средствами MATLAB приведено в указаниях по выполнению лабораторных работ.

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

В данной лекции будем в основном рассматривать метопы решения одного обыкновенного дифференциального уравнения (ОДУ) первого порядка (частных производных в этом уравнении не должно быть) с одним начальным условием:

y′ = f (x, y), y(x0 )= y0 .

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

y′′ = g (y, y, x).

можно переписать в следующем виде:

59

z′ = g (z, y, x); y′ = z .

где z – новая зависимая переменная, определяемая вторым уравнением. Теперь получается система уравнений относительно у и z. Решение этой системы даст и функцию, и ее производную.

Установим теперь, что имеется в виду под решением дифференциального уравнения с начальным условием, и что имеется в виду под его численным решением. Дифференциальное уравнение можно рассматривать как определение кривой через ее производную в координатной плоскости х-у. В общем случае уравнению удовлетворяет целое семейство решений (рис. 2.18), однако, начальное условие позволяет выбрать из этого семейства одну определенную кривую, которая проходит через заданную точку (x0, y0).

Рисунок 2.18 – Множество решений ОДУ

Грубо говоря, численное решение дифференциального уравнения находится следующим образом. Дифференциальное уравнение задает наклон кривой в любой точке как функцию от х и от у. В начальный момент известна только одна точка, через которую проходит кривая, а именно (x0, y0). Поэтому решение начинается с этой точки и вычисляется наклон касательной к кривой при х = хо и у = y0 и далее осуществляется продвижение на некоторое малое расстояние вдоль получившейся касательной. Если шаг по х обозначить через h, то в результате получается точка x1 = x0+h и новое значение y = y1. Продолжая эту процедуру дальше, можно получить последовательность коротких отрезков прямой, которые, в некотором предположении, являются достаточно хорошим приближением к искомой функции.

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

Существует два широких класса методов численного решения ОДУ.

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

60

допускаемую ошибку.

Рисунок 2.19 – Графическое представление численного метода решения дифференциального уравнения

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

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

Одноступенчатые (прямые) методы (методы Рунге-Кутта).

Эти методы обладают следующими отличительными свойствами:

1. Эти методы являются одноступенчатыми: чтобы найти ym+1, нужна информация только о предыдущей точке хт, ут.

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

3. Они не требуют вычисления производных от f(х, у), а требуют только вычисления самой функции (правой части ОДУ).

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

Метод Эйлера.

Рассмотрим сначала геометрическую интерпретацию метода, а затем выведем некоторые формулы на основе геометрических аналогий. После этого мы подтвердим полученные результаты аналитически.

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

ym' = f (xm , ym ),

которая пройдет через точку хт, ут. Это построение показано на рисунке 2.20, где кривая

61

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

ту, где прямая L1 пересечет ординату, проведенную через точку x = xm+1 = xm + h .

Рисунок 2.20 – Геометрическая интерпретация метода Эйлера

Уравнение прямой L1 выглядит так:

y = ym + ym(x xm )

Но так как ym′ = f (xm , ym ) и xm+1 = xm + h , можно записать:

ym+1 = ym + h f (xm , ym ).

Это и есть формула метода Эйлера.

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

eT = k h2.

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

Метод Эйлера является одним из самых старых и широко известных методов численного интегрирования дифференциальных уравнений. Этот метод имеет довольно большую ошибку ограничения, кроме того, он очень часто оказывается неустойчивым, так как малая ошибка (происходящая от ограничения, округления или заложенная в исходных данных) увеличивается с ростом х. Поэтому этот метод практически не используется при решении технических задач. Согласно ранее сформулированному определению, метод Эйлера является методом Рунге-Кутта первого порядка, так как он согласуется с разложением в ряд Тейлора вплоть до членов порядка h.

Рассмотрим более точные прямые методы. Для вычисления значения ym+i метод Эйлера использует наклон касательной только в точке хт, ут. Этот метод можно усовершенствовать

62

множеством различных способов. Из этих способов рассмотрим два, так называемые исправ-

ленный метод Эйлера и модифицированный метод Эйлера, а затем покажем, что оба они не что иное как два метода из семейства методов Рунге-Кутта второго порядка.

Исправленный метод Эйлера.

В исправленном методе Эйлера мы находим средний тангенс угла наклона касательной для двух точек: (хт, ут) и (xm + h, ym + h ym' ). Вторая точка есть та самая, которая в методе Эй-

лера обозначалась xm+1, уm+1.

Геометрически процесс нахождения точки (xm+1, уm+1) можно проследить по рис. 2.21. С помощью метода Эйлера находится точка (xm + h, ym + h ym' ), лежащая на прямой L1. В этой

точке снова вычисляется тангенс угла наклона касательной (на рисунке этому значению соответствует прямая L2). Усреднение двух тангенсов дает прямую L

Далее через точку (хт, ут) мы проводим прямую L, параллельную L . Точка, в которой прямая L пересечется с ординатой, восстановленной из х = хm+1т+h, и будет искомой точкой ут+1, т. е. решением.

Рисунок 2.21 – Геометрическая интерпретация исправленного метода Эйлера

Тангенс угла наклона прямой L и прямой L равен

Φ(xm ,ym ,h)= 12 f (xm ,ym )+ f (xm + h,ym + h ym) ,

где ym′ = f (xm , ym )

Уравнение прямой L при этом записывается в виде

y = ym +(x xm ) Φ(xm ,ym ,h).

тогда окончательное решение выглядит как:

ym+1 = ym + h Φ(xm ,ym ,h).

Это и есть уравнение исправленного метода Эйлера.

63

Исправленный метод Эйлера согласуется разложением в ряд Тейлора вплоть до членов степени h2, являясь таким образом методом второго порядка.

Модифицированный метод Эйлера.

В исправленном методе Эйлера усреднялись наклоны касательных. Можно пойти по другому путии усреднять точкив следующем смысле. Рассмотрим рис. 2.22, где первоначальное построение сделано точно так же, как и на рис. 2.21 – через точку хт, уm проведена прямая L1 с тангенсом угла наклона, равным f(хт, уm). Но на этот раз мы берем точку, лежащую на пересечении этой прямой и ординаты х= хт+h/2. На рисунке эта точка обозначена через P, а ее ордината равна у= ут + (h/2) у’т.

Рисунок 2.22 – Геометрическая интерпретация модифицированного метода Эйлера

Вычислим тангенс угла наклона касательной в этой точке

Φ(xm ,ym ,h)= f xm + h ,ym + h ym' ,2 2

где

ym′ = f (xm , ym ).

Прямая с таким наклоном, проходящая через Р, обозначена через L*. Вслед за этим, мы проводим через точку хт, ут прямую, параллельную L*, и обозначаем ее через L0. Пересечение этой прямой с ординатой х=хт+h и даст искомую точку хm+h, ym+1. Уравнение прямой L0 можно записать в виде

y = ym +(x xm ) Φ(xm ,ym ,h)

где

Φ(xm ,ym ,h)= f xm + h ,ym + h ym' ,2 2

Поэтому уравнение модифицированного метода Эйлера имеет вид:

ym+1 = ym + h Φ(xm ,ym ,h)

64

Модифицированный метод Эйлера согласуется разложением в ряд Тейлора вплоть до членов степени h2, являясь таким образом методом второго порядка.

Метод Рунге-Кутта 4-го порядка.

Методы Рунге-Кутта третьего и четвертого порядков можно вывести совершенно аналогично тому, как это делалось при выводе методов первого и второго порядков.

Ограничимся тем, что приведем формулы, описывающие метод четвертого порядка, один из самых употребительных методов интегрирования дифференциальных уравнений. Этот метод применяется настолько широко, что в литературе по вычислениям на ЭВМ этот метод просто называется «методом Рунге-Кутта» без всяких указаний на тип или порядок. Этот классический метод Рунге-Кутта описывается системой следующих пяти соотношений:

ym+1 = ym + h6 (k1 + 2 k2 + 2 k3 + k4 ),

где

k1 = f (xm , ym );

 

 

 

 

 

k

2

= f

x

+ h , y

m

+ h k1

 

;

 

 

m

2

2

 

 

 

 

 

 

 

 

 

k

 

= f

x

+ h , y

 

+

h k2

 

;

3

m

 

 

 

 

m

2

2

 

 

 

 

 

 

 

 

k4 = f (xm + h, ym + h k3 ).

Ошибка ограничения для этого метода равна

eT = K h5 .

Так что формулы описывают метод четвертого порядка.

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

Многоступенчатые методы (методы прогноза и коррекции).

При решении задачи Коши методами Рунге-Кутты необходимо вычислять правые части ОДУ в нескольких точках на каждом шаге. Количество точек зависит от порядка используемого метода. После того как искомая интегральная кривая у(х) определена в нескольких точках х0, x1, …, хп, можно применить алгоритмы интерполяции и сократить количество вычислений правых частей ОДУ для получения решения в очередной точке хn+1. Подобные методы называют многоточечными, или многошаговыми. Известно несколько типов таких методов.

Алгоритмы многоточечных методов основываются на аппроксимации интерполяционными полиномами либо правых частей ОДУ, либо интегральных кривых yk(х).

Метод Адамса.

C помощью любого из рассмотренных выше методов (например, метода Эйлера или Рунге-Кутта), вычисляются три заданного дифференциального уравнения в точках х1, х2, х3.

y1 = y(x1 )= y(x0 + h); y2 = y(x2 )= y(x0 + 2 h); y3 = y(x3 )= y(x0 +3 h).

65

Правая часть уравнения f(x, у) на интегральной кривой, соответствующей начальному условию, будет функцией только одного аргумента х:

f (x)= f (x, y(x)),

значения которой в рассматриваемых точках обозначим f0, f1, f2, f3. В окрестности узлов х0,..., х3 функцию f(x) приближенно заменим интерполяционным полиномом Ньютона.

f (x)f0 + f01 (x x0 )+ f012 (x x0 ) (x x1 )+ f0123 (x x0 ) (x x1 ) (x x2 ),

где f01, f012, f0123 – разделенные разности.

Представим искомое решение в точке х4 = х3 + h в виде тейлоровского разложения в окрестности точки х3:

y4 = y3 + h f3 + h22 f (x3 )+ h63 f ′′(x3 )+ 24h4 f ′′′(x3 )+O(h5 ),

где f , f '', f ′′′ – производные по x от правой части дифференциального уравнения в точке х3; O(h5 ) – погрешность.

Дифференцируя интерполяционный полином Ньютона, получаем значения данных производных. Подставляя затем в выражения производных x=x3 значения разделенных разностей в случае равноотстоящих узлов получаем экстраполяционную формулу Адамса, которая рассматривается как формула прогноза:

y4 = y3 +(55 f3 59 f2 +37 f1 9 f0 ) h / 24 +O(h5 ).

Изменяя количество членов в тейлоровском разложении, можно получить формулу Адамса различного порядка. Следует отметить, что имеются формулы Адамса и для переменного шага интегрирования дифференциальных уравнений.

С целью уменьшения погрешности способом, аналогичным получению экстраполяцинной формулы, по узлам х1, х2, х3, х4 строится интерполяционная формула Адамса, которая является формулой коррекции:

y4 = y3 +(9 f4 +19 f3 5 f2 + f1 ) h / 24 +O(h5 ).

Полученная формула является неявной, так как искомая величина у4 необходима для вычисления значения функции f4 = f(x4, у4), входящего в правую часть. Данное выражение можно рассматривать как нелинейное уравнение относительно неизвестной величиныу4 и решать его одним из методов, изложенных в предыдущей теме. Наиболее часто здесь используется метод простых итераций, хотя в некоторых случаях оказывается более предпочтительным метод Ньютона.

Метод Гира.

Аналогично методу Адамса одним из методов Рунге-Кутта получаем решения y1 = y(x1 )= y(x0 + h); y2 = y(x2 )= y(x0 + 2 h); y3 = y(x3 )= y(x0 +3 h) ОДУ y′ = f (x, y) при

начальных условиях y(x0 )= y0 .

66

Аналогично методу Адамса приближеннозаменяем искомое решение в окрестноститочек x0, х1, х2, х3, x4 интерполяционным полиномом Ньютона четвертой степени. Выполняя дифференцирование и подставляя значения разделенных разностей, в итоге получаем формулу Гира:

y4 = 3 (4 h f (x4 , y4 )y0 ) +16 y1 36 y2 + 48 y3 / 25.

Представленная формула представляет собой неявную схему Гира четвертого порядка для решения задачи Коши. Изменяя количество узлов xj можно аналогичным способом получить формулы Гира как более низких, так и более высоких порядков.

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

Для нахождения значения у4 из формулы Гира можно применить метод простых итераций, однако для реализации достоинств неявного метода в отношении выбора шага при интегрировании жестких уравнений рекомендуется использовать метод Ньютона. Для любого из выбранных методов требуется знать начальное приближение к искомой величине у4, которое можно определить по выражению:

y4 = 4

h f (x3, y3 )+

(y0

10 y3 )

2 y1

+6 y2 .

 

3

 

 

 

 

 

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

Рассмотрим процедуру понижения порядка ОДУ на примере моделирования подвески колеса автомобиля, описываемой двумя дифференциальными уравнений второго порядка

(рис. 2.23).

Рисунок 2.23 – Расчетная схема

M z′′ = −kп (z′− y) cп (z y);

m y′′ = kп (z′− y) +cп (z y) kш (y′−h(t)) cш (y h(t));

где М и m – подрессоренная и неподрессоренная массы; y, z – вертикальные перемещения подрессоренной и неподрессоренной масс; сп, сш – жесткости подвески и шины соответственно; kп, kш – коэффициенты демпфирования амортизатора подвески и шины

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]