MET-ЧМ-Часть-2
.pdf21
этих точках. Численные методы решения дифференциальных уравнений ме- тодом конечных разностей проводятся в два этапа:
1)Аппроксимация дифференциального уравнения системой линейных или нелинейных разностных уравнений;
2)Решение полученной системы разностных уравнений. Разностные методы позволяют находить только частное решение.
6.1.Решение задачи Коши для обыкновенных дифференциальных
уравнений. 6.1.1. Метод Эйлера.
Одним из простейших разностных методов решения обыкновенного дифференциального уравнения является одношаговый метод Эйлера.
Пусть требуется решить задачу Коши для уравнения первого порядка:
y′ = f(x,y), |
y(x0 ) = y0 |
(6.5) |
на отрезке [a, b]. |
|
|
На данном отрезке выбираем некоторую совокупность узловых точек |
||
a = x0 < x1 < x2 < ... < xn = b |
и разложим искомую функцию y(x) |
в ряд |
Тейлора в их окрестностях. Если отбросить все члены, содержащие произ- водные второго и более высоких порядков, и считать узлы равностоящими, т.е. xi = xi+1 − xi = h , то это разложение можно записать в виде:
y(xi +1 ) = yi +1 = yi + hf(xi ,yi ), i = 0, 1, ..., n − 1 |
(6.6) |
Соотношения (6.6) имеют вид рекурентных формул, с помощью кото- рых значение сеточной функции yi +1 в любом узле xi +1 вычисляется по ее значению yi в предыдущем узле xi . На каждом шаге погрешность имеет по- рядок O(h2 ). На рис. 6.1 дана геометрическая интерпретация метода Эйлера. В силу невысокой точности формулой Эйлера редко пользуются в практиче- ских расчетах и используют более точные методы. Например, модифициро-
ванный метод Эйлера. y
|
|
|
y2 |
y0 |
|
y1 |
|
|
|
|
|
x0 |
x1 |
x2 |
x |
|
|
|
Рис. 6.1. Метод Эйлера.
22
Программа решения задачи Коши методом Эйлера дана на рис. 6.2.
CLS
DEF FNY(X,Y)=X^2+Y
DATA 0, 0.3, 1, 0.1 READ A, B, Y0, H PRINT A;Y0
X=A: Y=Y0
1 Y=Y+ FNY(X,Y)*H X=X+H
PRINT X;Y
IF X<B THEN 1 END
Рис. 6.2. Программа решения задачи Коши методом Эйлера.
Пример 6.1. Решить задачу Коши методом Эйлера для дифференци-
ального уравнения
y′ = x2 + y, y(0) = 1 на отрезке [0; 0,3] с шагом 0,1
Решение. По формуле (6.6) вычислим значение y1 y1 = y0 + hf(x0,y0 ) = 1 + 0,1(02 + 1) = 1,1
Аналогично вычисляются последующие значения функции в узловых точках
y2 = y1 + hf(x1,y1 ) = 1,1 + 0,1(0,12 + 1,1) = 1,211
y3 = y2 + hf(x2,y2 ) = 1,211 + 0,1(0,22 + 1,211) = 1,3361
Сеточную функцию записываем в виде таблицы
x |
0 |
0,1 |
0,2 |
0,3 |
y |
1 |
1,1 |
1,211 |
1,3361 |
6.1.2. Модифицированный метод Эйлера.
Модифицированный метод Эйлера позволяет уменьшить погрешность на каждом шаге до величины O(h3 ) вместо O(h2 ) в обычном методе (6.6). Запишем разложение функции в ряд Тейлора в виде:
′ |
1 |
′′ |
h |
2 |
+ O(h |
3 |
) |
(6.7) |
yi +1 = yi + yih + |
2 |
yi |
|
|
||||
|
|
|
|
|
|
|
|
Аппроксимируем вторую производную с помощью отношения конеч- ных разностей:
yi′′ = yi′+1h− yi′
23
Подставляя это соотношение в (6.7) и пренебрегая членами порядка O(h3 ), получаем:
yi +1 |
= yi |
+ h |
[f(xi ,yi ) + f(xi +1,yi +1 )] |
(6.8) |
|
|
2 |
|
|
Полученная схема является неявной, поскольку искомое значение yi +1 входит в обе части соотношения (6.8) и его нельзя выразить явно. Если име- ется хорошее начальное приближение yi , то можно построить решение с ис- пользованием двух итераций следующим образом. Сначала по формуле (6.6)
вычисляют первое приближение y |
i +1 |
|
|
||
~ |
|
|
|
(6.9) |
|
yi +1 = yi + hf(xi ,yi ) |
|
||||
Найденное значение подставляется вместо yi +1 в правую часть соотно- |
|||||
шения (6.8) и находится окончательное значение |
|
||||
yi +1 = yi + |
h |
[f(xi ,yi ) + f(xi +1 |
~ |
(6.10) |
|
2 |
,yi +1 )] |
||||
|
|
|
|
|
На рис. 6.3 дана геометрическая интерпретация первого шага вычисле- ний при решении задачи Коши модифицированным методом Эйлера.
y
|
|
|
|
y1 |
|
|
|
|
~ |
y0 |
|
|
|
y1 |
|
|
|
|
|
x0 |
h/2 |
h/2 |
x1 |
x |
|
|
Рис. 6.3. Модифицированный метод Эйлера.
Пример 6.2. Решить задачу Коши модифицированным методом Эйлера
для дифференциального уравнения
y′ = x2 + y, y(0) = 1 на отрезке [0; 0,3] с шагом 0,1
Решение. По формуле (6.9) вычислим первое приближение y~1 = y0 + hf(x0,y0 ) = 1 + 0,1(02 + 1) = 1,1
Используя формулу (6.10), находим окончательное значение в точке x1 = 0,1
y1 = y0 + |
h |
~ |
0,1 |
|
2 |
|
2 |
|
2 |
[f(x0,y0 ) + f(x1,y1 )] = 1 + |
2 |
(0 |
|
+ 1 + 0,1 |
|
+ 1,1) = 1,1055 |
24
Аналогично вычисляются последующие значения функции в узловых
точках
y~2 = y1 + hf(x1,y1 ) = 1,1 + 0,1(0,12 + 1,1055) = 1,21705
|
|
|
|
|
h |
|
|
|
|
|
|
|
|
|
|
~ |
|
|
|
|
|
|
||
y2 |
= y |
1 |
+ |
|
|
|
[f(x1,y1 ) + f(x2,y2 )] = |
|
|
|
|
|||||||||||||
2 |
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
0,1 |
|
|
|
|
|
|
|
|
||||||
|
|
|
= 1,1055 + |
|
|
(0,12 + 1,1055 + 0,22 |
+ 1,21705) = 1,224128 |
|||||||||||||||||
~ |
|
|
2 |
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
= y2 |
|
+ hf(x2,y2 ) |
= 1,224128 |
+ 0,1(0,2 |
2 |
+ 1,224128) = 1,350541 |
||||||||||||||||||
y3 |
|
|
||||||||||||||||||||||
|
|
|
|
h |
|
|
|
|
~ |
|
|
|
|
|
|
|
||||||||
y3 = y2 + |
2 |
[f(x2,y2 ) + f(x3,y3 )] = |
|
|
|
|
||||||||||||||||||
|
|
= 1,224128 + |
|
0,1 |
(0,22 + 1,224128 + 0,32 |
+ 1,350541) = 1,359361 |
||||||||||||||||||
|
|
2 |
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
Сеточную функцию записываем в виде таблицы |
||||||||||||||||||||||||
|
|
|
|
|
x |
|
|
|
0 |
|
|
0,1 |
|
|
0,2 |
|
|
0,3 |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
y |
|
|
|
1 |
|
|
1,1055 |
|
|
1,224128 |
1,359361 |
|
Программа решения задачи Коши модифицированным методом Эйлера отличается от приведенной на рис. 6.2 заменой отмеченных строк на сле- дующие:
1Y1=Y+ FNY(X,Y)*H Y=Y+H*(FNY(X,Y)+FNY(X+H,Y1))/2
Пример 6.3. Решить задачу Коши модифицированным методом Эйлера
с помощью программы Excel для дифференциального уравнения y′ = x2 + y, y(0) = 1 на отрезке [0; 1] с шагом 0,1.
|
Порядок решения. |
|
|
|
|
|
|
1) |
Ввести в ячейки A1:D1 заголовки столбцов (рис. 6.4). |
||||||
2) |
В ячейку A2 – x0 |
|
|
|
|
0 |
|
3) |
В ячейки B2 и C2 – y0 |
|
|
|
|
1 |
|
4) |
В ячейку D2 |
– шаг интегрирования h |
|
|
0,1 |
||
5) |
В ячейку A3 |
– значение x1 |
= x0 |
+ h |
|
|
=A2+$D$2 |
6) |
|
~ |
= y0 |
2 |
+ y0 ) |
=C2+$D$2*(A2^2+C2) |
|
В ячейку B3 – формулу y1 |
+ h(x0 |
||||||
7) |
В ячейку С3 |
– формулу y1 |
= y0 |
|
2 |
2 |
~ |
+ h((x0 + y0 ) + (x1 |
+ y1 ))/ 2 |
=C2+$D$2*(A2^2+C2+A3^2+B3)/2
8)Выделить ячейки A3:С3 и при помощи маркера заполнения ввести формулы в ячейки A4:С4 … A13:С12.
9)Столбцы A и С содержат решение.
25
|
A |
B |
|
C |
D |
|
1 |
x |
y~ |
|
y |
h |
|
2 |
0 |
|
1 |
1 |
0,1 |
|
3 |
0,1 |
|
1,1 |
1,1055 |
|
|
40,2 1,21705 1,2241275
50,3 1,35054 1,3593609
6 |
0,4 |
1,504297 |
1,5150438 |
7 |
0,5 |
1,682548 |
1,6954234 |
8 |
0,6 |
1,889966 |
1,9051928 |
9 |
0,7 |
2,131712 |
2,1495381 |
100,8 2,413492 2,4341896
110,9 2,741609 2,7654795
121 3,123027 3,1504048
Рис. 6.4. Решение задачи Коши модифицированным
методом Эйлера с помощью программы
Excel.
6.1.3. Метод Рунге-Кутта.
На основе метода Рунге-Кутта могут быть построены разностные схе- мы разного порядка точности. Наиболее употребительной является следую- щая схема четвертого порядка:
yi +1 = yi + (k0 + 2k1 |
+ 2k2 + k3 )/ 6 |
(6.11) |
||
где |
= hf(xi ,yi ) |
|
|
|
k0 |
|
|
||
k1 |
= hf(xi + h / 2,yi |
+ k0 / 2) |
(6.12) |
|
k2 |
= hf(xi + h / 2,yi + k1 / 2) |
|||
|
k3 = hf(xi + h,yi + k2 )
Таким образом, метод Рунге-Кутта требует на каждом шаге четырех- кратного вычисления правой части уравнения. Однако это окупается повы- шенной точностью, что дает возможность проводить счет с относительно большим шагом.
Программа решения задачи Коши методом Рунге-Кутта отличается от приведенной на рис. 6.2 заменой отмеченных строк на следующие:
1K0 = H*FNY(X,Y)
K1 = H*FNY(X+H/2,Y+K0/2)
K2 = H*FNY(X+H/2,Y+K1/2)
K3 = H*FNY(X+H,Y+K2) Y=Y+(K0+2*K1+2*K2+K3)/6
Пример 6.4. Решить задачу Коши методом Рунге-Кутта для дифферен- циального уравнения y′ = x2 + y, y(0) = 1 на отрезке [0; 0,3] с шагом 0,1.
26
Решение. По формулам (6.12) вычислим значения k0 , k1 , k2 , k3 :
k0 |
= hf(x0,y0 ) = 0,1(02 + 1) = 0,1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
k1 |
= hf(x0 |
+ h /2,y0 |
+ k0 |
/2) |
æ |
æ |
0 + |
0,1ö2 |
1 |
+ |
0,1 |
ö |
|
|
|
|
|
|
|
|||||||||
= 0,1ç |
ç |
|
2 |
÷ |
+ |
2 |
÷ = 0,10525 |
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
è |
è |
|
|
ø |
|
|
|
ø |
|
|
|
|
|
|
|
||||||
k2 |
= hf(x0 |
+ h /2,y0 |
+ k1 |
/2) |
æ |
æ |
0 + |
0,1ö2 |
1 |
+ |
0,10525 ö |
= 0,105513 |
||||||||||||||||
= 0,1ç |
ç |
|
2 |
÷ |
+ |
|
2 |
|
÷ |
|||||||||||||||||||
|
|
|
|
|
|
|
è |
è |
|
|
ø |
|
|
|
|
|
ø |
|
|
|
|
|
||||||
k3 |
= hf(x0 |
+ h,y0 + k2 ) = 0,1((0 + 0,1)2 + 1 + 0,105513) = 0,111551 |
= 0,1: |
|||||||||||||||||||||||||
|
Используя формулу (6.11), находим значение y1 |
в точке x1 |
||||||||||||||||||||||||||
|
y1 = y0 + (k0 + 2k1 + 2k2 + k3 )/ 6 = |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
= 1 + (0,1 + 2 × 0,10525 + 2 × 0,105513 + 0,111551)/ 6 = 1,105513 |
|||||||||||||||||||||||||||
|
Аналогично вычисляются последующие значения функции в узловых |
|||||||||||||||||||||||||||
точках |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
k0 |
= hf(x1,y1 ) = 0,1(0,12 + 1,105513) = 0,111551 |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
k1 |
= hf(x1 |
+ h / 2,y1 |
+ k0 |
/2) |
æ |
æ |
0,1 |
+ |
|
0,1 |
ö2 |
+ 1,05513 |
+ |
0,111551 |
ö |
= |
0,118379 |
|||||||||||
= 0,1ç |
ç |
|
|
2 |
÷ |
|
2 |
|
÷ |
|||||||||||||||||||
|
|
|
|
|
|
|
è |
è |
|
|
|
|
ø |
|
|
|
|
|
|
|
|
ø |
|
|
||||
k2 |
= hf(x1 |
+ h / 2,y1 |
+ k1 |
/2) |
æ |
æ |
0,1 |
+ |
|
0,1 |
ö2 |
+ 1,05513 |
+ |
0,118379 ö |
= |
0,11872 |
||||||||||||
= 0,1ç |
ç |
|
|
2 |
÷ |
|
2 |
|
÷ |
|||||||||||||||||||
|
|
|
|
|
|
|
è |
è |
|
|
|
|
ø |
|
|
|
|
|
|
|
|
ø |
|
|
||||
k3 |
= hf(x1 |
+ h,y1 + k2 ) = 0,1((0,1 + 0,1)2 |
+ 1,05513 + 0,11872) = 0,126423 |
|
||||||||||||||||||||||||
y2 = y1 + (k0 + 2k1 + 2k2 + k3 )/ 6 = |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
= 1,105513 + (0,11151 + 2 × 0,118379 + 2 × 0,11872 + 0,126423)/ 6 = 1,224208 |
|||||||||||||||||||||||||||
k0 |
= hf(x2,y2 ) = 0,1(0,12 |
+ 1,224208) = 0,126421 |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
k1 |
= hf(x2 |
+ h / 2,y2 |
+ k0 |
/2) |
æ |
æ |
0,2 |
+ |
0,1ö2 |
+ 1,224208 |
+ |
0,126421 ö |
= 0,134992 |
|||||||||||||||
= 0,1ç |
ç |
|
2 |
÷ |
2 |
|
|
÷ |
||||||||||||||||||||
|
|
|
|
|
|
|
è |
è |
|
|
|
|
ø |
|
|
|
|
|
|
|
|
|
ø |
|
||||
k2 |
= hf(x2 |
+ h / 2,y2 |
+ k1 |
/2) |
æ |
æ |
0,2 |
+ |
0,1ö2 |
+ 1,224208 |
+ |
0,134992 ö |
= 0,13542 |
|||||||||||||||
= 0,1ç |
ç |
|
2 |
÷ |
2 |
|
|
÷ |
||||||||||||||||||||
|
|
|
|
|
|
|
è |
è |
|
|
|
|
ø |
|
|
|
|
|
|
|
|
|
ø |
|
||||
k3 |
= hf(x2 |
+ h,y2 + k2 ) = 0,1((0,2 + 0,1)2 |
+ 1,224208 + 0,13542) = 0,144963 |
|||||||||||||||||||||||||
y3 = y2 + (k0 + 2k1 + 2k2 + k3 )/ 6 = |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
= 1,224208 + (0,126421 + 2 × 0,134992 + 2 × 0,13542 + 0,144963)/ 6 = 1,359576 |
|||||||||||||||||||||||||||
|
Сеточную функцию записываем в виде таблицы |
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
x |
|
|
0 |
|
|
0,1 |
|
|
|
|
|
|
0,2 |
|
|
|
|
0,3 |
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
y |
|
|
1 |
|
1,105513 |
|
|
|
|
1,224208 |
|
|
1,359576 |
|
|
|
|
27
6.1.4. Оценка точности решения дифференциального уравнения.
Для практической оценки погрешности решения дифференциального уравнения проводят вычисления с шагами h и h /2. За оценку погрешности решения, полученного с шагом h /2, принимают величину, равную
|
|
|
|
|
yh |
- yh / 2 |
|
|
|
|
|
|
|
|
|||
D |
|
= max |
|
|
i |
2i |
|
|
|
|
|
||||||
h / 2 |
|
|
2p - 1 |
|||||
|
i |
|
где yih - значение сеточной функции в i -й точке, вычисленное с ша- гом h ;
p - порядок точности, равный 1 для метода Эйлера, 2 для модифици- рованного метода Эйлера и 4 для метода Рунге-Кутта 4-го порядка.
Для достижения заданной точности вычисления повторяют, последова- тельно уменьшая шаг. Процесс вычислений заканчивается, когда для очеред- ного значения h /2 будет выполнено условие h / 2 < ε , где ε - заданная точ- ность.
6.2. Разностные методы решения краевой задачи для обыкновенного дифференциального уравнения.
Линейная краевая задача имеет вид:
|
|
|
|
|
|
|
|
|
y′′ + p(x)y′ + q(x)y = f(x) |
|
|
|
|
|
(6.12) |
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
′ |
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
α1y(a) + α2y (a) = α3 |
|
|
|
|
|
(6.13) |
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
b1y(b) + b2y (b) = b3 |
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
¢ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
при |
|
|
a1 |
|
+ |
|
a2 |
|
¹ 0 |
|
|
b1 |
|
+ |
|
b2 |
|
|
¹ 0 x [a; b]. |
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||
|
Решение задачи (6.12)-(6.13) проводится в следующей последователь- |
||||||||||||||||||||||||||||||||||
ности: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
1. Определение сетки: |
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||
|
Отрезок [a,b] делится на n частей: |
|
|
|
|
|
|
|
|||||||||||||||||||||||||||
y1 |
y2 |
|
|
|
|
… |
|
|
yk |
… |
yn −1 |
yn |
yn +1 |
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
x |
1 = a x2 |
|
|
|
|
… |
|
|
xk |
… |
xn−1 |
xn xn +1 = b |
|||||||||||||||||||||||
x1 = a, |
xk +1 |
= xk + h , |
h = |
b − a |
, |
k = 1, |
2, ... n + 1 |
|
|
|
|
||||||||||||||||||||||||
|
|
|
|
|
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
= y(xk ): |
|
|
|
|
||||||||
|
2. Определение сеточной функции yk |
|
|
|
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||
|
|
|
x1 = a |
|
x2 |
|
x3 |
|
… |
|
xn +1 = b |
|
|
||||||||||||||||||||||
|
|
|
|
|
y1 |
|
y2 |
|
y3 |
|
… |
|
yn +1 |
|
|
28
3. Аппроксимация уравнения:
Для каждой узловой точки xk заменяем функции и производные в уравнениях 6.12-6.13 конечноразностными аналогами:
y(xk ) = yk |
|
|
|
yk +1 |
− yk |
|
|
|
|
|
|
y2 − y1 |
|
|
|
|
||
k = 1 |
yk¢ = |
|
т.е. |
a1y1 |
+ a2 |
|
= a3 |
|
||||||||||
|
|
h |
|
|||||||||||||||
|
|
|
|
|
h |
|
|
|
|
|
|
|
|
|
||||
k = 2,...,n |
yk¢ |
= |
yk +1 |
− yk −1 |
|
yk¢¢ = |
yk +1 − 2yk + yk −1 |
(6.14) |
||||||||||
|
|
|
2h |
|
|
|
|
h |
2 |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
k = n + 1 |
yk¢ = |
yk |
− yk −1 |
|
т.е. |
b1yn |
+ b2 |
yn − yn −1 |
= b3 |
|||||||||
|
h |
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
h |
|
|
|
|
Получаем ситему n + 1 линейных алгебраических уравнений для оп- ределения n + 1 неизвестных величин yk .
4. Решение СЛАУ.
Система n + 1 уравнений решается методом прогонки.
Пример 6.4. Решить краевую задачу методом конечных разностей с шагом h = 0,1:
y′′ − xy′ + 2xy = 0,8 y(1,2) − 0,5y′(1,2) = 1
y′(1,5) = 2
Решение. Решение проводим в следующей последовательности: 1. Определение сетки:
|
| |
| |
|
| |
|
|
|
|
|
|
|
|
| |
|
|
|
|
x1 = 1,2 |
x2 = 1,3 |
x3 = 1,4 |
|
x4 = 1,5 |
x |
|
|||||||||||
x1 , x4 - краевые точки, x2, x3 - внутренние точки. |
|
||||||||||||||||
2. Определение сеточной функции yk = y(xk ): |
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
x1 |
|
|
|
x2 |
|
x3 |
|
x4 |
|
|
|
||
|
|
|
|
y1 |
|
|
|
y2 |
|
y3 |
|
y4 |
|
|
|
||
3. Аппроксимация уравнения: |
|
|
|
|
|
|
|
|
|
||||||||
при x1 |
= 1,2 |
y1 - 0,5 |
y2 |
− y1 |
= 1 |
|
|
|
|||||||||
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
0,1 |
|
|
|
|
|
|
|
|
при x2 |
= 1,3 |
y3 − 2y |
2 + y1 |
- 1,3 |
y3 |
− y1 |
+ 2 × 1,3y2 |
= 0,8 |
|||||||||
|
|
0,1 |
2 |
|
|
2 |
× 0,1 |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
при x3 |
= 1,4 |
y4 − 2y |
3 + y2 |
- 1,4 |
y4 |
− y2 |
+ 2 × 1,4y3 |
= 0,8 |
|||||||||
|
|
0,1 |
2 |
|
|
2 |
× 0,1 |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
при x4 |
= 1,5 |
|
y4 |
− y3 |
|
= 2 |
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
0,1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
29
Получим систему четырех линейных алгебраических уравнений с че- тырьмя неизвестными y1 , y2 , y3 и y4 :
y1 - 5(y2 - y1 ) = 1
100(y3 - 2y2 + y1 ) - 6,5(y3 - y1 ) + 2,6y2 = 0,8 100(y4 - 2y3 + y2 ) - 7(y4 - y2 ) + 2,8y3 = 0,8 10(y4 - y3 ) = 2
или
ì 6y1 |
− 5y2 |
|
|
= |
1 |
ï |
- 197,4y2 |
+ 93,5y3 |
|
= |
0,8 |
ï106,5y1 |
|
||||
í |
107y2 |
- 197,2y3 |
+ 93y4 |
= |
0,8 |
ï |
|||||
ï |
|
- 10y3 |
+ 10y4 |
= |
2 |
î |
|
|
|
|
|
4. Решение системы методом прогонки.
Значения ak , bk , ck , dk записываем в виде таблицы 6.1.
|
|
|
|
|
|
|
|
Таблица 6.1 |
|
k |
|
ak |
|
b |
|
ck |
|
d |
k |
|
|
|
|
||||||
|
|
|
k |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
1 |
|
0 |
|
6 |
|
-5 |
|
1 |
|
2 |
|
106,5 |
|
-197,4 |
|
93,5 |
|
0,8 |
|
3 |
|
107 |
|
-197,2 |
|
93 |
|
0,8 |
|
4 |
|
-10 |
|
10 |
|
0 |
|
2 |
|
Прямой ход прогонки. Определяем прогоночные коэффициенты Uk и |
Vk (k = 1, 2, 3, 4 ). |
|
U1 = -c1 /b1 = 5/ 6 = 0,833333 |
|
V1 |
= d1 /b1 = 1/ 6 = 0,166667 |
U2 = -c2 /(a2U1 + b2 ) = -93,5/(106,5 × 0,833333 - 197,4) = 0,860561 |
|
V2 |
= (d2 − a2V1 )/(a2U1 + b2 ) = |
|
= (0,8 - 106,5 × 0,166667)/(106,5 × 0,833333 - 197,4) = 0,156006 |
U3 = -c3 /(a3U2 + b3 ) = -93/(107 × 0,860561 - 197,2) = 0,884703 |
|
V3 |
= (d3 − a3V2 )/(a3U2 + b3 ) = |
|
= (0,8 - 107 × 0,156006)/(107 × 0,860561 - 197,2) = 0,151186 |
U4 = -c4 /(a4U3 + b4 ) = 0 , т.к. c4 = 0 |
|
V4 |
= (d4 − a4V3 )/(a4U3 + b4 ) = |
= (2 + 10 × 0,151186)/(10 - 10 × 0,884703) = 3,045925
|
|
|
30 |
Обратный ход прогонки. Вычисляем yk (k = 4, 3, 2,1). |
|||
Поскольку U4 = 0 , то y4 = V4 = 3,045925 . |
|||
y3 |
= U3y4 |
+V3 |
= 0,884703 × 3,045925 + 0,151186 = 2,845925 |
y2 |
= U2y3 |
+V2 |
= 0,860561 × 2,845925 + 0,156006 = 2,605098 |
y1 |
= U1y2 |
+V1 |
= 0,833333 × 2,605098 + 0,166667 = 2,337581 |
Сеточную функцию yk |
= y(xk ) записываем в виде таблицы |
||||||
|
|
|
|
|
|
|
|
|
xk |
1,2 |
|
1,3 |
1,4 |
1,5 |
|
|
yk |
2,337581 |
|
2,605098 |
2,845925 |
3,045925 |
|
7. Задачи линейного программирования.
Общая постановка задачи линейного программирования (ЛП) включает
целевую функцию |
|
|
|
|
|
f(x1,x2,..., xn ) = c1x1 + c2x2 + ... + cnxn |
→ max(min) |
(7.1) |
|||
ограничения типа равенств |
|
|
|
(7.2) |
|
gi = ai1x1 + ai2x2 |
+ ... + ainxn |
+ bi |
= 0 |
i = 1, 2, ..., k |
|
и ограничения типа неравенств |
|
|
|
(7.3) |
|
gi = ai1x1 + ai2x2 |
+ ... + ainxn |
+ bi |
£ 0 |
i = k + 1, k + 2, ..., n |
|
В задачах ЛП в число ограничений очень часто входит условие поло- |
|||||
жительности переменных: |
|
|
|
|
|
xi ³ 0, |
i = 1, |
2, ..., n |
|
(7.4) |
|
Обычно оно связано с тем, что xi |
в этих задачах означает количество |
объектов i -того типа (производимых, перевозимых, потребляемых и т.п.).
7.1. Графический метод решения задач линейного программирования.
В случае двух переменных задачи ЛП могут быть решены графически.
Пусть дана задача:
f(x1,x2 ) = c1x1 + c2x2 → max
a11x1 |
+ a12x2 ≤ a1 |
|
a21x1 |
+ a22x2 ≤ a2 |
|
… |
+ am2x2 ≤ am |
(7.5) |
am1x1 |
Введем на плоскости декартову прямоугольную систему координат и сопоставим каждой паре чисел (x1, x2 ) точку плоскости с координатами x1 и x2 . Выясним, прежде всего, что будет представлять собой множество точек, соответствующих допустимым решениям данной задачи.