B@R5uk, большое спасибо за подробное решение! Я все это внимательно изучу. С вами удивительно продуктивно общаться!
B@R5uk: "Если же добавить нелинейное ограничение
(кстати, чему равна эта константа, если
-- количество вещества в молях?)"
Если константа воды равна 14, то это выражение (ограничение на рН) будет равно 1E-14.
Не спорю ваше решение математически очень изящное и верное. Но оно недостаточно точное для моей цели. Попробуйте добавить последнее условие на рН (в вашей цитате). Фактически это чистая вода и содержание
должно быть около 1E-7 (рН
, в чистой воде при нормальных условиях рН
). Еще у вас получилось сильно завышенное содержание кислорода. Реально оно не может быть выше 1Е-60. Это следствие: B@R5uk: "Время вычислений с точностью до
(максимальная возможная точность)"? Или вы понимаете под максимально возможной точностью отклонение от ограничивающих условий? Если первое, то такая точность абсолютно недостаточна, нужно минимум 1Е-100, если второе (
- расхождение в этих суммах), то ваш алгоритм работает с достаточной точностью. В настоящий момент я решаю данную задачу за 0.2 секунды (и это время можно еще сократить программными средствами) с суммарным отклонением от ограничивающих условий (1E-8 - значение штрафной функции), это гораздо быстрее, чем в Excel, например. Однако у меня функция Гиббса—Дюгема вычисляется миллионы раз; большая часть ее вычислений производится уже когда решение подобное вашему достигнуто (для этого действительно достаточно порядка 1000 циклов) и нужно добиться требуемой сходимости с ограничивающими условиями.
B@R5uk: "Это условие влияет на концентрации и, следовательно, на количества вещества ионов
и
. Эти количества вещества связаны через электронейтральность с количеством вещества ионов
, следовательно, если в растворе не будет достаточно много других заряженных ионов, то введение ограничения, связанного с ионным произведением воды, может изменить концентрацию
на порядок и более."
В литературе по данному вопросу можно найти указание на необходимость условия электронейтральности, про произведение воды (рН) нигде ничего не сказано, я добавил его самостоятельно. По идее, условия электронейтральности может быть достаточно, чтобы привести в порядок баланс ионов в растворе. Именно поэтому я выражаю неуверенность, что оно (условие на рН) необходимо.
B@R5uk: "И всё-таки, откуда взялась функция" Функция Гиббса-Дюгема (Дюхема):
http://ru.wikipedia.org/wiki/%D0%A2%D0% ... 0.BC.D0.B0Для растворов она так записывается, для твердых веществ - потенциал помножается просто на концентрацию. Я к сожалению не могу ответить, почему там можно просто моли вставлять (хотя и должен это знать по роду своего занятия). Можно и концентрации (моль/кг (или литр, что в случае разбавленного раствора непринципиально) - моляльность). Но видимо для самой функции важно только соотношение между компонентами раствора. Попробую найти в специальной литературе.
-- 13.01.2014, 16:25 --В задачах химической термодинамики не бывает лишних локальных минимумов.
Боюсь, что бывают. При учете неидеальности растворов и введении в эту функцию коэффециентов активности возможность такой ситуации например описана в
https://drive.google.com/file/d/0B08REa ... sp=sharing Внизу второго столбца на 590 странице.
B@R5uk, если вы предложите метод, который будет работать быстрее того, который я сейчас использую, например вам удастся расчитать равновесный состав за 10 тыс циклов или меньше при том, что кислород будет меньше 1Е-60 и рН будет около 7 (сейчас 5, что неправдоподобно для чистой воды) - это здорово. Я правда предвижу трудности с воспроизведением алгоритма минимизации, используемого в МатЛабе, потому что в конечном счете сам МатЛаб я использовать не могу. Но мне сейчас важнее разобраться с оценкой точности конечного результата.
Мне к сожалению пока не понятен используемый вами алгоритм: B@R5uk: "Чтобы численно найти частную производную по конкретному аргументу, необходимо немного изменить только один этот аргумент и посмотреть, как изменилась функция." Не могли бы вы дать ссылку с теоретическое обоснование этого подхода и/или объяснить на примере, как я могу перейти от неточности в значении химического потенциала к неточности в итоговой концентрации компонента раствора? Пока я вижу только один путь - это расчитывать минимум при разных исходных значениях
, изменяющихся в пределах доверительных интервалов. (Боюсь ошибиться, но на мой взгляд, вы предлагаете то же самое.) Чтобы получить статистически значимую выборку таких расчетов должно быть очень много. Пока что во всей мировой литературе по этому вопросу (исключая конечно метод Монте Карло, используя который мне придется расчитывать одно равновесие целый день) мне известна только вот эта книга (стр. 83-121):
https://drive.google.com/file/d/0B08REa ... sp=sharing предлагающая реальное решение. К сожалению, только ее я использовать не могу, потому что мне пока недоступны исходные работы, описывающий алгоритм, и есть подозрение, что в самой книге алгоритм описан неполностью.