Вказівки щодо розв'язання завдання № 9
відбірково-тренувальних зборів
команди міста Києва

9.1. Лінійні рівняння (лінійна алгебра — метод Гауса)

Примітка. Модифікований алгоритм Гауса вилучення змінних описано у термінах дій з рівняннями, які можна подати такими діями з рядками матриці (таблиці) коефіцієнтів системи лінійних рівнянь:

a11a12 ⋯a1ma1 (m + 1)
a21a22 ⋯a2ma2 (m + 1)
 ⋮  ⋮  ⋱  ⋮   ⋮ 
a(n – 1) 1a(n – 1) 2 ⋯ a(n – 1) m a(n – 1) (m + 1)
an1an2 ⋯ anm an (m + 1)
.

Ці дії з рядками матриці такі:

Вид матриці після виконання певних дій подано у тексті одразу після опису цих дій для випадку відсутності вільних змінних (коефіцієнти при яких в усіх рівняннях відмінні від нуля):

Модифікацію запроваджено лише для полегшення сприйняття алгоритму читачами-учнями при першому знайомстві. Зміст наступного речення, виділеного курсивом, стане зрозумілим після ознайомлення з поданим алгоритмом: немодифікований алгоритм передбачає визначення змінних через усі наступні змінні (зведення матриці коефіцієнтів до верхньо-трикутного вигляду) з наступним вилученням змінних зі співвідношень для попередніх змінних (зведення основної матриці коефіцієнтів до діагонального вигляду). Таким чином, модифікація призводить до незначного скорочення коду і збільшення обсягу обчислень. Після реалізації модифікованого алгоритму радимо реалізувати і немодифікований, що передбачає меншу кількість обчислень.

Вилучення x1
Виберемо рівняння (з найменшим порядковим номером), у якому коефіцієнт при x1 відмінний від 0. Поміняємо його місцем з першим рівнянням системи.

a11 
a11a11

Розглядаючи перше рівняння відносно x1, знаходимо вираз для x1 через відомі коефіцієнти та решту змінних: поділимо всі елементи першого рядка матриці коефіцієнтів на його перший елемент a11.

 1  
 1  1 

Після такого перетворення перше рівняння матиме такий вигляд:

x1 + a12x2 + a13x3 + ⋯ + a1mxm = a1 (m + 1),
звідки маємо:
x1 = – a12x2a13x3 – ⋯ – a1mxm + a1 (m + 1).

Підставимо отриману величину для x1 у всі, крім першого, рівняння, яке залишаємо без змін. Інакше кажучи, при j = 2, 3, …, n та k = 1, 2, 3, …, (m + 1) величину елемента ajk у рядку j і стовпчику k замінюємо на таку різницю:

ajkaj1 · a1k.

Тобто до j-го рядка додаємо перший рядок, помножений на (– aj1). Отримуємо еквівалентну систему, в усіх рівняннях якої, крім першого, відсутня змінна x1.

 1  
 0  1 

Якщо коефіцієнти при x1 в усіх рівняннях системи дорівнюють 0, то робимо висновок, що x1 може набувати довільної величини.

Вилучення x2
Вибираємо серед усіх рівнянь, починаючи з другого, (з усіх, якщо ми дійшли висновку, що x1 може бути довільним), таке рівняння з найменшим порядковим номером, у якого коефіцієнт при x2 відмінний від 0. Поміняємо його місцями з другим (з першим, якщо ми дійшли висновку, що x1 може бути довільним) рівнянням системи

  1    
  0  a22      
  0    

й виразимо з нього x2 через відомі коефіцієнти та наступні змінні: поділимо всі елементи другого рядка матриці коефіцієнтів на його другий елемент a22.

 1   
 0  1     
 0   

Підставимо отриману величину x2 в усі рівняння системи, крім того, з якого визначили x2 і яке залишимо без змін. Інакше кажучи, при j = 1, 3, 4, …, n та k = 2, 3, …, (m + 1) величину елемента ajk у рядку j і стовпчику k замінюємо на таку різницю:

ajkaj2 · a2k.

Тобто до j-го рядка додаємо другий рядок, помножений на (– aj2). Отримуємо еквівалентну систему, в усіх рівняннях якої, крім другого, відсутня змінна x2.

 1  0  
 0  1     
 0  0  

Якщо коефіцієнти при x2 в усіх (в усіх, крім першого, якщо система зазнала змін на першому кроці перетворень) рівняннях системи дорівнюють 0, то робимо висновок, що x2 може набувати довільної величини.

Вилучення xr
Позначимо через l кількість таких змінних серед перших (r – 1), які можуть набувати довільних величин, r′ = r – l. Вибираємо з рівнянь системи, починаючи з r′-го, таке рівняння з найменшим порядковим номером, у якого коефіцієнт при xr відмінний від 0. Поміняємо це рівняння місцями з r′-им.

 1  0  ⋯ 0   
 0  1  ⋯ 0      
 ⋮  ⋮  ⋱  ⋮   ⋮   ⋮ 
 0  0  ⋯  1  akk
 0  0  ⋯  0 arr 
 0  0  ⋯  0   

Виразимо з цього рівняння xr: поділимо всі елементи r′-го рядка матриці коефіцієнтів на його r-ий елемент arr.

 1  0  ⋯ 0   
 0  1  ⋯ 0      
 ⋮  ⋮  ⋱  ⋮   ⋮   ⋮ 
 0  0  ⋯  1  akk
 0  0  ⋯  0  1  
 0  0  ⋯  0   

Підставимо отриману величину xk в усі рівняння системи, крім того, з якого визначили xk, і яке залишимо без змін.

Інакше кажучи, при j = 1, 2, 3, …, r′ – 2, r′ – 1, r′ + 1, r′ + 2, …, n та k = r, r + 1, …, (m + 1) величину елемента ajk у рядку j і стовпчику k замінюємо на таку різницю:

ajkajr · ark.

Тобто до j-го рядка додаємо r′-ий рядок, помножений на (– ajr).

 1  0  ⋯ 0  0  
 0  1  ⋯ 0  0  
 ⋮  ⋮  ⋱  ⋮   ⋮   ⋮ 
 0  0  ⋯  1  0 akk
 0  0  ⋯  0  1  
 0  0  ⋯  0  0  

Якщо коефіцієнти при xr в усіх рівняннях системи дорівнюють нулю, то робимо висновок, що ця змінна може набувати довільної величини.

Примітка. Для немодифікованого алгоритму матриця на цьому кроці матиме такий вигляд.

 1   ⋯   
 0  1  ⋯   
 ⋮  ⋮  ⋱  ⋮   ⋮   ⋮ 
 0  0  ⋯  1   0 
 0  0  ⋯  0  1  
 0  0  ⋯  0  0  

У цьому випадку після «спуку вниз» (вичерпання рядків, що підлягають описаній зміні) потрібно почати «підйом вгору» — додаванням до рядка добутку числа на рядок знизу утворити нулі над одиницями.

Виконання алгоритму потрібно продовжувати доти, доки є змога виключати змінні.

Якщо на якомусь кроці за допомогою описаних еквівалентних перетворень системи отримаємо рівняння вигляду 0 = aj (m + 1) (коефіцієнти при змінних дорівнюють нулю), то при aj (m + 1) = 0 потрібно вилучити це рівняння (тотожність) з розгляду. Інакше потрібно припинити виконання алгоритму з висновком про несумісність системи рівнянь.

Якщо такої аварійної зупинки не буде, то алгоритм або зведе основну матрицю коефіцієнтів до одиничної (1 — на діагоналі, 0 — зовні діагоналі), або ні.

У першому випадку отримана система матиме такий вигляд:

x1 = a1 (m + 1) ;
x2 = a2 (m + 1) ;

xm = am (m + 1).

Інакше кажучи, (m + 1)-ий стовпчик (вільних членів) містить відповідь.

У другому випадку у вихідний файл потрібно записати матрицю, отриману у результаті виконання алгоритму.

9.2. Хімія (аналіз рядкових змінних + оптимізований перебір або лінійна алгебра)

  1. Визначити кількість атомів кожного елемента у кожному субстраті й продукті.

  2. Шукані коефіцієнти задовольняють певну систему лінійних рівнянь, що виражає закон збереження кількості атомів кожного елемента під час перебігу хімічної реакції. Їх можна знайти або розв'язавши таку систему методом Гауса (див. попередню задачу) або перебором з оптимізацією по балансу кількості атомів кожного елемента, як це зроблено в авторському розв'язанні.