Файл: Вычислительный эксперимент и методы вычислений.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 04.04.2021

Просмотров: 761

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

f:=false;
for i from 1 to n do

# проверка условия выхода

if abs(x1[i]-x[i])>eps then f:=true end if;

end do;
for k from 1 while (f = true) do

for j from 1 to n do

x[j]:=x1[j];

end do;
for i from 1 to n do x0[i]:=0; x1[i]:=0;

for j from 1 to n do

if (i<j) and (i<>j) then x0[i]:=x0[i]-a[i,j]*x[j]
elif (i>j) and (i<>j) then x0[i]:=x0[i]-a[i,j]*x1[j]
end if;

end do;
x1[i]:=1/a[i,i]*(b[i]+x0[i]);
end do;

f:=false;
for z from 1 to n do

if abs(x1[z]-x[z])>eps then f:=true end if;

end do;

end do;
for i from 1 to n do

print(x1[i]);

end do;
end proc;

# ввод коэффициентов матрицы

A

, вектора

B

и начального произ-

вольного приближения к решению системы
> a[1,1]:=23.81837: a[1,2]:=2.33377: a[1,3]:=-0.73872: a[1,4]:=0.85797:
a[1,5]:=-0.67457:
> a[2,1]:=-1.59171: a[2,2]:=29.48598: a[2,3]:=1.81520: a[2,4]:=3.90203:
a[2,5]:=-0.57008:
> a[3,1]:=-0.15720: a[3,2]:=1.44805: a[3,3]:=21.33172: a[3,4]:=2.64148:
a[3,5]:=3.36273:
> a[4,1]:=-3.29147: a[4,2]:=2.64912: a[4,3]:=2.16798: a[4,4]:=26.72888:
a[4,5]:=1.21258:
> a[5,1]:=-1.55251: a[5,2]:=2.73236: a[5,3]:=2.00201: a[5,4]:=-1.97732:
a[5,5]:=29.53347:
> b[1]:=1.77836: b[2]:=0.10234: b[3]:=3.82426: b[4]:=-2.71881: b[5]:=0.72844:

56


background image

> x[1]:=1: x[2]:=1: x[3]:=1: x[4]:=1: x[5]:=1:

Проверим работу процедуры
> Zeidel(a,b,x,5,0.01);

0.08365479557
0.01070750424

0.1914082408

-0.1083504947

0.007842401791

6.

Обыкновенные дифференциальные урав-

нения

ОДУ называются такие уравнения, которые содержат одну или несколь-

ко производных от искомой функции

y

=

y

(

x

)

:

F

(

x, y, y

0

, ..., y

(

n

)

) = 0

.

(93)

Наивысший порядок

n

входящей в уравнение производной называется

порядком дифференциального уравнения. Уравнение первого порядка

F

(

x, y, y

0

) = 0

,

второго порядка

F

(

x, y, y

0

, y

00

) = 0

.

Если из уравнения удается выразить старшую производную и привести
его к виду

y

(

n

)

=

F

(

x, y, y

0

, ..., y

(

n

1)

)

,

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

Линейным дифференциальным уравнением называется уравнение, ли-

нейное относительно искомой функции и ее производных.

Решением дифференциального уравнения называется всякая

n

раз

дифференцируемая функция

y

=

ϕ

(

x

)

, которая после подстановки в

уравнение превращает его в тождество.

Общее решение уравнения

n

-го порядка содержит

n

произвольных

постоянных

C

1

, C

2

, ... , C

n

:

y

=

ϕ

(

x, C

1

, C

2

, ..., C

n

)

.

(94)

57


background image

Причем любое решение нашего уравнения можно представить в виде (94)
при определенных значениях констант.

Для уравнения первого порядка общее решение зависит от одной про-

извольной постоянной:

y

=

ϕ

(

x, C

)

.

Если постоянной придать определенное значение

C

=

C

0

, то получаем

частное решение

y

=

ϕ

(

x, C

0

)

.

Геометрическая интерпретация общего решения уравнения первого

порядка состоит в том, что оно описывает бесконечное семейство ин-
тегральных кривых

y

=

y

(

x, C

)

с параметром

C

, а частному решению

соответствует одна кривая этого семейства, причем через каждую точку

(

x

0

, y

0

)

проходит одна и только одна интегральная кривая.

Для уравнений высших порядков – через каждую точку

(

x

0

, y

0

)

про-

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

6.1.

Приближенные методы решения ОДУ. Метод

Эйлера

Наиболее универсальным методом решения ОДУ является метод ко-

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

Например, дифференциальное уравнение (задача Коши)

dy

dx

=

f

(

x, y

)

,

y

(

x

0

) =

A

вводя равномерную сетку с шагом

h

и приняв в качестве узлов сетки

x

0

,

x

1

=

x

0

+

h

,..., можно свести к разностному, приближая производную в

i

-ом узле с помощью правых разностей

y

i

+1

y

i

h

=

f

i

,

i

= 0

,

1

, ...,

y

0

=

A.

Здесь

f

i

=

f

(

x

i

, y

i

)

. Таким образом мы определили разностную схему.

Разностной схемой называется замкнутая система разностных уравнений
вместе с дополнительными условиями – начальными или краевыми.

58


background image

Выражая

y

i

+1

, получаем

y

i

+1

=

y

i

+

hf

i

=

y

i

+

hf

(

x

i

, y

i

)

,

i

= 0

,

1

, ...

(95)

В результате приходим к методу Эйлера:

y

1

=

y

0

+

hf

(

x

0

, y

0

)

,

y

2

=

y

1

+

hf

(

x

1

, y

1

)

,

...........

y

n

=

y

n

1

+

hf

(

x

n

1

, y

n

1

)

.

Очевидно, что в данном случае искомая интегральная кривая приближа-
ется ломаной, наклон которой на элементарном участке

[

x

i

, x

i

+1

]

опреде-

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

(

x

k

, y

k

)

.

Неявный метод Эйлера состоит в приближении производной в окрест-

ности

i

-го узла с помощью левой разности

y

i

y

i

1

h

=

f

i

,

i

= 0

,

1

, ...,

y

0

=

A.

Очевидно, что в этом методе искомая величина

y

i

входит в уравнение

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

Можно показать, что явный и неявный метод – методы первого по-

рядка точности. То есть погрешность в точке

x

i

δ

i

=

y

(

x

i

)

y

i

,

равная разности между точным значением искомой функции

y

(

x

i

)

и зна-

чением сеточной функции в узле

δ

i

.

h.

Можно построить другие методы решения задачи Коши. Например,

приблизим производную в окрестности

i

-го узла с помощью центральных

разностей:

y

i

+1

y

i

1

2

h

=

f

i

,

i

= 0

,

1

, ...,

y

0

=

A.

Полученная система уравнений не замкнута – необходимо доопределить

y

1

, что можно сделать с помощью метода Эйлера

y

1

=

y

0

+

hf

(

x

0

, y

0

)

.

59


background image

Можно показать, что построенная схема имеет второй порядок точности.

Рассмотрим модифицированный метод Эйлера. Запишем систему урав-

нений

y

i

+1

y

i

h

=

f

i

+1

/

2

,

i

= 0

,

1

, ...,

y

0

=

A,

где

f

i

+1

/

2

=

f

(

x

i

+1

/

2

, y

i

+1

/

2

) =

f

(

x

i

+

h

2

, y

i

+1

/

2

)

,

а значение

y

i

+1

/

2

вычисляем по методу Эйлера

y

i

+1

/

2

=

y

i

+

h

2

f

i

=

y

i

+

h

2

f

(

x

i

, y

i

)

,

i

= 0

,

1

, ... .

В результате получаем следующую разностную схему:

y

i

+1

y

i

h

=

f

(

x

i

+

h

2

, y

i

+

h

2

f

(

x

i

, y

i

))

,

i

= 0

,

1

, ...,

y

0

=

A,

которая, как можно показать, имеет второй порядок точности.

6.2.

Метод Эйлера с пересчетом (предиктор –

корректор)

Предиктор – предсказание результата, корректор – уточнение резуль-

тата. Заменим правую часть нашего уравнения на среднее значений в
соседних узлах:

y

i

+1

y

i

h

=

1
2

[

f

(

x

i

, y

i

) +

f

(

x

i

+1

, y

i

+1

)]

.

(96)

Как видно, наклон интегральной кривой посередине отрезка

[

x

i

, x

i

+1

]

приближенно заменяется средним арифметическим наклонов на грани-
цах этого отрезка. Отсюда

y

i

+1

=

y

i

+

h

2

[

f

(

x

i

, y

i

) +

f

(

x

i

+1

, y

i

+1

)]

.

(97)

Искомое значение

y

i

+1

входит и в правую сторону тоже, и его нельзя в

общем случае выразить явно. Но его можно найти по формуле метода
Эйлера:

y

i

+1

=

y

i

+

hf

(

x

i

, y

i

)

предиктор

(98)

и, подставляя в правую часть, получаем

y

i

+1

=

y

i

+

h

2

[

f

(

x

i

, y

i

) +

f

(

x

i

+1

,

(

y

i

+

hf

(

x

i

, y

i

)))]

корректор. (99)

60