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

MET-ЧМ-Часть-2

.pdf
Скачиваний:
11
Добавлен:
12.05.2015
Размер:
551.4 Кб
Скачать

21

этих точках. Численные методы решения дифференциальных уравнений ме- тодом конечных разностей проводятся в два этапа:

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+1hyi

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

xn1

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 . Выясним, прежде всего, что будет представлять собой множество точек, соответствующих допустимым решениям данной задачи.

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