6.10: Використання Excel і R для вирішення проблем рівноваги
- Page ID
- 24925
При вирішенні задач рівноваги ми зазвичай робимо одне або кілька припущень для спрощення алгебри. Ці припущення важливі, оскільки дозволяють звести задачу до рівняння в x, яке ми можемо вирішити, просто взявши квадратний корінь, кубічний корінь або використовуючи квадратне рівняння. Без цих припущень більшість задач рівноваги призводять до кубічного рівняння (або рівняння вищого порядку), яке є більш складним для вирішення. І Excel, і R є корисними інструментами для вирішення таких рівнянь.
Хоча ми зосереджуємося тут на використанні Excel і R для вирішення проблем рівноваги, ви також можете використовувати WolframAlpha; докладніше див. Клірі, D.A. «Використання WolframAlpha в рівноважних розрахунках», Chem. Педагог, 2014, 19, 182—186.
Excel
Excel пропонує корисний інструмент - функцію Solver - для пошуку хімічно значущого кореня поліноміального рівняння. Крім того, легко вирішити систему одночасних рівнянь шляхом побудови електронної таблиці, яка дозволяє тестувати і оцінювати кілька рішень. Давайте попрацюємо над двома прикладами.
Приклад 1: Розчинність Pb (IO 3) 2 в 0,10 М Pb (NO 3) 2
У нашому попередньому лікуванні цієї задачі ми прийшли до наступного кубічного рівняння
\[4 x^{3}+0.40 x^{2}=2.5 \times 10^{-13} \nonumber\]
де x - рівноважна концентрація Pb 2 +. Хоча існує кілька підходів до вирішення кубічних рівнянь за допомогою паперу та олівця, жоден з них не є обчислювально-простим. Один з підходів полягає в переборі відповіді, знаходячи два значення x, одне, що призводить до результату більше, ніж\(2.5 \times 10^{-13}\) і одне, що дає результат менше, ніж\(2.5 \times 10^{-13}\). При границях, встановлених для значення х, ми зрушуємо верхню межу і нижню межу до тих пір, поки точність нашої відповіді не буде задовільною. Не вдаючись у подробиці, так працює функція Excel Solver.
Щоб розв'язати цю задачу, ми спочатку перепишемо кубічне рівняння так, щоб його права сторона дорівнювала нулю.
\[4 x^{3}+0.40 x^{2}-2.5 \times 10^{-13}=0 \nonumber\]
Далі ми встановлюємо електронну таблицю, показану на малюнку Template:index a, помістивши формулу кубічного рівняння в комірку B2 та ввівши початкову здогадку для x у клітинку B1. Оскільки Pb (IO 3) 2 не дуже розчинний, ми очікуємо, що х малий і встановимо наше початкове припущення на 0. Нарешті, ми отримуємо доступ до функції Solver, вибравши Solver... з меню Інструменти, яке відкриває вікно Параметри розв'язувача.
Щоб визначити проблему, помістіть курсор у поле Встановити цільову комірку, а потім натисніть на комірку B2. Виберіть перемикач Значення: і введіть 0 в поле. Помістіть курсор у поле за зміною комірок: і натисніть на комірку B1. Разом ці дії доручають функції Розв'язувача змінювати значення x, яке знаходиться в комірці B1, поки кубічне рівняння в комірці B2 не буде дорівнює нулю. Перш ніж ми фактично вирішимо функцію, нам потрібно розглянути, чи є якісь обмеження для прийнятного результату. Наприклад, ми знаємо, що x не може бути меншим за 0, оскільки негативна концентрація неможлива. Ми також хочемо переконатися, що точність рішення є прийнятною. Натисніть на кнопку з написом Параметри... щоб відкрити вікно Параметри розв'язання. Перевірка опції Припустити ненегативні змушує вирішувач підтримувати позитивне значення для вмісту комірки B1, що відповідає одному з наших критеріїв. Встановлення точності вимагає трохи більше роздумів. Функція Solver використовує точність, щоб вирішити, коли припинити пошук, роблячи це, коли
\[|\text { expected value }-\text { calculated value } | \times 100=\text { precision }(\%) \nonumber\]
де очікуване значення - бажане значення цільової комірки (0 у цьому випадку), обчислене значення є поточним значенням функції (клітина B1 у цьому випадку), а точність - це значення, яке ми вводимо у поле Точність. Оскільки наше початкове припущення х = 0 дає обчислений результат\(2.5 \times 10^{-13}\), прийняття точності розв'язувача за замовчуванням\(1 \times 10^{-6}\) зупинить пошук після одного циклу. Щоб бути безпечним, давайте встановимо точність\(1 \times 10^{-18}\). Натисніть кнопку OK, а потім Вирішити. Коли функція Розв'язувача знайде рішення, результати з'являться у вашій електронній таблиці (див. Рис. Template:index b). Натисніть кнопку OK, щоб зберегти результат, або Скасувати, щоб повернутися до початкових значень. Зверніть увагу, що відповідь тут узгоджується з нашим\(7.91 \times 10^{-7}\) попереднім результатом M для розчинності Pb (IO 3) 2.
Обов'язково оцініть розумність відповіді Solver. При необхідності повторіть процес, використовуючи меншу величину для точності.
Приклад 2: рН 1,0 М ВЧ
Розробляючи наше попереднє рішення цієї проблеми, ми почали з визначення чотирьох невідомих і виписавши наступні чотири рівняння.
\[K_{\mathrm{a}}=\frac{\left[\mathrm{H}_{3} \mathrm{O}^{+}\right]\left[\mathrm{F}^{-}\right]}{[\mathrm{HF}]}=6.8 \times 10^{-4} \nonumber\]
\[K_{w}=\left[\mathrm{H}_{3} \mathrm{O}^{+}\right]\left[\mathrm{OH}^{-}\right]=1.00 \times 10^{-14} \nonumber\]
\[C_{\mathrm{HF}}=[\mathrm{HF}]+\left[\mathrm{F}^{-}\right] \nonumber\]
\[\left[\mathrm{H}_{3} \mathrm{O}^{+}\right]=\left[\mathrm{OH}^{-}\right]+\left[\mathrm{F}^{-}\right] \nonumber\]
Далі ми зробили два припущення, які дозволили нам спростити задачу до рівняння, яке легко вирішити.
\[\left[\mathrm{H}_{3} \mathrm{O}^{+}\right]=\sqrt{K_{\mathrm{a}} C_{\mathrm{HF}}}=\sqrt{\left(6.8 \times 10^{-4}\right)(1.0)}=2.6 \times 10^{-2} \nonumber\]
Хоча ми цього в той час і не відзначали, без припущень рішення нашої задачі - кубічне рівняння.
що ми можемо вирішити за допомогою функції Excel Solver. Звичайно, це передбачає, що ми успішно завершуємо деривацію!
Іншим варіантом є використання Excel для одночасного вирішення чотирьох рівнянь шляхом повторення значень для [HF], [F —], [H 3 O +] та [OH —]. Рисунок Template:index a показує електронну таблицю для цієї мети. Клітини в першому ряду містять початкові здогадки на рівноважний рН. Використовуючи діаграму сходів на малюнку 6.8.1, значення рН між 1 і 3 здаються розумними. Ви можете додати додаткові стовпці, якщо хочете включити більше значень рН. Формули в рядках 2—5 використовують визначення рН для обчислення [H 3 O +], K w для обчислення [ОН —], рівняння балансу заряду для обчислення [F —], і K a для обчислення [HF]. Для оцінки початкових здогадок використовуємо вираз балансу маси для ВЧ, переписуючи його як
\[[\mathrm{HF}]+\left[\mathrm{F}^{-}\right]-C_{\mathrm{HF}}=[\mathrm{HF}]+[\mathrm{F}]-1.0=0 \nonumber\]
і введення його в останній рядок; значення в цих комірках дають похибку розрахунку для кожного рН.
Рисунок Template:index b показує фактичні значення для електронної таблиці на рисунку Template:index a Від'ємне значення в комірках B6 і C6 означає, що комбіновані концентрації HF і F - занадто малі, а позитивне значення в комірці D6 означає, що їх комбіновані концентрації є занадто великий. Таким чином, фактичний рН становить від 1,00 до 2,00. Використовуючи ці значення рН як нові межі для першого рядка електронної таблиці, ми продовжуємо звужувати діапазон фактичного рН. Рисунок Template:index c показує остаточний набір припущень, при цьому фактичний pH падає між 1,59 і 1,58. Оскільки похибка для 1,59 менша, ніж для 1,58, ми приймаємо рН 1,59 як відповідь. Зверніть увагу, що це згода з нашим попереднім результатом.
Ви також можете вирішити цей набір одночасних рівнянь за допомогою функції Excel Solver. Для цього створіть електронну таблицю на рисунку Template:index a, але пропустіть всі стовпці, крім A і B. Вибрати розв'язувач... з меню Інструменти та визначте проблему за допомогою B6 для Встановити цільову комірку, встановивши бажане значення 0 та вибравши B1 для «За зміною комірок»:. Можливо, вам доведеться пограти з варіантами вирішувача, щоб знайти підходяще рішення проблеми, і розумно спробувати кілька різних початкових здогадок. Функція Solver добре працює для відносно простих завдань, таких як знаходження рН 1,0 М ВЧ. Оскільки проблеми ускладнюються і включають в себе більше невідомих, функція Розв'язувача стає менш надійним інструментом для вирішення задач рівноваги.
Використовуючи Excel, обчислити розчинність AgI в 0,10 М NH 3 без будь-яких припущень. Дивіться наше попереднє лікування цієї проблеми для відповідних реакцій рівноваги та констант.
- Відповідь
-
Список відповідних реакцій рівноваги та констант рівноваги див. У нашому попередньому лікуванні цієї проблеми. Щоб вирішити цю проблему за допомогою Excel, давайте створимо наступну електронну таблицю

копіювання вмісту комірок B1‐B9 в кілька додаткових стовпців. Початкова здогадка для pI в клітині B1 дає концентрацію I — у клітинці B2. Клітини B3—B8 обчислюють інші концентрації, використовуючи K sp для отримання [Ag +], використовуючи баланс маси на йодид і срібло для отримання [\(\text{Ag(NH}_3)_2^+\)], використовуючи b2 для обчислення [NH 3], використовуючи баланс маси на аміаку, щоб знайти [\(\text{NH}_4^+\)], використовуючи K b обчислити [ОН —], а за допомогою K w обчислити [H 3 O +]. Рівняння балансу заряду системи забезпечує засіб для визначення похибки розрахунку.
\[\left[\mathrm{Ag}^{+}\right]+\left[\mathrm{Ag}\left(\mathrm{NH}_{3}\right)_{2}^{+}\right]+\left[\mathrm{NH}_{4}^{+}\right]+\left[\mathrm{H}_{3} \mathrm{O}^{+}\right]-\left[\mathrm{I}^{-}\right]+\left[\mathrm{OH}^{-}\right]=0 \nonumber\]
Найбільша можлива величина для pI, яка відповідає найменшій концентрації I — і мінімально можлива розчинність, відбувається для простого, насиченого розчину AgI. Коли [Ag +] = [I —], концентрація йодиду дорівнює
\[\left[\mathrm{I}^{-}\right]=\sqrt{K_{\mathrm{sp}}}=\sqrt{8.3 \times 10^{-17}}=9.1 \times 10^{-9} \nonumber\]
що відповідає pI 8,04. Введення початкових припущень для pI 4, 5, 6, 7 і 8 показує, що помилка змінює знак між pI 5 і 6. Продовжуючи таким чином звузити діапазон для pI, ми знаходимо, що функція помилки найближча до нуля при pI 5.42. Концентрація I — при рівновазі, і молярна розчинність AgI, становить\(3.8 \times 10^{-6}\) моль/л, що узгоджується з нашим попереднім рішенням цієї задачі.
Р
R має просту команду - uniroot —для знаходження хімічно значущого кореня поліноміального рівняння. Крім того, легко написати функцію для вирішення набору одночасних рівнянь шляхом ітерації на розв'язку. Давайте попрацюємо над двома прикладами.
Приклад 1: Розчинність Pb (IO 3) 2 в 0,10 М Pb (NO 3) 2
У нашому попередньому лікуванні цієї задачі ми прийшли до наступного кубічного рівняння
\[4 x^{3}+0.40 x^{2}=2.5 \times 10^{-13} \nonumber\]
де x - рівноважна концентрація Pb 2 +. Хоча існує кілька підходів до вирішення кубічних рівнянь за допомогою паперу та олівця, жоден з них не є обчислювально-простим. Одним із підходів до вирішення проблеми є ітерація відповіді, знаходячи два значення x, одне, що призводить до результату більше, ніж,\(2.5 \times 10^{-13}\) і одне, що дає результат менше, ніж\(2.5 \times 10^{-13}\). Встановивши межі для значення х, потім зрушуємо верхню межу і нижню межу до тих пір, поки точність нашої відповіді не буде задовільною. Не вдаючись у подробиці, так працює команда uniroot.
Загальна форма команди uniroot:
uniroot (функція, нижня, верхня, верхня)
де функція - об'єкт, який містить рівняння, корінь якого ми шукаємо, нижній і верхній - межі для кореня, а tol - бажана точність для кореня. Щоб створити об'єкт, який містить рівняння, ми переписуємо його так, щоб його права сторона дорівнювала нулю.
\[4 x^{3}+0.40 x^{2}-2.5 \times 10^{-13} = 0 \nonumber\]
Далі вводимо наступний код, який визначає наше кубічне рівняння як функцію з назвою eqn.
> eqn = функція (х) {4* х ^ 3+ 0,4* х ^ 2 — 2.5e—13}
Оскільки наше рівняння є функцією, команда uniroot може відправити значення x до eqn і отримати назад відповідне значення рівняння.
Наприклад, введення
> Еван (2)
передає в функцію значення x = 2 і повертає відповідь 33.6.
Нарешті, ми використовуємо команду uniroot, щоб знайти корінь.
> однокорень (EWN, нижній = 0, верхній = 0,1, верхній = 1e—18)
Оскільки Pb (IO 3) 2 не дуже розчинний, ми очікуємо, що х невеликий і встановимо нижню межу 0. Вибір для верхньої межі менш критичний. Щоб рішення мало достатню точність, встановлюємо допуск на значення, яке менше очікуваного кореня. Рисунок Template:index показує результат. Значення $root - це корінь рівняння, який добре узгоджується з нашим попереднім результатом\(7.91 \times 10^{-7}\) для молярної розчинності Pb (IO 3) 2. Іншими результатами є значення рівняння для кореня, кількість ітерацій, необхідних для пошуку кореня, і оціночна точність кореня.
Приклад 2: рН 1,0 М ВЧ
Розробляючи наше попереднє рішення цієї проблеми, ми почали з визначення чотирьох невідомих і виписавши наступні чотири рівняння.
\[K_{\mathrm{a}}=\frac{\left[\mathrm{H}_{3} \mathrm{O}^{+}\right]\left[\mathrm{F}^{-}\right]}{[\mathrm{HF}]}=6.8 \times 10^{-4} \nonumber\]
\[K_{w}=\left[\mathrm{H}_{3} \mathrm{O}^{+}\right]\left[\mathrm{OH}^{-}\right]=1.00 \times 10^{-14} \nonumber\]
\[C_{\mathrm{HF}}=[\mathrm{HF}]+\left[\mathrm{F}^{-}\right] \nonumber\]
\[\left[\mathrm{H}_{3} \mathrm{O}^{+}\right]=\left[\mathrm{OH}^{-}\right]+\left[\mathrm{F}^{-}\right] \nonumber\]
Далі ми зробили два припущення, які дозволили нам спростити задачу до рівняння, яке легко вирішити.
\[\left[\mathrm{H}_{3} \mathrm{O}^{+}\right]=\sqrt{K_{\mathrm{a}} C_{\mathrm{HF}}}=\sqrt{\left(6.8 \times 10^{-4}\right)(1.0)}=2.6 \times 10^{-2} \nonumber\]
Хоча ми цього в той час і не відзначали, без припущень рішення нашої задачі - кубічне рівняння.
\[\left[\mathrm{H}_{3} \mathrm{O}^{+}\right]^{3}+K_{\mathrm{a}}\left[\mathrm{H}_{3} \mathrm{O}^{+}\right]^{2}- \left(K_{a} C_{\mathrm{HF}}+K_{\mathrm{w}}\right)\left[\mathrm{H}_{3} \mathrm{O}^{+}\right]-K_{\mathrm{a}} K_{\mathrm{w}}=0 \nonumber\]
що ми можемо вирішити за допомогою команди uniroot. Звичайно, це передбачає, що ми успішно завершуємо деривацію!
Інший варіант - написати функцію для одночасного вирішення чотирьох рівнянь. Ось код цієї функції, яку ми будемо називати eval.
> eval = функція (рН) {
+ Н3о = 10 ^ -рН
+ о = 1е—14/х3о
+ ВЧ = (Н3о* ф) /6,8е—4
+ похибка = hf + f — 1
+ вихід = data.frame (рН, помилка)
+ друк (вихід)
+}
Відкриті фігурні дужки, {, говорить R, що ми маємо намір ввести нашу функцію протягом декількох рядків. Коли ми натискаємо enter в кінці рядка, R змінює свій запит з > на +, вказуючи, що ми продовжуємо вводити ту саму команду. Закрита фігурна дужка,}, в останньому рядку вказує на те, що ми виконали функцію. Команда data.frame об'єднує два або більше об'єктів в таблицю, яку ми потім роздрукуємо, щоб ми могли переглянути результати обчислень. Ви можете адаптувати цю функцію до інших проблем, змінивши змінну, яку ви передаєте функції, та рівняння, які ви включаєте в функцію.
Розглянемо докладніше, як працює ця функція. Функція приймає припущення для рН і використовує визначення рН для обчислення [H 3 O +], K w для обчислення [OH —], рівняння балансу заряду для обчислення [F —], і K a для обчислення [HF]. Потім функція оцінює рішення за допомогою виразу балансу маси для ВЧ, переписуючи його як
\[[\mathrm{HF}]+\left[\mathrm{F}^{-}\right]-C_{\mathrm{HF}}=[\mathrm{HF}]+\left[\mathrm{F}^{-}\right]-1.0=0 \nonumber\]
Потім функція збирає початкове припущення для рН та помилки та друкує їх у вигляді таблиці.
Принадність цієї функції в тому, що об'єкт, який ми передаємо йому, pH, може містити безліч значень, що дозволяє легко шукати рішення. Оскільки HF - це кислота, ми знаємо, що розчин кислий. Це встановлює верхню межу 7 для рН. Ми також знаємо, що рН 1,0 М HF не менше 0, оскільки це рН, якщо HF була сильною кислотою. Для нашого першого проходу введемо наступний код
> рН = с (7, 6, 5, 4, 3, 2, 1)
> телятина (рН)
який змінює рН в цих межах. Результат, показаний на рисунку Template:index a, вказує на те, що рН менше 2 і більше 1, оскільки саме в цьому інтервалі знака зміни помилки.
Для нашого другого проходу давайте вивчимо значення рН між 2,0 і 1,0, щоб ще більше звузити рішення проблеми.
> рН = с (2,0, 1,9, 1,8, 1,7, 1,6, 1,5, 1,4, 1,3, 1,2, 1,1, 1,0)
> телятина (рН)
Результат на рисунку Template:index b показує, що рН повинен бути менше 1,6 і більше 1,5. Третій прохід між цими межами дає результат, показаний на рисунку Template:index c, який відповідає нашому попередньому результату pH 1.59.
Використовуючи R, обчислити розчинність AgI в 0,10 М NH 3 без будь-яких припущень. Дивіться наше попереднє лікування цієї проблеми для відповідних реакцій рівноваги та констант.
- Відповідь
-
Для вирішення цієї проблеми скористаємося наступною функцією:
> eval = функція (Pi) {
+ I = 10^—ПІ
+ Аг = 8,3е—17/я
+ АГнх3 = Аг — Я
+ NH3 = (АГН3/ (1,7Е7*Аг)) ^0,5
+ NH4 = 0,10‐NH3 — 2* АГН3
+ ОН = 1,75е—5* НХ3/НХ4
+ Н3О = 1Е—14/О
+ помилка = Аг + AgNH3+ NH4+ Н3О — ОН - Я
+ вихід = data.frame (pI, помилка)
+ друк (вихід)
+}
Функція приймає початкове припущення для pI і обчислює концентрації кожного виду в розчині, використовуючи визначення pI для обчислення [I —], використовуючи K sp для отримання [Ag +], використовуючи баланс маси на йодид і срібло для отримання [\(\text{Ag(NH}_3)_2^+\)], використовуючи \(\beta_2\)для обчислення [NH 3], використовуючи баланс маси на аміаку для пошуку [\(\text{NH}_4^+\)], використовуючи K b для обчислення [ОН —], і використовуючи K w для обчислення [H 3 O +]. Рівняння балансу заряду системи забезпечує засіб для визначення похибки розрахунку.
\[\left[\mathrm{Ag}^{+}\right]+\left[\mathrm{Ag}\left(\mathrm{NH}_{3}\right)_{2}^{+}\right]+\left[\mathrm{NH}_{4}^{+}\right]+\left[\mathrm{H}_{3} \mathrm{O}^{+}\right]-\left[\mathrm{I}^{-}\right]+\left[\mathrm{OH}^{-}\right]=0 \nonumber\]
Найбільша можлива величина PI - відповідне найменшій концентрації I - і найменша можлива розчинність - відбувається для простого, насиченого розчину AgI. Коли [Ag +] = [I —], концентрація йодиду дорівнює
\[\left[\mathrm{I}^{-}\right]=\sqrt{K_{\mathrm{sp}}}=\sqrt{8.3 \times 10^{-17}}=9.1 \times 10^{-9} \nonumber\]
що відповідає pI 8.04. Наступний сеанс показує функцію в дії.
> Пі=С (4, 5, 6, 7, 8)
> Еваль (Pi)
Помилка pI
1 4 -2.56235615
2 5 -0.16620930
3 6 0.07337101
4 7 0.09734824
5 8 0,09989073> Пі = с (5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6.0)
> Еваль (Pi)
Помилка Пі
1 5.1 ‐ 0.111446582 5.2 ‐ 0,06794105
3 5.3 ‐ 0,03336475
4 5,4 ‐ 0,00568116
5 5,5 0,01571549
6 5,6 0,03308929
7 5,7 0,04685937
8 5,8 0,05779214
9 5,9 0,06647475
10 6,0 0,07337101> ІП = с (5.40, 5.41, 5.42, 5.43, 5.44, 5.45, 5.46, 5.47, 5.48, 5.49, 5.50)
> Еваль (Pi)
Помилка pI
1 5.40 ‐ 0,0056811605
2 5,41 ‐ 0,0030715484
3 5.42 0,0002310369
4 5.43 ‐ 0,0005134898
5 5,44 0,0028281878
6 5,45 0,0052370980
7 5,46 0,0074758181
8 5,47 0,0096260370
9 5,48 0,0117105498
10 5.49 0,0137387291
1 5,50 0,0157154889
Функція помилки найближча до нуля при pI 5,42. Концентрація I — при рівновазі, і молярна розчинність AgI, становить\(3.8 \times 10^{-6}\) моль/л, що узгоджується з нашим попереднім рішенням цієї задачі.
