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

Выч.мат

..pdf
Скачиваний:
48
Добавлен:
11.06.2015
Размер:
884.09 Кб
Скачать

i

xi

yi

2xi / yi

fi = yi 2xi / yi

yi = hfi

y = 2x +1

 

 

 

 

 

 

 

0

0

1

0

1

0,2

1

1

0,2

1,2000

0,3333

0,8667

0,1733

1,1832

2

0,4

1,3733

0,5928

0,7805

0,1561

1,3416

3

0,6

1,5294

0,7846

0,7458

0,1492

1,4832

4

0,8

1,6786

0,9532

0,7254

0,1451

1,6124

5

1

1,8237

 

 

 

1,7320

Таблица заполняется следующим образом. По значениям y0 и x0 вычисляется y0 = y1 y0 = hf0 . Отсюда находим y1 =1,2 , кото-

рое и заносится во вторую строчку третьего столбца. Затем вычисления ведутся аналогично при i = 1, 2, … 5. В последней колонке

для сравнения приведено точное решение задачи y(x)= 2x + 1 .

Из таблицы видно, что наибольшая абсолютная погрешность вычислений наблюдается в точке x5 и составляет 0,0917, т.е. относительная погрешность равна 5%.

b) составим аналогичную таблицу для процедуры дробного шага.

 

 

 

 

2xn

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

fn = yn

 

 

 

 

=

 

x

 

 

 

 

 

 

 

 

 

 

 

f

 

 

 

 

 

 

n

xn

yn

 

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

yn

x

y

 

y

 

 

yn = hf

 

2x +1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0.0

1

1

 

0.1

1.1

0.9182

 

 

 

 

 

0.1836

 

 

1

1

0.2

1.1836

0.8456

 

0.3

1.2682

0.7950

 

 

 

 

0.1590

 

 

1.1832

2

0.4

1.3426

0.7467

 

0.5

1.4173

0.7117

 

 

 

 

0.1423

 

 

1.3416

3

0.6

1.4849

0.6768

 

0.7

1.5526

0.6508

 

 

 

 

0.1302

 

 

1.4832

4

0.8

1.6151

0.6244

 

0.9

1.6775

0.6045

 

 

 

 

0.1209

 

 

1.6124

5

1.0

1.7360

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.7320

Колонки таблицы заполняются в соответствии с обозначениями

общей формулы процедуры дробного шага для

f = y 2x / y :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h

 

 

 

 

 

 

 

h

 

 

 

h

 

 

 

 

h

 

2 xn

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= yn + h yn +

 

 

 

 

 

2

 

 

yn+1 = yn

+ hf xn +

 

 

,

yn +

 

fn

 

 

 

fn

 

 

 

 

 

=

2

2

2

 

h

 

 

 

 

 

 

 

 

 

 

 

 

 

yn +

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

fn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2x

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

= y

n

+ h y

 

= y

n

+ ∆y

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Точность результата по последней точке составляет 0.004/1.73 = 0.2%.

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

Рассмотрим задачу (1) и в разложении (2) учтем три слагаемых

61

yn+1 = yn + hyn

+

 

h2 yn′′

+

 

(10)

2

 

 

 

 

 

 

 

 

 

 

 

 

Вторую производную в (10) заменим разностью:

 

 

yn′′ =

d

f (x, y)

 

x

n

=

 

f (x, y)f (xn , yn )

,

(11)

 

 

dx

 

 

 

 

 

 

 

 

 

h

 

 

 

 

 

 

 

 

 

 

 

где x и y подбираются так, чтобы минимизировать погрешность.

Подставим (11) в (10):

yn+1 = yn + hf (xn , yn )+ 21 h[f (x, y)f (xn , yn )].

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

yn+1 = yn + h[β f (xn , yn )+α f (xn +γh, yn +δh)].

(12)

Выберем параметры α, β,γ,δ так, чтобы разложение выражения

(12) в ряд Тейлора было максимально близко к (10). Разлагаем правую часть (12):

yn+1 = yn + h(α + β )f (xn , yn )+αh2 (γ f x′ +δf y)

Сравнивая с

yn+1 = yn + hfn +

h2

(f x′ + ff y) ,

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

имеем три соотношения для четырех параметров

 

α + β = 1

αγ =

1

 

 

 

αδ =

1

 

f (xn , yn )

,

 

 

 

2

 

 

 

2

 

 

 

 

и один параметр остается свободным. Выразим β,γ,δ

через α

β = 1 α

γ =

1

 

 

δ =

 

1

fn .

 

2α

 

 

 

 

 

 

 

 

 

 

 

2α

 

В результате получаем однопараметрическое семейство схем Рун- ге-Кутта

yn+1 = yn + h (1 α)f (xn , yn )+α f xn + 2hα , yn + 2hα fn .

Эта схема имеет одношаговую погрешность O(h3 ).

Придавая параметру α конкретные значения, получаем различные схемы решения задачи Коши. При α = 1 имеем

62

yn+1 = yn + hf xn + h2 , yn + h2 fn

и таким образом, эта схема Рунге-Кутта дает в точности выражение (9) процедуры дробных шагов.

При значенииα =12 получаем следующую схему

yn+1 = yn +

1

h[f (xn , yn )+ f (xn + h, yn + hfn )].

(13)

2

 

 

 

Эта формула может быть получена и другим способом, если интеграл в соотношении (6) вычислять по формуле трапеций.

Задачи

1. Определить вид функции f(x,y), для которой метод Эйлера решения уравнения

dydx = f (x, y)

точен (если пренебречь погрешностью округления).

 

2. Показать, что для уравнения

y′ = f (x, y)

погрешность прибли-

женного решения процедуры дробных шагов

 

 

 

 

h

 

hf (xn , yn )

 

yn+1 = yn + hf xn +

 

, yn +

 

 

 

 

2

 

2

 

 

 

 

 

 

имеет второй порядок точности, если f непрерывна вместе со своими вторыми производными.

3. Показать, что для уравнения y′ = f (x, y) погрешность приближенного решения методом Адамса

yn+1 = yn + h 32 f (xn , yn ) 21 f (xn1 , yn1 ) yn1 = yn hfn , имеет второй порядок точности.

4. Методом Эйлера численно решить задачу Коши на отрезке [a,b] с шагом h = 0.1

4.1. y′ =

1

xy

, a=0, b= 1, y(0)=1; 4.2. y′ = y 2 + x2 , a=0, b=1, y(0)=0.

 

2

 

y

= y

2

+

1

 

 

a = 1, b = 2,

y(1) = 0.5.

4.3.

4x2 ,

 

 

 

 

 

y

+ 2 y

2

 

 

6

 

 

 

 

4.4.

= x2 ,

a = 1, b = 2,

y(1) = 1.

 

 

 

63

4.5. y

= 3y

2

 

4

 

 

x2

,

a = 1, b = 2, y(1) = 0.

 

 

5. Методом Эйлера по схеме дробного шага решить уравнение на

[a, b] с шагом h = 0.1

5.1. y′ = x y , a=0, b=1, y(0)=1;

5.2. y′ = y + x , a=1, b=2, y(1)=0.

 

 

 

 

 

 

 

 

x

5.3.

y

=

1

1

,

a = 1, b = 2, y(1) = 1.

 

x

2 y

6. Методом Рунге - Кутта по формуле (13) решить задачу Коши на отрезке [a,b] с шагом h = 0.1

6.1. y′ =

 

y 2

+ x

2

,

a = 0, b = 1,

y(0) =1.

 

 

4

 

6.2.

y

=

 

y

y

2

,

a = 1, b =2,

y(1)

= 1.

 

x

 

6.3.

y

=

 

cos x

 

,

a = 0, b =1,

y(0)

= 0.

 

 

1 + y 2

7. С использованием метода Эйлера построить процесс численного

решения задачи Коши для уравнения 3 порядка

a0 y′′′ + a1 y′′ + a2 y′ + a3 y = f (x), y = y(x), x [0,1]

y(0) = b1 ,

,

′′

y (0) = b2

y (0) = b3

с шагом h. Величины ai и bi являются константами, f(x) – известная функция.

8.Показать, что формулу Эйлера можно получить, если численно проинтегрировать (1) с использованием формулы прямоугольников.

9.Получить формулу (13), численно интегрируя (1) с помощью формулы трапеций.

Ответы и указания к задачам.

2, 3. Использовать схему вычисления погрешности метода Эйлера.

4.1.

x

0

0.2

0.4

0.6

0.8

1.0

 

y

1.0

1.005

1.0302

1.0771

1.1483

1.2479

 

yт

1.0

1.0100

1.0408

1.0941

1.1735

1.2840

4.2.

 

 

 

 

 

 

 

x

0

0.2

0.4

0.6

0.8

1.0

 

y

0.0

0.001

0.0140

0.0551

0.1412

0.2925

64

4.3.

x

1.0

1.2

1.4

1.6

1.8

2.0

 

y

0.5

0.6009

0.7119

0.8466

1.0229

1.2711

 

yт

0.5

0.6024

0.7193

0.8667

1.0699

1.3794

4.4.

 

 

 

 

 

 

 

x

1.0

1.2

1.4

1.6

1.8

2.0

 

y

1.0

1.5038

1.3921

1.2337

1.1004

0.9918

 

yт

1.0

1.3737

1.3371

1.2178

1.0984

0.9945

В таблицах yт – точное решение задачи.

7. Свести задачу к системе трех уравнений первого порядка.

VIII. Численное решение задач линейной алгебры

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

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

A x = b ,

(1)

где A = aij матрица, x = xi неизвестный вектор,

b = bi из-

вестный вектор, i, j = 1, 2, …n. В подробной записи соотношение

(1) представляется в виде

a11 x1 + a12 x2 + + a1n xn = b1 a21 x1 + a22 x2 + + a2n xn = b2

an1 x1 + an2 x2 + + ann xn = bn

или кратко

n

aij x j = bi i = 1, 2,, n

j=1

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

det A 0 . Только в этом случае существует обратная матрица и

единственное решение системы.

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

65

матриц небольшого размера выгодны только прямые методы. Итерационные методы в настоящее время используются при n 10000 и для матриц специального вида.

1. Решение систем линейных уравнений методом исключения Гаусса (компактная схема)

Этот метод относится к точным методам. Для его численной реализации требуется выполнить ~ 2n3/3 арифметических операций, где n

– размерность матрицы.

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

a(0)

x

1

+ a(0)

x

2

+

+ a(0)

x

n

= b(0)

 

11

 

12

 

 

1n

 

1

 

a21(0) x1 + a22(0)

x2 +

+ a2n(0) xn

= b2(0)

(2)

an1(0) x1 + an2(0)

x2 +

+ ann(0) xn = bn(0)

 

где aij aij(0) , bi bi(0) .

1). Первый этап, i = 1 , первое уравнение (2) делится на a11(0), а пре-

образованные значения матрицы А и вектора b снабжаются верхним индексом (1):

 

(1) =

a1(0j)

 

 

 

(1) =

b(0)

 

a

 

,

j = 1, 2,, n ,

b

1

.

(3)

 

 

 

1 j

a11(0)

 

 

1

a11(0)

 

 

 

 

 

 

 

 

Из (3) получаем a11(1) = 1 , и первое уравнение приобретает вид

x1 + n a1(1j) x j = b1(1). j=2

Все остальные уравнения преобразуются следующим образом: из i- го уравнения вычитается первое, умноженное на элемент первого

столбца ai1(0):

aij(1) = aij(0) ai(10)a1(1j)

i = 2, 3,, n

(4)

b

(1) = b

(0) b(1)a

(0)

j = 1, 2,, n

 

 

i

i

1

i1

 

 

При этом из (4) очевидно, что во всех строчках матрицы aij(1) (на-

чиная со второй) первого столбца расположены нули:

66

ai1(1) = ai1(0) ai1(0)a11(1) = 0 .

Таким образом, на первом этапе матрица приобретает вид

 

 

 

1 a

(1)

a

 

(1)

 

 

 

 

 

12

 

1n

A

(1)

 

0

a

(1)

a

(1)

 

=

0

 

22

 

 

2n

 

 

 

 

(1)

 

 

 

 

 

 

0

 

 

 

(1)

 

 

 

an2

ann

2). Второй этап, i = 2 . Первая строка новой системы остается без изменений. Вначале второе уравнение делится на a22(1)

(2)

 

a2(1j)

 

 

(2)

 

b2(1)

.

(5)

a2 j

=

 

,

j =2, 3,, n ,

b2

=

 

a22(1)

a22(1)

 

 

 

 

 

 

 

 

Здесь новые значения матрицы снабжены новым индексом (2) и очевидно, что a22(2) = 1 . Далее аналогично соотношениям (4) преобразуем остальные элементы расширенной матрицы

aij(2) = aij(1) ai(21)a2(2j)

i = 3, 4,, n

(6)

b(2) = b(1) b

(2)a

(1)

j = 2, 3,, n

 

i

i

2

i2

 

 

В результате во втором столбце матрицы aij(2)под главной диагона-

лью имеем нулевые элементы:

ai(22) = ai(21) ai(21)a22(2) =0 ,

а второе уравнение записывается в форме

x2 + n a2(2j) x j = b2(2). j=3

После второго этапа матрица

 

 

 

1

(1)

 

 

 

a12

 

(2)

 

0

1

A

 

0

0

 

=

 

 

… …

 

 

 

 

 

 

 

 

0

0

 

 

 

А приобретает вид

a (1)

a (1)

 

13

1n

 

a23(2)

a2n(2)

 

(2)

(2)

a33

a3n

 

 

 

 

(2)

(2)

 

 

an3

ann

 

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

k) i=k. На k-ом этапе k-ая строчка делится на диагональный элемент этой строки:

67

 

akj(k ) =

akj(k 1)

 

, j =k, k + 1,, n

, bk(k ) =

bk(k 1)

,

 

akk(k 1)

akk(k 1)

a

(k ) = 1 . При этом k-ое уравнение приобретает вид

 

 

kk

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

xk + akj(k ) x j = bk(k ),

 

 

 

 

 

j =k +1

 

 

 

 

 

а для остальных строк имеем

 

 

 

 

 

 

aij(k ) = aij(k 1) aik(k 1)akj(k )

i = k + 1, , n

(7)

 

b(k ) = b

(k 1) b

(k )a

(k 1)

j = k, , n

 

 

 

 

i

i

k

ik

 

 

 

причем во всех строчках k-го столбца стоят нули:

aik(k ) = aik(k 1) aik(k 1)akk(k ) = 0 i k + 1 .

Следовательно, на этом этапе матрица А принимает вид

 

 

1

a (1)

a (1)

 

 

 

 

 

12

13

 

 

 

0

1

a23(2)

 

 

 

 

 

 

 

 

 

 

A

(k ) =

0

0

1 a

(k )

 

 

 

 

 

k,k +1

 

 

 

0

0

0 ak(k+)1,k +1

 

 

 

 

 

 

(k )

 

 

 

0

0

 

 

 

0 an,k +1

a1n(1) a2n(2)

akn(k ) ak(k+)1,n

an(k,n)

Наконец, на заключительном n-ом этапе после деления n-ой строки на диагональный элемент система приводится к требуемой форме с треугольной матрицей:

 

1 a(1)

a

(1)

 

a

(1)

 

x1

 

 

b(1)

 

 

 

12

 

13

 

 

1n

 

 

 

1

 

 

0

1 a

(2)

 

a

(2)

 

 

 

 

 

 

 

(2)

 

23

 

2n

x2

 

 

b2

 

0

0

1

 

a

(3)

 

x3

 

=

b(3)

 

 

 

 

 

 

 

 

3n

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

(n)

 

 

0

0

0

0

1

 

 

n

 

 

 

 

 

 

 

 

bn

 

Последнее соотношение можно записать в следующем виде

n

 

xi + aij(i) x j = bi(i) i =1, 2,n .

(8)

j=i+1

Эта фаза решения (приведения матрицы к треугольному виду) называется прямым ходом метода Гаусса. На этой фазе отыскания

68

решения фактически определяются коэффициенты преобразованной системы уравнений aij(k ) и bk(k ) , и формулы (7) называются

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

тода Гаусса с помощью (8).

Действительно, из последнего уравнения находим xn = bn(n), из

предпоследнего xn1 = bn(n11) an(n11,n)

xn .

 

Подобным образом, последовательно определяются все xk :

 

n

 

 

xk = bk(k ) akj(k ) x j

k = n 1, n 2, ,1 .

(9)

j=k +1

Выражения (9) называются формулами обратного хода метода Гаусса.

Пример. Решить систему уравнений x1 + 2x2 + 3x3 + 4x4 = 10 2x1 + 3x2 + 4x3 + x4 = 10 3x1 + 4x2 + x3 + 2x4 = 10 4x1 + x2 + 2x3 + 3x4 = 10

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

N

K

ai,1

ai,2

ai,3

ai,4

bi

1

 

1

2

3

4

10

2

2

2

3

4

1

10

3

3

3

4

1

2

10

4

4

4

1

2

3

10

После умножения первой строки на 2 (3) (4) и вычитания ее из второй, (третьей), (четвертой) строк получаем следующую таблицу:

N

K

ai,1

ai,2

ai,3

ai,4

bi

1

 

1

2

3

4

10

2

 

0

-1

-2

-7

-10

3

2

0

-2

-8

-10

-20

4

7

0

-7

-10

-13

-30

69

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

N

K

ai,1

ai,2

ai,3

ai,4

bi

1

 

1

2

3

4

10

2

 

0

-1

-2

-7

-10

3

 

0

0

-4

4

0

4

 

0

0

4

36

40

Чтобы исключить из последней строки элемент третьего столбца матрицы достаточно к четвертой строчке прибавить третью:

N

K

ai,1

ai,2

ai,3

ai,4

bi

1

 

1

2

3

4

10

2

 

0

-1

-2

-7

-10

3

 

0

0

-4

4

0

4

 

0

0

0

40

40

В результате прямого хода получен главный результат метода Гаусса – матрица aij приведена к треугольному виду. В процедуре обратного хода находим решение. Из последней строки имеем x4 = 1. Третья строчка дает x3 = x4 = 1. Последующие вычисления на обратном ходе дают x2 = 1, x1 = 1.

1.1. Метод Гаусса с выбором главного элемента.. При последова-

тельном исключении неизвестных элементы каждой строки aik(i)

приходится делить на диагональный элемент aii(i). В том случае,

если это число мало, то очень велика погрешность от деления, приводящая к сильному искажению результата. Чтобы избежать этого, процесс исключения проводят с выбором главного элемента в строке (или в столбце). Подобная процедура выполняется, если в компактной схеме Гаусса на диагонали встретился нулевой элемент. Суть этой процедуры состоит в следующем. Пусть после k шагов система приобрела вид:

n

 

xi + aij(i) x j = bi(i)

i =1, 2,, k

j=i+1

 

n

 

aij(k ) x j = bi(k )

i = k + 1, , n

j=k +1

 

70

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