Метод прогонки систем линейных уравнений

Метод прогонки

Пример №1 . Решить задачу методом динамического программирования в прямом и обратном времени для целевой функции, заданной таблично.
F(x1,x2,x3) = f1(x1) + f2(x2) + f3(x3) → max
x1 + 2x2 + 2x3 ≤ 5

X012345
f1(x1)6711121516
f2(x2)9111315
f3(x3)8121416

Решение.
I этап. Условная оптимизация. f1(L) = max(f1); 0 ≤ x1 ≤ 5; x1 = 0,1,2,3,4,5.
f1(0) = max[6] = 6
f1(1) = max[6, 7] = 7
f1(2) = max[6, 7, 11] = 11
f1(3) = max[6, 7, 11, 12] = 12
f1(4) = max[6, 7, 11, 12, 15] = 15
f1(5) = max[6, 7, 11, 12, 15, 16] = 16
Таблица 1 – Расчет значения функции f1(L)

L012345
f1(L)6711121516
x1012345

f2(L) = max[f2 + f1(L — 2x2)]; 0 ≤ x2 ≤ 5; x2 = 0,1,2,3,4,5.
f2(0) = max[9+6] = 15
f2(1) = max[9+7] = 16
f2(2) = max[9+11, 11+6] = 20
f2(3) = max[9+12, 11+7] = 21
f2(4) = max[9+15, 11+11, 13+6] = 24
f2(5) = max[9+16, 11+12, 13+7] = 25
Таблица 2 – Расчет значения функции f2(L)

L012345
f2(L)151620212425
x2000000

f3(L) = max[f3 + f2(L — 2x3)]; 0 ≤ x3 ≤ 5; x3 = 0,1,2,3,4,5.
f3(0) = max[8+15] = 23
f3(1) = max[8+16] = 24
f3(2) = max[8+20, 12+15] = 28
f3(3) = max[8+21, 12+16] = 29
f3(4) = max[8+24, 12+20, 14+15] = 32
f3(5) = max[8+25, 12+21, 14+16] = 33
Таблица 3 – Расчет значения функции f3(L)

L012345
f3(L)232428293233
x3000000

II этап. Безусловная оптимизация.
Таким образом, максимум f3(5) = 33
При этом x3 = 0, так как f3(5) = 33 достигается при х3=0 (см. таблицу 3).
Остальные x распределяются следующим образом:
L = 5 — 2 * 0 = 5
f2(5) = 25 достигается при х2 = 0 (см. таблицу 2).
L = 5 — 2 * 0 = 5
f1(5) = 16 достигается при х1 = 5 (см. таблицу 1).
L = 5 — 1 * 5 = 0
В итоге наилучший вариант достигается при значениях: x1 = 5, x2 = 0, x3 = 0

Пример №2 . Рассмотрим задачу об оптимальном размещении капитала K = nh в m различных независимых фондах (банки, организации, фирма и т.д.), для которых известна ожидаемая прибыль fi при капиталовложениях xi = ih, i = 1..n. Здесь n – количество дискретных приращений h (дискрет), на которые разбит капитал К.
Пусть такие данные имеются по четырем (m=4) фондам для h = 1 млн. руб., n = 6

Решение.
I этап. Условная оптимизация.
1-й шаг: k = 4.
Предположим, что все средства в количестве x4 = 6 отданы 4-у предприятию. В этом случае максимальный доход, как это видно из таблицы 1*, составит 0.56, следовательно:
F4(c4) = g4(x4)
Таблица 1.

0x10123456
x4f0(x0) / F4(x4)0000000
000000000
10.2000000.20
20.3300000.3300
30.420000.42000
40.48000.480000
50.5300.5300000
60.560.56*000000

Таблица 1*.

c10123456
F0(c1)00.20.330.420.480.530.56
x10123456

2-й шаг: k = 3.
Определяем оптимальную стратегию при распределении средств между остальными предприятиями. При этом рекуррентное соотношение Беллмана имеет вид:
F3(c3) = max [ g3(x3) + F4(c3 — x3)]
Таблица 2.

0x20123456
x3f3(x3) / F3(x3)00.20.330.420.480.530.56
0000.2*0.330.420.480.530.56
10.150.150.35*0.48*0.570.630.680
20.250.250.450.580.670.7300
30.40.40.6*0.73*0.82000
40.50.50.70.83*0000
50.620.620.8200000
60.730.73000000

Заполняем таблицу 2*. Для этого на каждой северо-восточной диагонали находим наибольшее число, которое отмечаем звездочкой и указываем соответствующее значение x2.
Таблица 2*.

c20123456
F3(c2)00.20.350.480.60.730.83
x20011334

3-й шаг: k = 2.
Определяем оптимальную стратегию при распределении средств между остальными предприятиями. При этом рекуррентное соотношение Беллмана имеет вид:
F2(c2) = max [ g2(x2) + F3(c2 — x2)]
Таблица 3.

0x30123456
x2f4(x4) / F2(x2)00.20.350.480.60.730.83
0000.20.350.480.60.730.83
10.250.25*0.45*0.60.730.850.980
20.410.410.61*0.76*0.891.0100
30.550.550.750.9*1.03*000
40.650.650.8510000
50.750.750.9500000
60.80.8000000

Заполняем таблицу 3*. Для этого на каждой северо-восточной диагонали находим наибольшее число, которое отмечаем звездочкой и указываем соответствующее значение x3.
Таблица 3*.

c30123456
F4(c3)00.250.450.610.760.91.03
x30112233

4-й шаг: k = 1.
Определяем оптимальную стратегию при распределении средств между остальными предприятиями. При этом рекуррентное соотношение Беллмана имеет вид:
F1(c1) = max [ g1(x1) + F2(c1 — x1)]
Таблица 4.

0x40123456
x1f5(x5) / F1(x1)00.250.450.610.760.91.03
0000.250.450.610.760.91.03
10.280.28*0.53*0.73*0.891.041.180
20.450.450.70.91.061.2100
30.650.650.9*1.1*1.26*000
40.780.781.031.230000
50.90.91.1500000
61.021.02000000

Заполняем таблицу 4*. Для этого на каждой северо-восточной диагонали находим наибольшее число, которое отмечаем звездочкой и указываем соответствующее значение x4.
Таблица 4*.

c40123456
F5(c4)00.280.530.730.91.11.26
x40111333

II этап. Безусловная оптимизация.
1-й шаг: k = 1.
По данным таблицы 4* максимальный доход при распределении 6 между предприятиями составляет c1 = 6, F1(6) = 1.26. При этом 1-му предприятию нужно выделить x1 = 3.
2-й шаг: k = 2.
Определим величину оставшихся денежных средств, приходящихся на долю остальных предприятий.
c2 = c1 — x1 = 6 — 3 = 3.
По данным таблицы 3* максимальный доход при распределении 3 между предприятиями составляет c2 = 3, F2(3) = 0.61. При этом 2-му предприятию нужно выделить x2 = 2.
3-й шаг: k = 3.
Определим величину оставшихся денежных средств, приходящихся на долю остальных предприятий.
c3 = c2 — x2 = 3 — 2 = 1.
По данным таблицы 2* максимальный доход при распределении 1 между предприятиями составляет c3 = 1, F3(1) = 0.2. При этом 3-му предприятию нужно выделить x3 = 0.
4-й шаг: k = 4.
Определим величину оставшихся денежных средств, приходящихся на долю остальных предприятий.
c4 = c3 — x3 = 1 — 0 = 1.
По данным таблицы 1* максимальный доход при распределении 1 между предприятиями составляет c4 = 1, F4(1) = 0.20. При этом 4-му предприятию нужно выделить x4 = 1.
Таким образом, оптимальный план инвестирования предприятия: x1 = 3, x2 = 2, x3 = 0, x4 = 1, который обеспечит максимальный доход, равный: F(6) = g1(3) + g2(2) + g3(0) + g4(1) = 0.65 + 0.41 + 0 + 0.20 = 1.26.

Пример №3 . Распределите c=200 млн ден. ед. инвестиций между четырьмя министерствами республики ( n=4 ) на реконструкцию и модернизацию производственных мощностей таким образом, чтобы суммарный прирост производства продукции всех министерств f4(с) был максимальным. Прирост выпуска продукции в каждом из министерств gi(x) в зависимости от объема выделенных средств x (0 c=200 млн ден. ед. между первыми тремя министерствами, максимизирующее их суммарный прирост производства продукции f3(с).
Примечание. Основная задача решается с помощью процедуры прямой прогонки. Ответ на подзадачу можно получить из таблицы n-1 исходного решения.

Линейные уравнения. Решение систем линейных уравнений. Метод прогонки.

Метод прогонки (алгоритм Томаса) используют для решения СЛУ типа Ax=F, где Aтрёхдиагональная матрица. Это вариант метода последовательного исключения неизвестных.

Система уравнений Ax=F равноценна соотношению:

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

Выразим xi-1 и xi через xi+1, подставим в уравнение, используя это соотношение, (1):

где Fi — правая часть i-го уравнения.

Это соотношение выполняется не завися от решения, если потребовать:

,

,

Получаем из 1-го уравнения:

.

После того, как нашли прогоночные коэффициенты α и β, используем уравнение (2) и получим решение системы. Причем,

.

Еще одним вариантом объяснения смысла метода прогонки является такой вариант: преобразуем уравнение (1) к равнозначному ему уравнению:

c надиагональной (наддиагональной) матрицей:

Рассчеты проводим в 2 этапа. На 1-ом этапе вычисляем компоненты матрицы C′i и вектора F′, начиная с i=2 до i=n:

На 2-ом этапе, для i=n,n−1,…,1 вычисляем решение:

Для применимости формул метода прогонки достаточно свойства строгого диагонального преобладания у матрицы A.

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

Метод прогонки

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

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

• Приведение трехдиагональной матрицы к верхней треугольной (прямой ход), В случае трехдиагональной матрицы это означает приведение к двухдиагональной, т. е. приведение исходной системы к системе, содержащей по два неизвестных в каждом уравнении, кроме последнего, в котором содержится только одно неизвестное.

• Запись обратного хода в виде , так как преобразованная матрица – двухдиагональная.

•Вывод рекуррентного соотношения для и через и и получение соотношения для и .

• Осуществление обратного хода метода прогонки и определение всех неизвестных.

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

i = 1,2,…, n, (2.6)

Запись (2.6) представляет собой так называемый КАНОНИЧЕСКИЙ ВИД СИСТЕМЫ ЛИНЕЙНЫХ УРАВНЕНИЙ МЕТОДА ПРОГОНКИ. При этом матрица система (2.6) имеет вид

Прямой ход метода прогонки сводится к исключению неизвестного в каждом уравнении системы. Получаемая в результате прямого хода система содержит в каждом уравнении только два неизвестных и , и матрица ее – верхняя треугольная с двумя диагоналями. Запишем i-ю строку преобразованной двухдиагональной матрицы в виде

(2.7)

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

Подставляя в систему (2.6), получим соотношение

из которого нетрудно получить

Сравнивая это соотношение с (2.7), можем записать рекуррентные соотношения

(2.8)

для вычисления так называемых ПРОГОНОЧНЫХ КОЭФФИЦИЕНТОВ.

Подчеркнем, что последующие значения прогоночных коэффициентов вычисляются только по известным коэффициентам системы (2.6) и известным предыдущим значениям прогоночных коэффициентов

Для начала прямого хода метода прогонки необходимо задать начальные (стартовые) значения прогоночных коэффициентов, например, Отметим, что, вообще говоря, начальные значения коэффициентов в рассмотренной схеме вычислений не требуются, так как значения коэффициентов вычисляются только через коэффициенты первого уравнения системы (2.6): при i = 1 из (2.6) получаем соотношение Сравнивая это выражение с (2.7) при i =1, получаем а значение в обратном ходе вычисляем по соотношению Использование в качестве начальных значений целесообразно по двум причинам: сохраняется однородность вычислительного алгоритма для всех i = 2, 3, …,n; упрощается обсуждение и доказательство условия корректности и устойчивости метода прогонки. Из того обстоятельства, что коэффициенты не зависят от (в соотношениях(2.8) при i =1 коэффициенты умножаются на ), следует, что можно задать любые значения для прогоночных коэффициентов . Далее будет ясно, почему удобно положить Для начала обратного хода метода прогонки необходимо для вычисления задать значение . Так как , то из первого соотношения (2.8) вытекает, что и, следовательно, можно задать любое значение для Обычно полагают , и тогда

Метод прогонки устойчив, если Метод прогонки корректен, если

Отметим, что при устойчивости метода прогонки ошибки округления не возрастают, а подавляются. Пусть — вычисленные с погрешностями значения решения. Пусть при этом коэффициенты вычисляются точно. Тогда по (2.7)

Из этой формулы при следует, что в данном случае погрешность не возрастает.

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

i = 1,2, …, n.

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

.

Было показано, что можно положить и тогда, во-первых, для всех i выполняется , что обеспечивает затухание погрешности, и, во-вторых, для всех i выполняется условие и, таким образом, не возникает ситуация деления на нуль. Так как условие является только достаточным, то невыполнение его не означает нарушения корректности и устойчивости.

Для реализации метода требуется примерно 8n операций, из которых 3n составляют операции типа умножения и 5n – операции типа сложения. При численном решении дифференциальных уравнений используются различные варианты метода прогонки: метод встречных прогонок, потоковая прогонка, матричная прогонка для систем векторных уравнений. Отметим, что

Метод прогонки обобщается на случай, при котором в системе (2.6) — квадратные матрицы размерности , а — векторы размерности m. Тогда соотношения (2.7) и (2.8) метода прогонки, в которых все действия совершаются уже над матрицами, а не над скалярами, сохраняются, а в (2.8) является соответствующей обратной матрицей.

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

Дата добавления: 2015-11-06 ; просмотров: 2629 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ


источники:

http://www.calc.ru/Resheniye-Sistem-Lineynykh-Uravneniy-Metod-Progonki.html

http://helpiks.org/5-98386.html