On a several methods of parametric identification in biokinetics
- Authors: Glagolev M.V.1,2,3, Sabrekov A.F.3, Il’yasov D.V.3
-
Affiliations:
- Lomonosov Moscow State University
- Institute of Forest Science, Russian Academy of Sciences
- Yugra State University
- Issue: Vol 17, No 1 (2026)
- Pages: 4-44
- Section: Overviews and lectures
- Published: 31.03.2026
- URL: https://edgccjournal.org/EDGCC/article/view/703758
- DOI: https://doi.org/10.18822/edgcc703758
- ID: 703758
Cite item
Full Text
Abstract
Introduction. Biokinetic models are used to elucidate the characteristics of chemical and physical processes occurring in living organisms. In various fields of biology, including ecology, formal methods for constructing biokinetic mathematical models are well-developed. The most common models comprise systems of differential equations. Two types of problems can be formulated for such systems: direct and inverse problems. The direct problem involves finding a solution to the system given specific parameter values, initial conditions, or boundary conditions. The inverse problem most often consists of model parameter identification: finding numerical parameter values for which the system's solution best fits the available experimental (observed) data.
Typically, realistic and practically relevant systems of equations (mathematical models) lack analytical solutions. While numerical methods for solving direct problems are well-developed, universal and effective methods for solving inverse problems still seemingly do not exist. The aim of this lecture is, through concrete examples, to introduce students to some frequently used methods for the parametric identification of biokinetic mathematical models.
Problem Statement. A typical biokinetic problem is the parametric identification for a system of several interacting components whose concentrations change over time. For example, a system of microorganisms consuming a substrate can be considered. As a result of the interaction between microorganisms and the substrate, microbial concentration will increase over time, while substrate concentration will decrease. If component concentrations at various time points are known, to determining unknown parameters one can minimize a function expressing the sum of squared deviations between observed and predicted values. The primary requirement for the sought model parameters is that their variation must have a noticeable effect on this function, called the residual function. These problems are known as well-conditioned and will be considered in this lecture.
There are several types of residual functions. For example, they may incorporate a scaling parameter, also called a weighting factor or weight. Weights determine the importance of including certain deviations between experimental data and calculated values of variables into the corresponding measure of disagreement. The larger the weights, the more important the corresponding deviation (i.e. data point) is considered, which should influence the results of the identification problem. Weights are often set as the inverse of the variance of observed values. Another type of scaling parameter is the concentration of a characteristic component. In this case, the sum of squared relative deviations, rather than simple deviations, is minimized. Besides the least squares criterion, other distance measures between observed data and predicted values can be used, such as the criterion of absolute deviations or the Chebyshev (minimax) criterion.
Methods for Solving Parameter Identification Problems. The main issue of parameter identification lies in the fact that in real-world problems, the residual function can have several local minima. Unfortunately, there are currently no universal and effective methods for finding the global minimum of a function when it has multiple local minima. Consequently, several types of parametric identification problems are distinguished, for which specific computational methods are applied. Two main types are based on whether analytical expressions exist for functions describing the time-dependent properties of the system. If such expressions exist, linearization of input data is applied in the simplest cases, while nonlinear approaches are used in more complex ones.
1. Linearization is the transformation of nonlinear formulas into a linear expression through specific transformations. Models that can be transformed into linear ones are called intrinsically linear models, as opposed to intrinsically nonlinear models. As a first example, an intrinsically linear function representing the simplest mathematical model expressed by a first-order linear differential equation is considered. Logarithmic transformation allows rewriting this equation in linear form. Special weights must be used to account for the specific transformation applied to the initial nonlinear equation. As a second example, a system of equations describing microbial biomass growth during the consumption of 4-chloroaniline is considered. The method of approximate linearizing transformation is applied for parameter identification in this model.
2. Substitution method. Using the aforementioned 4-chloroaniline consumption model as an example, it is shown how the substitution method allows obtaining a fully satisfactory description of the experimental results by the model within a certain concentration range. In this case, just two points from the original data were judiciously selected for calculations. Furthermore, it is demonstrated how the substitution method can be implemented to describe 4-chloroaniline consumption using more realistically justified functions, specifically the Monod equation. In this case, the function describing 4-chloroaniline concentration dependence on time becomes implicit, and three points from the original data are required to identify the model parameters. Notably, obtained parameters result in satisfactory model predictions across the entire range of 4-chloroaniline concentrations. The substitution method can also be implemented in cases when differential equations cannot be solved analytically. In such cases, function extrema, where derivatives are zero by definition, can be used. Substituting experimental data at extremum points into the system equations allows determining at least some model parameters or their ratios. This approach is illustrated using a model of biomass growth in a continuous bioreactor (chemostat), accounting for the lag due to the ribosome synthesis.
3. Elimination of the independent variable. Most often for biokinetic models, the eliminated independent variable is time. It is demonstrated how eliminating time by dividing one differential equation of the system by another allows computing one parameter for the aforementioned model of biomass growth in a continuous bioreactor. Another fairly simple and limited-use method for solving inverse problems is model simplification. In some cases, a complex model can be well approximated by a simple model that allows analytical integration in a form to which a straightforward linearizing transformation can be applied. It is shown how this approach can be applied to the aforementioned model of biomass growth in a continuous bioreactor.
4. Representing the model equations as a Taylor series. This approach is used when dependent variables change almost linearly or exponentially over a certain time interval. It is demonstrated how this approach is applied to the aforementioned model of biomass growth in a continuous bioreactor, yielding two dependencies between model coefficients.
5. Linearization can also be applied to complex systems of nonlinear differential equations. There are no universal algorithms for applying this method; a creative approach is necessary. It is shown how linearization is applied to the aforementioned model of biomass growth in a continuous bioreactor. All the variables are divided by their maximum experimental values, after which new notations for variables and parameters are introduced. The concentration equation is then rewritten to enable partial integration with the new variables. Then linear regression is applied to the left-hand side (normalized concentration) to identify new introduced parameters, while numerical integration using observed concentrations is applied for the right-hand side. As a result, another model parameter is found.
6. Using the two found parameters and three parameter ratios, the remaining parameter of the model of biomass growth in a continuous bioreactor is determined by means of one-dimensional nonlinear minimization of the residual function. The residual minimum is searched using a MATLAB program. The sum of absolute deviations between the observed and predicted values was used as the residual function, with the corresponding average concentration values as weights. It is shown that the obtained parameter is determined with some ambiguity related to the ill-posed nature of the problem. Comparing the results of identifying different parameters shows that parameters can be determined with significant error, reaching several tens of percent. Solving optimization problems in the MATLAB environment is described in detail including various minimization search functions, as well as settings regulating search accuracy, output of results, and other operation parameters.
7. Finally, it is shown how all parameters in the model of biomass growth in a continuous bioreactor could be identified simultaneously from the experimental data. This inverse problem is solved using multidimensional optimization via the fminsearch function in the MATLAB. The search was conducted in the region of non-negative parameter values. Parameter values obtained earlier by other methods were used as initial guess. It is demonstrated that experimental data can be equally well fitted by different sets of model parameters, which vary widely with relative errors of tens and hundreds of percent. This indicates the inherent ill-posed nature of the formulated problem (i.e. of the particular model used to describe the experimental data).
Full Text
Используемые сокращения и обозначения
МНК – метод наименьших квадратов;
ОДУ – обыкновенные дифференциальные уравнения;
ПраЧ – правая часть (системы дифференциальных уравнений);
aj и Fj(t) – соответственно коэффициенты и функции, задающие линейную модель (Σ[aj·Fj(t)]);
В – скорость разбавления (в хемостате);
Сi – текущая концентрация i-го компонента системы (i = 1, 2, …, K);
С0i – начальная концентрация i-го компонента системы (i = 1, 2, …, K);
D – функция, задающая расстояние между двумя числами;
F – некоторая функция;
G – линеаризующее преобразование;
H(k) – невязка (общего вида), выражающая отклонение экспериментальных значений Сi(tm) от рассчитанных φi(k,tm);
К – количество компонентов в системе;
k – вектор параметров математической модели (его элементы: k0, k1, …, kj);
Ni – количество экспериментально измеренных (в моменты tm) значений концентраций для i-го компонента;
S(k) – сумма квадратов отклонений экспериментальных значений Сi(tm) от рассчитанных φi(k,tm);
S0 – концентрация субстрата, поступающего в хемостат;
t – время;
tm – моменты времени, в которые производятся измерения значений Сi (m = 1, 2, …, Ni);
vi – масштабирующий параметр для i-го компонента;
vim – масштабирующий параметр для i-го компонента в момент времени tm;
Wm – «комбинированный» весовой коэффициент (учитывающий все различные причины «взвешивания»);
wm – частный весовой коэффициент (учитывающий, например, только точность экспериментальных данных);
х – любая независимая переменная (абсцисса);
у – любая зависимая переменная (ордината);
ΔСi – абсолютная погрешность измерений;
μ – удельная скорость роста микроорганизмов;
σm – среднеквадратичное отклонение;
φi(t), φi(k,t) – рассчитанное по математической модели значение концентрации i-го компонента.
При изучении наук примеры полезнее правил.
Исаак Ньютон1
ВВЕДЕНИЕ
Кинетикой (и термодинамикой) все чаще и чаще пользуются для выяснения характеристик систем химических и физических процессов, протекающих в организмах. Область исследований, в которых применяют эти дисциплины для решения биохимических проблем, очень обширна и простирается от органической химии до биологии [Bray, White, 1957: p. 5]. В различных областях биологии, включая экологию, достаточно хорошо разработаны формальные методы построения биокинетических математических моделей, чаще всего представляющих собой системы дифференциальных или функционально-дифференциальных уравнений [Romanovskiy et al., 1975; Murray, 2002; Glagolev, Smagin, 2005; Glagolev et al., 2023]. Относительно этих систем можно поставить две принципиально разные задачи. Прямая задача состоит в том, чтобы найти решение системы при заданных значениях параметров (и, возможно, заданных дополнительных условиях, каковыми могут являться, например, начальные или краевые условия в случае систем дифференциальных уравнений). Одним из важнейших типов обратных задач является задача идентификации параметров математической модели («коэффициентная обратная задача»): найти такие численные значения параметров, при которых решение системы будет в некотором смысле наилучшим образом соответствовать имеющимся экспериментальным данным.
Обычно те из систем уравнений (математических моделей), которые являются относительно реалистичными и представляют интерес для практики, оказываются столь сложными, что не имеют аналитического решения. К счастью, были разработаны эффективные численные методы решения прямых задач (см., например [Johnson, 1980: Сh. 3, 4, 7; Engeln-Mullges, Uhlig, 1996: p. 13-154, 423-508; Glagolev et al., 2018; Davis, 2024: p. 173-214, 462-562]). А вот универсальных эффективных методов решения обратных задач, по-видимому, до сих пор не существует. И для надежного решения каждой конкретной задачи приходится подбирать свой метод. Целью настоящей лекции является на конкретных примерах познакомить студентов с некоторыми часто используемыми методами параметрической идентификации математических моделей биокинетики. Впрочем, задачи параметрической идентификации возникают не только в биокинетике, но и практически во всех тех областях науки вообще (и биологии в частности), где используется математическое моделирование (например, [Bard, 1974; Seinfeld, Lapidus, 1974; Ljung, 1987; Mamikhin et al., 2025]). Поэтому рассматриваемые ниже методы могут оказаться пролезными не только для биокинетиков, но для гораздо более широкого круга студентов и специалистов.
ПОСТАНОВКА ЗАДАЧИ ИДЕНТИФИКАЦИИ ПАРАМЕТРОВ МАТЕМАТИЧЕСКОЙ МОДЕЛИ
Простейшая постановка задачи параметрической идентификации
Пусть в системе имеется К различных компонентов, которые могут взаимодействовать между собой, в результате чего с течением времени концентрации (Сi, i = 1, 2, …, K) данных компонентов изменяются. И пусть имеется математическая модель, позволяющая рассчитать эти концентрации в произвольный момент времени t. Обозначим рассчитанные по модели концентрации через φi(k,t),2 где k – вектор параметров модели (его элементы: k0, k1, …, kj). Например, в качестве системы можно рассмотреть микроорганизмы (концентрация которых – С1), потребляющие некоторый питательный субстрат (С2). В результате взаимодействия микробов с субстратом (это взаимодействие выражается в потреблении субстрата) концентрация микробов с течением времени будет расти, а концентрация субстрата – падать (если, конечно, в систему не поступают новые порции субстрата). Математические модели, описывающие этот процесс (см., например, [Pirt, 1975; Romanovskiy et al., 1975: p. 122-140; Glagolev, 2021]), обычно содержат 3-4 параметра: максимальную удельную скорость роста организмов, экономический коэффициент и константу полунасыщения для их роста на данном субстрате, а также, возможно, удельную скорость отмирания.
Если из опыта известны наборы данных, содержащих концентрации компонентов Сi в различные моменты времени tm, то возможный подход к определению неизвестных констант базируется на минимизации функции S, выражающей сумму квадратов отклонений экспериментальных значений Сi(tm) от рассчитанных φi(k,tm) [Korobov, Ochkov, 2009: p. 133]:
, (1)
где Ni – количество экспериментально измеренных значений Сi для i-го компонента (если в рассматриваемой задаче компонент всего один, то мы будем писать не «С1» и «N1», а просто «С» и «N»); k – вектор искомых констант. Именно путем варьирования этих констант (оптимизирующих переменных [Gartman, Klushin, 2020: p. 286]) осуществляется минимизация функции S – «невязки между экспериментальными и расчетными данными».
Основное требование к искомым параметрам модели состоит в том, чтобы их изменение оказывало заметное влияние на S (в особенности в окрестностях возможных экстремальных значений). В противном случае найденные оптимальные значения не будут однозначно характеризовать оптимальное решение. Это может привести к получению физически необоснованных и плохо определенных решений, что сведет на нет решение оптимизационной задачи [Gartman, Klushin, 2020: p. 286]. Для читателей, знакомых с разделением задач на «хорошо обусловленные» (well-conditioned) и «плохо обусловленные» (ill-conditioned) [Gerald, Wheatley, 1994: p. 117, 148-154, 172-173; Engeln-Mullges, Uhlig, 1996: р. 8; Glagolev, Sabrekov, 2019], конечно, очевидно, что слабое влияние k на S будет характеризовать именно последние. Подчеркнем, что в данной лекции мы предполагаем задачу минимизации S по k хорошо обусловленной, а к плохо обусловленным задачам обратимся позднее.
Различные типы невязок между расчетными и экспериментальными данными
Однако функция S, задаваемая формулой (1), – не единственная возможная невязка. Более того, иногда она является далеко не лучшей невязкой для минимизации. Пусть, например, ищутся константы для некоторого процесса, в котором 1-й компонент распадается на 2-й и 3-й, но 3-й очень быстро превращается в 4-й, в отличие от 2-го, который ни во что более не превращается
Понятно, что концентрации 3-го компонента могут быть существенно меньше, чем 2-го (т.е. С3 < < С2). Поэтому вклад невязки (в суммарную функцию S) между экспериментальными данными и расчетными значениями для 3-го компонента будет существенно меньше, чем для 2-го. Но тогда при минимизации S будет найден такой набор параметров k, при котором экспериментальные данные для 2-го компонента будут воспроизводиться теоретическими кривыми хорошо, а для 3-го – относительно плохо. Чтобы избежать этого, можно использовать функцию
,
где vi представляет собой некоторый масштабирующий параметр для i-го компонента. Часто 1/vi2 называют «весовым коэффициентом» или просто «весом» (подробнее о весовых коэффициентах будет сказано ниже в соответствующем разделе).
Весовые коэффициенты в этих формулах определяют важность включения в соответствующие критерии рассогласования между экспериментальными данными и переменными, рассчитанными по модели. Чем больше весовой коэффициент, тем более важным считается соответствующее рассогласование (измерение), которое должно влиять на результаты решения идентификационной задачи. Теоретические аспекты решаемой задачи идентификации тесно связаны с математической статистикой и регрессионным анализом, что позволяет более обоснованно определять весовые коэффициенты, в частности, путем использования обратной величины дисперсии экспериментальных измерений (или какой-либо иной характеристики точности измерений; например, можно принять vi = ΔСi, где ΔСi – абсолютная погрешность измерений [Alton, 2011]). Но, вообще говоря, существуют различные методы оценки весовых коэффициентов: эмпирические, статистические и т.п., которые могут выбираться исходя из физического смысла решаемой задачи [Gartman, Klushin, 2020: p. 285]. Таким образом, в общем виде следовало бы писать не vi, а vim, чтобы иметь возможность задавать «веса» не только для i-го компонента вообще, но и для каждого m-го экспериментально измеренного значения этого компонента (например, чтобы учесть, что некоторые значения одного и того же i-го компонента могут быть измерены довольно точно, а другие – весьма приближенно).3
В качестве масштабирующего параметра можно взять какую-либо характерную концентрацию i-го компонента. В частности, если vim = Сi(tm), то Н(k) будет представлять собой сумму квадратов относительных ошибок (тогда как S – сумма квадратов абсолютных ошибок). Впрочем, относительные ошибки – это тоже не всегда лучший вариант. Действительно, на практике нас обычно не интересует точное совпадение эксперимента и расчета для исчезающе малых концентраций, но именно для них относительные ошибки будут, скорее всего, наибольшими; следовательно, минимизация Н приведет к такому набору k, при котором отклонение (в абсолютных единицах) теоретических кривых от очень малых концентраций будет мало, а от больших – велико4.
Наконец, кроме квадратов разностей можно использовать и другие меры расстояния между измеренными и экспериментальными данными, поэтому в общем виде будем записывать невязку следующим образом:
. (2)
Здесь D – некоторая подходящая функция для вычисления вышеуказанного расстояния; например, D(х) = х2, или D(х) = |х|, или др. Выбор вида функции D, равно как и параметров viт, определяется конкретной задачей. И, в частности, статистическими характеристиками экспериментальных данных, используемых в этой задаче (например, если погрешности лучше удовлетворяют двойному экспоненциальному распределению5, нежели гауссовскому, то A. Richardson, D. Hollinger рекомендовали в этом случае использовать в (2) не квадрат, а абсолютное значение [Alton, 2011]).
Впрочем, попытки любую возможную невязку описать единой формулой вряд ли имеют большой смысл, ибо, скорее всего, найдется невязка какого-то экзотического вида, которая не удовлетворяет предложенной общей формуле. А если единая формула все-таки будет найдена, то вид ее окажется столь общим, что практического значения иметь не будет. Поэтому гораздо интереснее и важнее вопрос о том, какие конкретные невязки и как часто использовались на практике. Т.Н. Гартман и Д.В. Клушин [Gartman, Klushin, 2020: p. 284-285] указывают 3 основных величины для оценки рассогласования расчетных и экспериментальных данных, которые они называют «критериями»6:
- критерий метода наименьших квадратов (МНК), задаваемый формулой (1);
- критерий метода наименьших модулей, задаваемый формулой (2) при D(х) = |х|;
- критерий Чебышева (минимаксный критерий): в частном случае одного компонента (т.е. при K = 1) минимизируется max(|C(tm) - φ(tm)|/vm), где 1 ≤ m ≤ N.
Эти авторы считают, что наиболее употребляемым является критерий МНК, за ним следует минимаксный метод Чебышева и в последнюю очередь – критерий наименьших модулей.
МЕТОДЫ РЕШЕНИЯ ЗАДАЧИ ИДЕНТИФИКАЦИИ ПАРАМЕТРОВ
Типы реализации вычислений параметров моделей
Выше (во «Введении») было заявлено, что пока не существует универсальных эффективных методов решения обратных задач. Однако может показаться, что сказанное ранее (в разделе «Простейшая постановка задачи параметрической идентификации») противоречит этому. Действительно, казалось бы, достаточно записать для конкретной задачи параметрической идентификации невязку (1) и найти такие параметры k0, k1, …, kj, которые обеспечивают минимум невязки, как задача будет решена. Однако никакого противоречия здесь нет, поскольку в общем случае найти этот минимум совсем не просто. Главная трудность состоит в том, что в реальных задачах функция S(k) может иметь несколько локальных минимумов. А универсальных эффективных методов поиска глобального минимума функции при наличии у нее множества локальных минимумов пока не существует. В связи с отсутствием универсальности методов решения выделяют несколько типов задач параметрической идентификации (для работы с которыми применяются те или иные специфические вычислительные методы). В зависимости от того, могут ли функции φi(t) быть представлены в аналитическом виде, выделяют два основных типа реализации вычислений параметров.
I. Первый из них применим к ситуациям, когда математическая модель интегрируется в квадратурах7. Тогда функции φi(t) задаются конкретными аналитическими выражениями, с помощью которых можно осуществить аппроксимацию набора кинетических данных. В свою очередь, здесь можно выделить два способа определения параметров аппроксимации [Korobov, Ochkov, 2009: p. 133].
I.1. Первый и наиболее простой способ можно осуществить, если уравнение зависимости φi(t) допускает запись в форме, указывающей на возможность линеаризации кинетических данных. Тогда выбирают соответствующие линеаризующие координаты для кинетической кривой и строят график прямой линии. Корректно построенный график должен удовлетворять критерию минимальной суммы квадратов отклонений, заданной формулой (1). Преимущество этого способа решения состоит в том, что он легко реализуем: практически все математические пакеты предусматривают наличие встроенных функций линейной регрессии. Кроме того, вычисления по этому способу не требуют предварительного определения начальных приближений для искомых параметров [Korobov, Ochkov, 2009: p. 133].
I.2. Но если уравнение линеаризовать не представляется возможным (или это очень сложно), то используются различные нелинейные подходы.
II. Более сложно решить обратную задачу, если математическая модель не интегрируется в квадратурах, т.е. аналитических выражений для функций, выражающих зависимости свойств системы от времени, в этом случае не существует. Однако и в таких ситуациях для идентификации параметров применимы различные подходы [Korobov, Ochkov, 2009: p. 134], которые мы рассмотрим ниже на примерах. Но начнем с простейших задач типа (I.1).
Определение параметров после линеаризующего преобразования модели
Линеаризующие преобразования
Из сказанного выше (об основной трудности минимизации невязки – многоэкстремальности) очевидно, что особое значение приобретают методы решения задачи параметрической идентификации, приводящие к минимизации функции с одним минимумом. В частности, невязка будет иметь лишь один минимум, если математическая модель φi(k,t) линейна по k, и в этом случае задача идентификации параметров очень просто решается при помощи, например, линейного метода наименьших квадратов.
К сожалению, анализ литературы [Bray, White, 1957; Romanovskiy et al., 1975; Murray, 2002; Glagolev, 2010] показывает, что линейные модели в биокинетике практически не встречаются. Однако сферу применения линейного МНК можно существенно расширить, поскольку многие часто используемые нелинейные формулы путем некоторых трансформаций преобразуются к линейному выражению [Panikov et al., 1993: p. 39-40; Engeln-Mullges, Uhlig, 1996: p. 215-217; Ryan, 1997: p. 71-79; Davis, 2024: p. 318-321, 325-326, 332-333, 337-339]. Те модели, которые могут быть преобразованы к линейным, Н. Дрейпер и Г. Смит [Draper, Smith, 1981: p. 278] называют «внутренне линейными» моделями (intrinsically linear model8), в противоположность «внутренне нелинейным» (intrinsically nonlinear model).
В качестве примера рассмотрим внутренне линейную функцию, очень часто применяющуюся в биокинетике и экологии. Это простейшая математическая модель, выраженная линейным дифференциальным уравнением 1-го порядка [Bray, White, 1957: ch. 6; Murray, 2002: §1.1; Glagolev, 2004; Davis, 2024: p. 340]:
dC/dt = -k1·C. (3)
Данное уравнение легко интегрируется в квадратурах, и если выполняется начальное условие C(0) = C0, то решением будет функция C = C0·е-k1·t. Очевидно, что функция эта нелинейна (нелинейна и по t, и по k). Пусть мы имеем экспериментальные данные – значения C, измеренные в некоторые моменты времени tm (отсчитываемые от начального момента времени, т.е. времени начала эксперимента, которое будем считать нулевым): С(t1), С(t2), …, С(tm), …, С(tN). Существует очень простое преобразование, позволяющее записать экспоненциальную функцию в линейной форме. Это преобразование – логарифмирование. Действительно, после логарифмирования получаем:
ln(C) = ln(C0) - k1·t. (4)
Введем новый параметр а0 = ln(C0) и новую переменную у = ln(C). Тогда мы будем иметь линейную модель: у = а0 - k1·t. Поскольку значения С нам были известны, то и значения у известны, они получаются логарифмированием: у(t1) = ln(С(t1)), у(t2) = ln(С(t2)), …, у(tm) = ln(С(tm)), …, у(tN) = ln(С(tN)). Для линейной модели очень просто определить параметры а0 и k1 линейным методом наименьших квадратов [Ryan, 1997, p. 72]. Но здесь возникает новая проблема. Дело в том, что найденные этим методом параметры обращают в минимум сумму квадратов отклонений значений преобразованных величин у(t1), у(t2), …, у(tN) от расчетных значений, а не сумму квадратов отклонений измеренных величин С(t1), С(t2), …, С(tN) от соответствующих расчетных [Rumshiskiy, 1971: p. 84].
Весовые коэффициенты
К счастью, возникшая проблема имеет относительно простое решение. Чтобы вычислить C0 и k1 при помощи линейного метода наименьших квадратов (примененного к внутренне линейным моделям), нужно использовать специальные веса, учитывающие, какое конкретное преобразование было применено к нелинейной формуле. Однако, кроме того, исходные данные могли быть неравноточными, следовательно, результирующие («комбинированные») веса должны учитывать не только вид преобразования, но и веса, обусловленные погрешностями исходных экспериментальных данных (обозначим их через wm).
Если распределение ошибок ординат подчиняется нормальному (гауссову) закону, то можно использовать wm = 1/σm2, где σm – среднеквадратичное отклонение для С(tm). Этот метод называется инструментальным взвешиванием. Если σm неизвестны, то может оказаться полезным применение так называемого «статистического взвешивания»: wm = 1/С(tm) [Johnson, 1980: ch. 5]. Наконец, Engeln-Mullges and Uhlig [1996: p. 190] допускают использование wi = 1/Сi2. Когда истинные значения σi нам не известны, то такой способ вычисления весов имеет право на существование, поскольку в практике измерений часто оказывается, что σi ~ Сi.
Пусть исходная (нелинейная) формула имела вид С = f(k0, k1, …, t), где kj – искомые параметры, C и t – соответственно зависимая и независимая переменные. И пусть G – некоторое преобразование (функция), которое, будучи применено к рассматриваемой нелинейной формуле, превращает ее в линейное выражение: G(y) = G(f(k0, k1, …, t)) = Σ[aj·Fj(t)], где Fj(t) – некоторые функции, не содержащие искомых параметров; aj – некоторые новые параметры (выражающиеся – возможно, нелинейно – через k0, k1, …). Тогда формула «комбинированных» весов (Wm) такова: Wm = wm·(dG/dC)-2|m [Engeln-Mullges, Uhlig, 1996, p. 216]. Например, для рассмотренной выше линеаризации логарифмированием будем иметь:
Wm = wm·{d[ln(C)]/dC}-2|m = wm·(1/C)-2|m = wm·Cm2.
Метод приближенного линеаризующего преобразования
Обычно в литературе метод определения параметров с помощью линеаризации данных излагается именно в приложении к уравнениям реакции 1-го порядка (3), (4) или к другим простым формулам, которые с помощью некоторого преобразования можно привести в точности к линейному выражению (см., например, [Draper, Smith, 1981: § 5.2; Engeln-Mullges, Uhlig, 1996: p. 215-216; Korobov, Ochkov, 2009: p. 134-137; Davis, 2024: p. 318-321, 325, 332-333, 337-339]). Но чтобы читатель понимал большую универсальность данного метода, мы немного отойдем от указанной традиции и рассмотрим чуть более сложный пример, следуя Васильевой и др. [Vasil’eva et al., 1995]. Эти авторы рассмотрели потребление субстрата (4-хлоранилина) растущей биомассой микроорганизмов. Вообще говоря, в данном случае мы будем иметь систему как минимум из двух уравнений: одно – для описания динамики роста биомассы, а другое – для потребления субстрата:
dC1/dt = μ(C2)·C1, dС2/dt = -μ(C2)·C1/k1, (5)
где C1 и C2 – соответственно концентрации микроорганизмов и питательного субстрата (в данном случае – хлоранилина); μ – удельная скорость роста (зависящая от C2, а в некоторых моделях микробиологической кинетики – еще и от C1); k1 – экономический коэффициент. В зависимости от конкретного вида функции μ эти уравнения могут или не могут быть проинтегрированы в квадратурах. Для простоты Васильева и др. [Vasil’eva et al., 1995] рассматривают простейший случай постоянства удельной скорости роста: μ(C2) = k2 = const. Конечно, в реальности эта скорость не может быть всегда постоянной и, по крайней мере, должна обратиться в 0 при C2 = 0, ибо очевидно, что микроорганизмы не могут расти, если у них совсем не будет еды. Но из микробиологической кинетики хорошо известно (см., например, [Pirt, 1975: § 2.6-2.7; Atkinson, Mavituna, 1983: p. 207; Romanovskiy et al., 1975: p. 124; Panikov et al., 1992]), что в довольно широком диапазоне значений C2, действительно, μ остается практически постоянной – почти на уровне максимальной удельной скорости роста. Итак, если принять данное упрощение, то первое уравнение системы уже никак не связано со вторым и легко интегрируется при начальном условии C1(0) = C01:
C1 = C01·ехр(k2·t).
Полученное выражение мы можем подставить во второе уравнение, что даст
dC2/dt = -k2·[C01·ехр(k2·t)]/k1.
Проинтегрируем это уравнение при начальном условии С(0) = С02:
С2 = С02 - (С01/k1)·[ехр(k2·t) - 1]. (6)
Для относительно больших значений t, когда ехр(k2·t) >> 1, будет выполняться следующее приближенное соотношение:
С02 - С2 ≈ (С01/k1)·ехр(k2·t).
Оно легко линеаризуется в полулогарифмических координатах:
ln(С02 - С2) ≈ ln(С01/k1) + k2·t. (7)
Т.е. если мы обозначим y = ln(С02 - С2) и а1 = ln(С01/k1), то в координатах (t, y) получим прямую линию, задаваемую уравнением
y ≈ a1 + k2·t. (8)
Но, обрабатывая реальные экспериментальные данные, следует помнить о тех приближениях, которые мы сделали, чтобы получить (7). Во-первых, мы приняли μ = const, а это условие не может выполняться при малых С2, поскольку микробам не будет хватать еды, чтобы поддерживать такую же большую удельную скорость роста, которая была в условиях изобилия пищи. Во-вторых, (7) получается из (6) только когда ехр(k2·t) >> 1. В принципе, зная из микробиологии типичные значения максимальной удельной скорости роста (k2) для микроорганизмов, можно приближенно оценить: при каких значениях t формулу (7) применять еще нельзя, а при каких – уже можно. Но тут можно сильно ошибиться (поскольку в зависимости от вида микробов и конкретного субстрата их максимальные удельные скорости роста могут различаться на порядки – ср., например, [Pirt, 1975: § 13.2; Lee, 1981: p. 159; Atkinson, Mavituna, 1983: p. 207; Dorofeev et al., 1992]). А кроме того, в этом нет смысла, поскольку область допустимого применения соотношения (7) будет видна из самого графика: экспериментальные данные, полученные при малых t, не лягут на прямую (из-за невыполнения второго допущения), равно как не лягут на нее и точки, полученные при больших t (здесь отклонение от прямой произойдет по вине первого допущения).
Рассмотрим вышеизложенное на численном примере, материал для которого возьмем все из той же статьи [Vasil’eva et al., 1995]. В Табл. 1 приведены экспериментальные данные9, которые мы будем использовать. Эти же данные (за исключением точки для t = 0) показаны на Рис. 1a в полулогарифмических координатах. Из рисунка видно, что полный набор данных действительно аппроксимируется прямой довольно плохо. Причем как раз (как мы теоретически предположили выше) именно из-за того, что от прямой резко отклоняются несколько самых правых и левых точек. А вот если отбросить по три крайние точки справа и слева, оставив только девять «центральных» точек, то прямая пройдет через них вполне удовлетворительно10. Итак, для дальнейшей работы оставляем только эти точки.
Таблица 1. Динамика потребления 4-хлоранилина культурой Paracoccus denitrificans.
Table 1. Dynamics of 4-chloroaniline consumption by a microbial culture Paracoccus denitrificans.
Время (t, часы) | Концентрация (С2, мг/л) |
| Время (t, часы) | Концентрация (С2, мг/л) |
0 | 20.0 | 69.0 | 14.9 | |
16.6 | 19.3 | 75.4 | 11.2 | |
34.0 | 19.1 | 80.0 | 7.6 | |
39.5 | 18.8 | 82.8 | 5.6 | |
46.9 | 19.0 | 85.5 | 3.3 | |
51.5 | 18.5 | 89.2 | 1.7 | |
59.8 | 18.3 | 92.9 | 1.1 | |
65.3 | 16.5 | 98.4 | 0.1 |
Примечание: Полный набор экспериментальных данных представлен совокупностью точек обоих типов («●» и «о»); ________ - прямая, построенная МНК только по «о»; __ __ __ - прямая, построенная МНК по всем точкам. Note: The complete set of experimental data is repre-sented by points of both types («●» and «о»); the straight lines were constructed using least-squares fitting ________ - based on «о» points only; __ __ __ - based on all points. | Примечание: ● – экспериментальные данные; Кривые построены ▬▬▬ - по формуле (6) (по точкам «←»); _ _ _ _ _ - по формуле (6) (по точкам «↑»); _________ - по формуле (11). Note: ● – experimental data; The curves were constructed ▬▬▬ - by using formula (6) (from points «←»); _ _ _ _ _ - by using formula (6) (from points «↑»); _________ - by using formula (11). |
Рис. 1. Моделирование динамики потребления 4-хлоранилина по данным [Vasil’eva et al., 1995].
Fig. 1. Modeling of the 4-chloroaniline consumption dynamics with data from [Vasil’eva et al., 1995].
Параметры формулы (8) в MATLAB можно найти при помощи функции polyfit. Подробно она описана в интерактивной справочной системе MATLAB и в литературе (см., например, [Chen et al., 1999: §4.4]), а сейчас мы лишь продемонстрируем использование этой функции для решения нашей конкретной задачи. Введем абсциссы и ординаты экспериментальных точек, а потом вызовем polyfit (задав в ней третий аргумент равным 1, что соответствует поиску коэффициентов полинома 1-го порядка, т.е. линейной функции):
>> t=[46.9 51.5 59.8 65.3 69 75.4 80.0 82.8 85.5];
>> y=[-.02 .38 .53 1.26 1.63 2.17 2.52 2.67 2.82];
>> P=polyfit(t,y,1),
мы сразу получим результат:
P = 0.0770 -3.7218
Он означает, что в (8) a1 = -3.7218, k2 = 0.0770. Поскольку на основании (7) a1 = ln(С01/k1), то С01/k1 = ехр(a1) = ехр(-3.7218) ≈ 0.0242, и, если нам известно С01, мы можем найти k1.
В заключение этого примера оценим, выполняется ли в данном случае допущение о том, что прямая строится на таком интервале времени, где единицей в (6) уже можно пренебречь (и потому, собственно говоря, получается именно прямая). Как мы помним, это допущение состоит в том, что ехр(k2·t) >> 1. Крайняя левая точка, которую мы используем для построения прямой, соответствует значению t = 46.9 час. (см. Табл. 1 и Рис. 1a). Для нее имеем: ехр(0.077·46.9) ≈ 37. Понятно, что для следующих точек, расположенных правее, условие тем более будет выполняться.
Способ подстановки
Простейший случай
Когда математическая модель представляет собой явную аналитическую зависимость С(t) = φ(k,t), метод подстановки идейно весьма прост. Пусть, как и раньше, мы имеем N пар экспериментальных данных: {t1, С(t1)}; {t2, С(t2)}; …; {tm, С(tm)}; …; {tN, С(tN)}. Тогда для определения параметров k = {k0, k1, …, kj} каждая из пар данных подставляется в уравнение модели, в результате чего мы будем иметь систему уравнений:
С(t1) = φ(k0, k1, …, kj, t1), С(t2) = φ(k0, k1, …, kj, t2), …, (9)
где ti и С(ti) – известные (из эксперимента) числа, а k0, k1, …, kj – неизвестные величины, которые и следует найти, решая данную систему уравнений. Если нам нужно определить j неизвестных констант, то необходимо иметь не менее j пар экспериментальных данных (т.е. не менее j уравнений). Но обычно данных гораздо больше, поэтому оказывается возможным определить несколько наборов констант, которые затем усредняются. Справедливости ради заметим, что в таком простейшем виде этот способ потерял свою актуальность с появлением математических пакетов [Korobov, Ochkov, 2009: p. 134], способных осуществлять нелинейную регрессию. Тем не менее для полноты картины мы приведем пример применения этого метода, опять воспользовавшись данными Табл. 1 и уравнением (6). Однако это уравнение запишем в виде С2 = С02 - k3·[ехр(k2·t) - 1], где k3 = С01/k1, поскольку, не зная значение С01, мы можем определить только численное значение отношения С01/k1, но не сам коэффициент k1. Итак, наше уравнение содержит два неизвестных параметра (k3 и k2), следовательно, нужно создать систему из двух уравнений, т.е. взять две пары экспериментальных данных. Но какие конкретно пары взять?
Из сказанного выше вроде бы следует, что взять можно какие угодно пары; главное перебрать все возможные пары – найти различные k3 и различные k2 для всех возможных пар {tm, С2(tm)}, {tn, С2(tn)} (m ≠ n) и усреднить все полученные значения k3 и k2. Однако эта рекомендация в некоторых случаях может оказаться плохой. Например, если экспериментальных точек не очень много и среди них есть хотя бы пара значений, измеренных с достаточно большими погрешностями, то k3 и k2, найденные по этим значениям, могут оказаться настолько «плохими», что при усреднении сильно «испортят» всю картину. На практике иногда оказывается более полезным выбрать лишь j (т.е. в нашем примере – две) наиболее характерные точки и записать систему уравнений только для них. На Рис. 1 показаны полученные в эксперименте значения из работы [Vasil’eva et al., 1995]. Напомним, что уравнение (6) выведено из (5) в предположении того, что значения С2 достаточно велики – только тогда можно считать, что μ(С2) = сonst = k2. Если проанализировать функцию (6) стандартными средствами математического анализа, то можно легко установить, что это выпуклая функция (т.е. d2С2/dt2 < 0). Но из Рис. 1b ясно видно, что примерно при t = 86 находится точка перегиба, правее которой выпуклость сменяется вогнутостью. Следовательно, три крайние справа точки (при t = 89.2, 92.9, 98.4) нельзя использовать в системе уравнений для определения k3 и k2, поскольку для этих точек уравнение (6) вообще не выполняется. Далее заметим, что кривая (6) в любом случае пройдет через крайнюю левую точку (при t = 0): С2 = С02 - k3·[ехр(k2·0) - 1] = С02 - k3·(1 - 1) = С02. В принципе любые другие точки (т.е. кроме крайней первой и трех последних) можно выбирать для формирования нашей системы уравнений. Но представим, что мы выбрали 3-ю и 4-ю точки (т.е. {34, 19.1} и {39.5, 18.8}, на Рис. 1b они указаны вертикальными стрелками). Если записать систему уравнений для этой пары, то решения (а это будут k3 = 0.304735 и k2 = 0.040429) обеспечат прохождение кривой С2(t) точно через точки {34, 19.1}, {39.5, 18.8} и… и далее кривая пойдет как Бог на душу положит (см. Рис. 1b). Интуитивно понятно, что если мы хотим обеспечить аппроксимацию экспериментальных данных в целом, то нужно, чтобы аппроксимирующая кривая прошла через крайние точки и точку посередине (имеется в виду середина оси ординат!). Но через крайнюю левую точку кривая, как только что было показано чуть выше, проходит «автоматически», значит, нужно выбрать еще четвертую точку справа (т.е. {85.5, 3.3} – именно она является «крайней», в которой уравнение (6) еще выполняется) и, например, точку {75.4, 11.2}. Тогда система уравнений метода подстановки для определения k3 и k2 будет такой:
3.3 = 20 - k3·[ехр(k2·85.5) - 1], 11.2 = 20 - k3·[ехр(k2·75.4) - 1].
Эту систему можно численно решить при помощи различных программных средств11. Ее решение таково: k3 = 0.076631, k2 = 0.063026. Как видно из Рис. 1b, при таких значениях параметров расчётная кривая вполне удовлетворительно описывает экспериментальные данные в той области, где справедливо уравнение (6).
Обобщение на неявные функции
В предыдущем разделе мы предполагали, что уравнение математической модели может быть записано в виде С(t) = φ(k,t). Но поскольку исходно кинетическая модель обычно представляет собой дифференциальное уравнение (или систему таких уравнений), как, например, (3) или (5), то нельзя ожидать, что решение этих уравнений всегда будет иметь столь простой вид. Какие еще могут быть формы решений (если, конечно, решение в принципе может быть записано в аналитическом виде)? С логической точки зрения есть еще две возможности. Во-первых, решение дифференциального уравнения даст функцию t от С, из которой в явном виде выразить С (как некоторую функцию t) невозможно. И, во-вторых, возможен более общий случай – решением дифференциального уравнения будет некоторое выражение, связывающее С и t, но при этом из него невозможно ни С выразить через t в явном виде, ни, наоборот, t через С: F(С,t,k) = 0. Однако поскольку систему уравнений метода подстановки мы все равно решаем численно, а не аналитически, то такое усложнение связи С с t не играет вообще никакой роли – система метода подстановки (9) будет иметь вид
F(С(t1), t1, k0, k1, …, kj) = 0, F(С(t2), t2, k0, k1, …, kj) = 0, …, (10)
и решаться теми же самыми численными методами, что и (9), т.к. решить-то ее нам нужно относительно k0, …, kj, а не относительно С или t. Чтобы сказанное было яснее, приведем конкретный пример, опять обратившись к системе (5).
Для описания зависимости μ(C2) в микробиологической кинетике очень часто используется уравнение Моно (см., например, [Pirt, 1975: § 2.6; Atkinson, Mavituna, 1983: p. 204-210; Romanovskiy et al., 1975: p. 123; Lokshina et al., 2019]): μ(C2) = k2·C2/(k4 + C2), где k4 – «константа полунасыщения». Система (5) с μ(C2), заданной по уравнению Моно, имеет следующее аналитическое решение:
. (11)
Данное выражение задает однозначную связь C2 с t (заданному значению t соответствует некоторое значение C2), т.е. C2 можно рассматривать как функцию от t.
Но это – неявная функция, поскольку мы не можем выразить из (11) C2 в виде С2(t) = φ(k2, k3, k4, t) [Grossman, Turner, 1974: App. B2]. Однако, повторим, такой сложный вид связи C2 с t никак не влияет на возможность применения метода подстановки. Запишем уравнения этого метода в данном случае. Прежде всего отметим, что поскольку теперь математическая модель содержит 3 искомых параметра (k2, k3 и k4), то мы должны записать 3 уравнения, для чего, следовательно, нам понадобятся 3 экспериментальные точки. Обратите внимание: интегрируя систему (5) с μ(C2), заданной по уравнению Моно, мы не использовали никаких дополнительных ограничительных предположений, следовательно, теперь мы можем использовать любые экспериментальные точки, в том числе и три крайние справа, которые мы были вынуждены отбрасывать ранее. Более того, интуитивно понятно, что для определения k4 как раз нужно использовать какую-либо из этих правых точек12. Итак, выберем следующие 3 точки: {51.5, 18.5}, {85.5, 3.3} и {98.4, 0.1}. Тогда система уравнений метода подстановки для определения k2, k3 и k4 будет такой:
Ее решение: k4 ≈ 6.975717, k3 ≈ 0.020932, k2 ≈ 0.112743. Как видно из Рис. 1b, при таких значениях параметров расчётная кривая вполне удовлетворительно описывает все экспериментальные данные, включая и крайние правые точки.
Способ подстановки в случае дифференциальных уравнений
Если дифференциальные уравнения кинетической модели не могут быть проинтегрированы аналитически, то мы не имеем явной зависимости С(t) = φ(k,t) или хотя бы неявного задания функции С(t) в виде F(С(t), t, k0, k1, …, kj) = 0. В этом случае систематически осуществить способ подстановки мы не можем. Но если модель такова, что кривые имеют экстремумы, то в точках экстремумов производные равны нулю13, следовательно, в этих точках можно в уравнения (уже не содержащие производных!) подставить экспериментальные данные. Конечно, таких ситуаций почти всегда будет меньше, чем коэффициентов, которые необходимо определить, поэтому обычно все коэффициенты этим способом определить мы не сможем. Однако даже определение одного коэффициента или хотя бы связи между некоторыми коэффициентами может существенно облегчить решение общей обратной задачи (например, если всего надо определить 2 коэффициента и 1 мы вычислили по способу подстановки в точке экстремума, то остается определить еще лишь 1 коэффициент, что легко сделать хотя бы простейшим подбором). Рассмотрим пример не слишком простой модели.
Ю.М. Романовский с соавт. [Romanovskiy et al., 1975: р. 161-162] привели систему уравнений роста биомассы в проточном культиваторе с учетом инерционности процесса синтеза рибосом:
dС1/dt = k2·С2·С1·С3/[(k0+С2)·k3] - В·С1, (12)
dС2/dt = - k2·С2·С1·С3/[(k0+С2)·k3·k5] - В·(S0 - С2), (13)
dС3/dt = [k3·(k0+С2)/(k1+С2) - С3]/k4, (14)
где В – скорость разбавления; k0, k1, k2, k3, k4 и k5 – различные кинетические параметры14 модели (в частности, k5 – экономический коэффициент, показывающий, какая часть поглощенного субстрата идет на построение биомассы; k2 – максимальная удельная скорость роста); С1 и С2 – концентрации биомассы микробов и питательного субстрата соответственно; С3 – количество рибосом, отнесенное к единице биомассы (концентрация рибосомальной РНК в клетке); S0 – концентрация субстрата, поступающего в культиватор; t – время (независимая переменная). Параметры B и S0 мы задаем (а если их менять невозможно, то в любом случае для данного конкретного ферментера они известны). Понятно, что определить нам нужно коэффициенты k0, k1, k2, k3, k4 и k5 по измеряемой в эксперименте динамике зависимых переменных С1, С2 и С3.
Экспериментальные данные возьмем из [Ugodchikov, 1975: р. 194] – мы приводим их в Табл. 2. Важно отметить, что эти экспериментальные данные получены для частного случая периодической культуры. Следовательно, для их описания в уравнениях (12) и (13) нужно положить В = 0. Но нам это только на руку, ведь тогда уравнения становятся еще проще!
Таблица 2. Динамика роста культуры Escherichia coli (шт. М-17) на глюкозо-солевой среде [Ugodchikov, 1975: р. 194].
Table 2. Growth dynamics of an Escherichia coli (strain M-17) culture on a glucose-mineral medium [Ugodchikov, 1975: p. 194].
Время (t, час) | Концентрация | ||
биомассы (С1, мг/л) | субстрата (С2, мг/л) | РНК (С3, гРНК/гБиомассы) | |
0.0 | 53 | 130 | 0.040 |
0.5 | 59 | 130 | 0.041 |
1.0 | 65 | 130 | 0.057 |
1.5 | 80 | 130 | 0.068 |
2.0 | 106 | 126 | 0.089 |
2.5 | 150 | 120 | 0.107 |
3.0 | 213 | 109 | 0.127 |
3.5 | 314 | 90 | 0.140 |
4.0 | 479 | 63 | 0.140 |
4.5 | 711 | 36 | 0.134 |
5.0 | 899 | 0 | 0.122 |
6.0 | 947 | 0 | 0.116 |
Легко заметить, что уравнение (14) описывает кривую с экстремумом:
dС3/dt = 0 при [k3·(k0+С2)/(k1+С2) - С3]/k4 = 0 => k3·(k0+С2е)/(k1+С2е) = С3е, (15)
где верхним индексом «е» мы обозначили значения переменных в точке экстремума. Из табл. 2 видим, что экстремальная (максимальная) концентрация рибосомальной РНК достигается, вероятно, где-то в интервале от 3.5 до 4 час. Кажется естественным в качестве С3е и С2е взять средние арифметические значения:
С3е = [С3(3.5) + С3(4)]/2 = (0.14 + 0.14)/2 = 0.14, С2е = [С2(3.5) + С2(4)]/2 = (90 + 63)/2 = 76.5 мг/л.
Подставляя эти численные значения в (15), имеем соотношение
k3·(k0+76.5)/(k1+76.5) = 0.14, (16)
задающее связь между k3, k0 и k1. Как видим, определить какой-либо коэффициент нам пока не удалось, но если в дальнейшем мы сможем вычислить, например, k0 и k1, то из (16) без труда определим k3.
Исключение времени как независимой переменной
Прием исключения времени как независимой переменной можно эффективно применять при решении некоторых обратных задач [Korobov, Ochkov, 2009: p. 141]. Но сразу подчеркнем, что прием этот – весьма частный. Впрочем, именно в кинетических задачах его оказывается возможным применить не так уж редко, поскольку в них обычно выполняются законы сохранения для тех или иных компонентов, а такие законы, как правило, и представляют собой форму уравнений с исключенным временем. С другой стороны, следует отметить, что метод применим не только в обратных задачах кинетики. Более широко можно говорить про метод исключения независимой переменной вообще (а не только времени). Тем не менее мы рассмотрим его именно в приложении к кинетической задаче и исключать будем именно время, которое в таких задачах как раз и является независимой переменной.
Суть описываемого метода состоит в следующем. Чаще всего кинетическую систему стараются записать в виде автономных дифференциальных уравнений, т.е. таких, в правую часть (ПраЧ) которых независимая переменная (время) не входит. В этом случае, разделив одно уравнение системы на другое, можно получить уравнение, в которое время не будет входить вообще15. Полученное уравнение может оказаться существенно проще для интегрирования, чем исходные, поэтому есть смысл определять значения параметров для него. Правда, обычно таким образом можно определить далеко не все параметры исходной системы, поскольку лишь отношения некоторых уравнений порождают уравнение, существенно более простое, чем исходные. Но в любом случае идентификация хоть какого-то количества параметров упрощает дальнейшую идентификацию остальных. Покажем на конкретном примере, как действует описанный метод. В качестве примера опять обратимся к системе (12)-(14).
Очевидно, что если разделить уравнение (12) на (13), то получим гораздо более простое уравнение16 с разделяющимися переменными (С1 и С2), которое очень легко интегрируется в квадратурах:
dС1/dС2 = -k5 => С1 - С01 = k5·(С02 - С2), (17)
здесь интегрирование было проведено в границах от начальных концентраций (С01 и С02 в момент времени t = 0) до текущих (С1 и С2 в произвольный момент времени t > 0). Из полученного соотношения видно, что если построить зависимость у = (C1‑C01) от х = (C02-C2), то экспериментальные данные должны лечь на прямую, наклон которой составит k5 (если, конечно, эти данные действительно удовлетворяют нашей математической модели). На рисунке 2 выполнено такое построение. Из рисунка видно, что данные измерений действительно прекрасно (r2 ≈ 0.996) ложатся на прямую. При помощи линейной регрессии можно легко определить, что k5 ≈ 6.73.
Рис. 2. Определение экономического коэффициента в координатах (C02-C2), (C1‑C01).
Fig. 2. Determination of the yield constant in the coordinates (C02-C2), (C1‑C01).
Итак, при помощи метода исключения независимой переменной нам удалось из первых двух уравнений математической модели (12)-(14) получить весьма простое дифференциальное уравнение, интегральной кривой которого является прямая. И по наклону этой прямой мы идентифицировали численное значение одного из параметров модели – экономического коэффициента. К сожалению, исключение времени путем деления уравнений (12) или (13) на уравнение (14) приводит к довольно сложным выражениям. Так что каких-либо простых путей для определения данным методом значений других параметров модели не просматривается (напомним, что нам надо еще идентифицировать k0, k1, k2, k3 и k4). Поэтому перейдем к рассмотрению других методов.
Упрощение модели в предельных случаях
Строго говоря, этот метод тоже весьма частный. Но опыт показывает, что почти всегда можно найти ситуацию, когда сложная модель может быть хорошо аппроксимирована простой моделью, допускающей аналитическое интегрирование в такой форме, к которой можно подобрать несложное линеаризующее преобразование. Мы нечто подобное уже делали выше в разделе «Метод приближенного линеаризующего преобразования». Ведь уравнение (6) мы не смогли линеаризовать и рассматривали предельный случай больших t, поскольку при этом становится возможной очень простая линеаризация в полулогарифмических координатах. Но в указанном разделе мы аналитически проинтегрировали дифференциальное уравнение, получили в качестве его решения нелинейную зависимость (6) и в дальнейшем работали с приближением к этому аналитическому решению. Иначе говоря, приближение в нашем анализе возникало после аналитического интегрирования. А теперь на примере модели (12)-(14) обсудим возможность приближенного интегрирования более сложных уравнений, т.е. воспользуемся приближением до интегрирования.
Обычно относительно сложные системы уравнений оказывается возможным аналитически проинтегрировать в предельных случаях очень малых или очень больших значений переменных. Пусть С2 – велико. Самые большие значения концентрации субстрата, очевидно, соответствуют начальному периоду роста биомассы, когда микробы только-только начали потреблять субстрат. Если выполняется условие
k0 < < С2 >> k1,
то k0 + С2 ≈ С2 и k1 + С2 ≈ С2, следовательно, уравнение (12) приближенно можно заменить более простым уравнением:
dС1/dt ≈ k2·С1·С3/k3.
Кажется, что проинтегрировать это уравнение нельзя, поскольку оно содержит две независимых переменных – С1 и С3. Но ведь и уравнение (14) при больших С2 упрощается:
dС3/dt ≈ (k3 - С3)/k4.
Это уравнение легко интегрируется в квадратурах: С3 ≈ k3 - (k3-С03)·exp(-t/k4). Следовательно, на начальном участке динамической кривой биомасса должна описываться вот таким простым дифференциальным уравнением:
dС1/dt ≈ k2·С1·[1 - (1-С03/k3)·exp(-t/k4)],
легко интегрируемым в квадратурах.
К сожалению, описываемый метод обладает некоторыми недостатками, в связи с чем его применение крайне ограничено. Во-первых, не всегда понятно, где проходит тот рубеж, после которого упрощенной моделью пользоваться уже нельзя. А во-вторых, в область упрощенной модели часто попадает слишком мало экспериментальных данных, поэтому надежная идентификация параметра невозможна. И если первый недостаток можно легко преодолеть (это мы уже обсуждали выше в разделе «Метод приближенного линеаризующего преобразования»; в частности, см. Рис. 1a), то со вторым недостатком какими-то математическими средствами содержательно бороться нельзя и для надежной идентификации следует лишь наращивать объем экспериментальной информации.
Представление модели в виде ряда Тейлора
Весьма часто бывает, что на каком-то отрезке изменения независимой переменной (времени) кинетическая система демонстрирует довольно простое поведение – зависимые переменные изменяются почти линейно или экспоненциально. Это наводит на мысль, что в случае линейного изменения можно такие переменные представить в виде всего лишь двух первых членов ряда Тейлора. А в случае экспоненциальной динамики аналогично следует представить натуральный логарифм зависимой переменной. Продемонстрируем это на примере модели (12)-(14).
На Рис. 3 в графическом виде представлена часть экспериментальных данных из Табл. 2. Легко заметить, что доля РНК (Рис. 3б) в промежутке времени примерно с 1.5 до 3.5 час. возрастает практически линейно. Разложим функцию R(t) в ряд Тейлора в окрестности точки с абсциссой, являющейся центром этого интервала (т.е. 2 час.), и отбросим все члены ряда, кроме двух первых:
С3(t) ≈ С3(2) + (t-2)·dС3/dt|t=2.
Рис. 3. Динамика биомассы (а) и РНК (б) в культуре Е. coli.
Fig. 3. Dynamics of biomass (a) and RNA (b) in an E. coli culture.
Выражение для dС3/dt нам известно – это ур. (14), но чтобы получить его значение при t = 2, нужно подставить в (14) численные значения С2(2) и С3(2). Из Табл. 2 видим, что С2(2) = 126 мг/л и С3(2) = 0.089, поэтому
С3(t) ≈ 0.089 + (t-2)·[k3·(k0+126)/(k1+126) - 0.089]/k4.
С другой стороны, мы можем провести по 5 экспериментальным точкам (как на Рис. 3б – в интервале t от 1.5 час. до 3.5 час.) эмпирическую прямую. Будем искать прямую следующего вида: С3(t) ≈ 0.089 + (t-2)·а, где а – неизвестный коэффициент, который, собственно говоря, и требуется определить. Наилучшим образом (в смысле наименьших квадратов) экспериментальные данные аппроксимируются такой прямой:
С3(t) = 0.089 + 0.036·(t-2),
следовательно,
[k3·(k0+126)/(k1+126) - 0.089]/k4 = 0.036. (18)
Подчеркнем, что представление С3(t) в виде ряда Тейлора пока не дало нам возможности определить численное значение какого-то конкретного коэффициента, но позволило найти дополнительную связь между коэффициентами. Понятно, что каждая такая связь фактически сокращает количество неизвестных коэффициентов на один. Действительно, предположим, что в дальнейшем мы сможем найти каким-либо способом коэффициенты k0, k1 и k3. Тогда из (18) мы сможем вычислить k4.
Теперь найдем еще одну связь между коэффициентами, обратившись на сей раз к функции С1(t). Легко заметить, что биомасса бактерий (Рис. 3а) в промежутке времени примерно с 2 до 5 час. возрастает практически экспоненциально (обратите внимание: на этом рисунке масштаб по оси ординат – логарифмический, а ось абсцисс – обычная, следовательно, экспонента в этих осях будет представлена прямой линией). Разложим функцию ln(С1) в ряд Тейлора (по t) в окрестности точки с абсциссой, являющейся центром этого интервала (т.е. 3.5 час.), и отбросим все члены ряда кроме двух первых:
ln(С1(t)) ≈ ln(X(3.5)) + (t-3.5)·dln(С1)/dt|t=3.5.
Однако откуда же мы возьмем выражение для dln(С1)/dt? Прежде всего воспользуемся известным правилом: dln(С1)/dt = С1-1·dС1/dt. А выражение для dС1/dt нам известно – это уравнение (12), следовательно (не забываем, что В = 0!):
dln(С1)/dt = k2·С2·С3/[(k0+С2)·k3].
Но чтобы получить его значение при t = 3.5, нужно подставить численные значения С1(3.5), С2(3.5) и С3(3.5). Из таблицы 2 видим, что С1(3.5) = 314, С2(3.5) = 90 мг/л и С3(3.5) = 0.14, поэтому
ln(С1) ≈ 5.749 + (t-3.5)·k2·12.6/[(k0+90)·k3].
С другой стороны, мы можем провести по 7 экспериментальным точкам (как на Рис. 3а – в интервале t от 2 до 5 час.) эмпирическую экспоненту. Будем искать экспоненту следующего вида: ln(С1) ≈ 5.749 + (t-3.5)·а. Наилучшим образом (в смысле наименьших квадратов) экспериментальные данные аппроксимируются вот такой экспонентой:
ln(С1) ≈ 5.749 + (t-3.5)·0.7383,
следовательно,
k2·12.6/[(k0+90)·k3] = 0.7383 < => k2/[(k0+90)·k3] = 0.0586. (19)
Итак, мы нашли еще одну связь между коэффициентами.
На этом закончим рассмотрение метода представления модели в виде ряда Тейлора, но прежде чем идти дальше, отметим, что, как и в предыдущем методе («упрощение модели для предельных случаев»), ограничением является то, что на участке линейного или экспоненциального изменения функции может оказаться мало экспериментальных точек, а это не позволит статистически достоверно определить параметры. Теоретически такое ограничение для данного метода не столь уж серьезное, ибо его можно обойти, оставив в разложении Тейлора не два, а три члена (и тогда можно будет не ограничиваться лишь точками, лежащими на прямой, а «взять в оборот» больше экспериментальных данных). Но с практической точки зрения вычислительные трудности оказываются при этом весьма велики.
Линеаризация с численным интегрированием кинетических данных
У читателя могло сложиться мнение о том, что способ определения кинетических параметров, основанный на линеаризации данных, имеет ограниченное применение. Покажем, однако, что круг задач, решаемых этим способом, достаточно широк и может включать те из них, где математическая модель представляется в виде нелинейных систем дифференциальных уравнений [Korobov, Ochkov, 2009: p. 142]. Хотя, конечно, речь не идет о том, что этим методом можно определять параметры любых нелинейных систем дифференциальных уравнений. Вообще говоря, к сожалению, для работы этим методом нет каких-то универсальных алгоритмов (или, по крайней мере, авторам такие методы не известны). Как сейчас станет ясно читателю, возможность успешного использования метода в той или иной ситуации зависит от уровня знаний и смекалки исследователя, пытающегося применить его. Обратимся опять к нашему примеру (12)-(14).
Очевидно, что уравнение (13) – нелинейное. Мы сейчас произведем некоторые тождественные преобразования этого уравнения, поскольку для успешного применения излагаемого метода будет лучше, если все переменные имеют примерно один порядок. В этой связи представляется удобным, если все переменные будут находиться в интервале от 0 до 1, чего можно добиться, нормируя их на максимальные значения:
(1/tmах)·d(С2/Smах)/d(t/tmах) = -k2·(С2/Smах)·Хmах·(С1/Хmах)·Rmах·(С3/Rmах)/[(k0+Smах·{С2/Smах})·k3·k5],
где Smах = C02, поскольку очевидно, что в отсутствие подачи питательного субстрата (а мы помним, что B = 0) его концентрация в ферментере с течением времени может только падать из-за потребления микробами; Хmах = C01 + k5·C02, как это следует из (17) при C2 = 0, т.е. при полном исчерпании субстрата; tmах = 6 час. и Rmах = 0.14, как это видно из табл. 2 (хотя R можно было и не нормировать, поскольку, будучи долей РНК, R уже находится в нужных нам границах). Для удобства введем новые (нормированные) безразмерные переменные r = C3/Rmах, s = C2/Smах, τ = t/tmах, х = C1/Хmах и два параметра
K1 = tmах·k2·Хmах·Rmах/(k3·k5·Smах), K2 = k0/Smах (20)
(очевидно, что K1 и K2 также являются безразмерными). Заметим, что используемое здесь значение экономического коэффициента мы уже определили выше (в разделе «Исключение времени как независимой переменной»): k5 ≈ 6.73.
В новых переменных наше уравнение выглядит так:
ds/dτ = -K1·s·x·r/(K2 + s),
по сравнению с (13) качественно ничего, разумеется, не изменилось – уравнение осталось нелинейным (с тем же самым типом нелинейности, что и раньше). Но, домножив обе части последнего уравнения на (k2 + s), получим
(k2 + s)·ds/dτ = -k1·s·x·r.
Если бы s, x и r были известными функциями τ, то полученное выражение можно было бы проинтегрировать следующим образом:
;
здесь мы сразу учли, чему равен нижний предел интегрирования левого интеграла: s(0) = C2(0)/Smах = 1. Но несмотря на то, что нам не известен аналитический вид функций s(τ), x(τ) и r(τ), мы для заданного τ можем найти значение интеграла в правой части уравнения численно – ведь значения s, x и r для некоторых τ нам известны из эксперимента. Тогда, если взять множество значений τ, для каждого из них подсчитать интеграл и аппроксимировать полученные значения интеграла какой-то аналитической зависимостью, то фактически мы будем иметь некоторую функцию (обозначим ее z1) от τ. А интеграл в левой части уравнения легко берется аналитически. В результате вместо последнего уравнения мы будем иметь:
K2·(s-1) + 0.5·(s2-1) = -K1·z1(τ).
Акцентируем внимание на последнем уравнении, поскольку именно его мы будем использовать для определения неизвестных констант. Для этого нужно иметь информацию, относящуюся к текущим значениям s, x и r. Эти данные следует линеаризовать в несколько необычных координатах [Korobov, Ochkov, 2009: p. 144]. Нетрудно заметить, что если ввести переменные у = 0.5·(1-s2) и z2 = s-1, то у можно рассматривать как линейную функцию z1 и z2:
у = K1·z1 + K2·z2 (21)
и, следовательно, для определения параметров K1, K2 можно применить процедуру множественной линейной регрессии. Вычислить у и z2 весьма просто. Но как быть с интегралом
?
Численное интегрирование становится возможным после проведения предварительной интерполяции модифицированных данных [Korobov, Ochkov, 2009: p. 144]. Впрочем, в данном конкретном случае интегрирование без интерполяции почти не отличается от интегрирования после интерполяции, поэтому, чтобы не запутывать читателя, интерполяцию проводить мы не будем. Обратимся к конкретным вычислениям. Значения исходных нормированных переменных τ, s, x, r, а также зависимой переменной у и линеаризующих независимых переменных z1, z2 сведены в Табл. 3. Чтобы найти численные значения параметров K1 и K2, нужно осуществить линейную регрессию у по z1, z2. Это можно сделать, например, в Excel при помощи средства «Регрессия» из надстройки «Пакет анализа» («Анализ данных»)17. В качестве входных данных следует взять данные из столбцов «у», «z1» и «z2» Табл. 3 (при этом у – объясняемая переменная, а z1 и z2 – объясняющие) и провести регрессию с условием «Константа-ноль» – в этом режиме регрессия будет проведена именно для формулы (21), тогда как по умолчанию проводилась бы регрессия более общего вида: у = K1·z1 + K2·z2 + K3.
Таблица 3. Нормирование и линеаризация данных таблицы 2.
Table 3. Normalization and linearization of the data from Table 2.
τ | х | s | r | у = 0.5·(1-s2) | z2 = s - 1 | |
0 | 0.057 | 1 | 0.282 | 0 | 0 | 0 |
0.083 | 0.064 | 1 | 0.290 | 0 | 0.00144 | 0 |
0.167 | 0.070 | 1 | 0.406 | 0 | 0.00339 | 0 |
0.25 | 0.086 | 1 | 0.481 | 0 | 0.00631 | 0 |
0.333 | 0.114 | 0.969 | 0.632 | 0.030 | 0.01095 | -0.031 |
0.417 | 0.162 | 0.923 | 0.760 | 0.074 | 0.01859 | -0.077 |
0.5 | 0.230 | 0.838 | 0.904 | 0.148 | 0.03057 | -0.162 |
0.583 | 0.338 | 0.692 | 0.999 | 0.260 | 0.04756 | -0.308 |
0.667 | 0.516 | 0.485 | 1 | 0.383 | 0.06774 | -0.515 |
0.75 | 0.766 | 0.277 | 0.957 | 0.462 | 0.08663 | -0.723 |
0.833 | 0.969 | 0 | 0.872 | 0.500 | 0.09509 | -1 |
1 | 1.021 | 0 | 0.828 | 0.500 | 0.09509 | -1 |
Множественная линейная регрессия дает результат, который неопытному глазу может показаться чрезвычайно странным. На Рис. 4 мы привели копию экрана нашего компьютера с результатами линейной регрессии, выполненной в Ехсеl. Удивительно здесь то, что для коэффициента К2 («Переменная Х 2») получено отрицательное значение (-0.04). Но из (20) очевидно, что должно быть К2 > 0 (поскольку по биологическому смыслу k0 > 0 и Smах > 0). Однако если проанализировать значения в столбцах строки «Переменная Х 2», то все становится кристально ясным. Действительно, число -0.04 получено с огромной погрешностью, а интервал с 95%-й вероятностью, содержащий истинное значение K2, простирается от ‑0.17 до +0.10, т.е. положительные значения K2 вполне возможны. Это свидетельствует о плохой обусловленности задачи построения регрессии в виде (21) по экспериментальным данным Табл. 3: они оказываются в некотором смысле «проще», чем такая «сложная» зависимость, как (21). Точнее говоря, «информативность» конкретно этих экспериментальных данных недостаточно велика, чтобы можно было идентифицировать параметры «сложной» модели. Поэтому упростим математическое выражение с тем, чтобы его сложность стала соответствовать информативности данных.
Рис. 4. Результат множественной регрессии у по z1 и z2 (данные Табл. 3) по формуле (21).
Fig. 4. The result of multiple regression of y on z1 and z2 (data from Table 3) using formula (21).
Сделать это можно совершенно формально. Раз мы получили, что K2 значимо не отличается от нуля, то просто в (21) нужно подставить K2 = 0, в результате чего получим более простое уравнение регрессии: у = K1·z1. Если провести линейную регрессию для этого выражения (например, опять в среде Excel) – см. Рис. 5, то получим значение K1 = 5.30, причем интервал «95%-й вероятности» не слишком велик: от 5.08 до 5.52, т.е. неопределенность K1 составляет всего лишь ±4%. Используя (20), легко вычислить отношение
k2/k3 = К1·k5·Smах/(tmах·Хmах·Rmах) = 5.30·6.73·130/(6·928·0.14) ≈ 5.95 1/час. (22)
Рис. 5. Линейная регрессия «зависимой переменной» у = 0.5·(1-s2) по «независимой переменной»
Fig. 5. Linear regression of the "dependent variable" у = 0.5·(1-s2) against the "independent variable"
Кстати, теперь, зная это отношение, можно при помощи (19) оценить k0: k0 = k2/(k3·0.0586) ‑ 90 ≈ 5.95/0.0586 - 90 = 11.5 мг/л. Следовательно, К2 = k0/Smах = 11.5/130 ≈ 0.0885, что как раз оказывается в интервале, найденном нами выше, когда мы проводили множественную линейную регрессию для (21).
Одномерная нелинейная минимизация невязки
Оглянемся на то, что нам удалось сделать в области определения численных значений параметров модели (12)-(14). Всего нужно было идентифицировать 6 параметров: k0, k1, k2, k3, k4 и k5. Мы смогли довольно точно определить k5 = 6.73 и – с грехом пополам – k0 = 11.5 мг/л. Кроме того, нам удалось найти 3 соотношения, связывающие все параметры, а именно речь идет о формулах (16), (18) и (22). Если подставить в них найденное значение k0, то будем иметь систему из 3 уравнений относительно 4 переменных (k1, k2, k3 и k4). Перепишем ее в следующем виде:
k3 = 0.14·(k1+76.5)/88, k2 = 5.95·k3, k4 = [137.5·k3/(k1+126) - 0.089]/0.036. (23)
Понятно, что однозначно решить такую систему нельзя. Но если бы мы знали численное значение k1, то
- первое уравнение немедленно дало бы нам значение k3;
- подставив полученное k3 во второе уравнение, мы получили бы значение k2;
- а подстановка значений k1 и k3 в третье уравнение дала бы k4.
Казалось бы, к чему эти рассуждения, если k1 мы все равно не знаем. Однако не будем забывать о наличии у нас набора экспериментальных данных для C1, C2 и C3. Очевидно, что «правильное» значение k1 должно обеспечить прохождение динамических кривых C1(t), C2(t) и C3(t), рассчитанных по модели (12)-(14), вблизи экспериментальных данных. Иначе говоря, нас устроит вовсе не всякое значение k1, а лишь такое, при котором отклонение расчетных кривых от экспериментальных данных будет минимальным. Как уже говорилось выше (см. раздел «Подходы к решению»), количественно охарактеризовать степень отклонения теоретических кривых от экспериментальных данных можно при помощи функции (2). В формуле (2) рассчитанные значения обозначены функциями φi(k,t). В данном случае это будут решения системы дифференциальных уравнений (12)-(14). Например, φ1(k,t) = C1(t), φ2(k,t) = C2(t) и φ3(k,t) = C3(t), где k = k1. То, как можно решить систему ОДУ численными методами, описано в обширной литературе – см., например, [Gerald, Wheatley, 1994: p. 393-534; Engeln-Mullges, Uhlig, 1996: p. 423-506; Korobov, Ochkov, 2009: p. 84-131; Davis, 2024: p. 462-548] (и отдельно упомянем несколько пособий, рассматривающих численное решение дифференциальных уравнений именно средствами MATLAB: [Chen et al., 1999: §7.1-7.2; Shampine et al., 2003; Glagolev et al., 2018]). Поэтому здесь мы не будем подробно на этом останавливаться, а просто приведем текст программы, решающей систему (12)-(14) при заданном значении k1 – см. функцию Ugodchikov3 в Приложении 2 (там k1 обозначено как Ks).
Вызов этой функции с параметром, представляющим собой значение k1, приводит к выводу на экран графика, содержащего экспериментальные и расчётные данные, а также четырех числовых значений: k3, k2, k4 (в программе они обозначены соответственно Rm, mu, Т) и невязки (HEB). В данном случае невязка рассчитывается по формуле (2), где D(х) = |х|, а в качестве wi берутся средние значения соответствующих экспериментальных данных (таким образом, w1 – это среднее всех экспериментально измеренных концентраций биомассы, т.е. среднее значение по 2-му столбцу таблицы 2; w2 – среднее экспериментально измеренных концентраций субстрата, т.е. среднее по 3-му столбцу таблицы; w3 – среднее концентраций РНК, т.е. среднее по 4-му столбцу). Например, если мы выполним расчет для k1 = 18:
>> HEB=Ugodchikov3(18),
то на экране появится следующий результат:
Rm = 0.1503 mu = 0.8945 T = 1.5154 HEB = 3.2270
На Рис. 6 показаны графики, соответствующие двум вариантам расчетов. Из рисунка 6б видно, что при k1 = 5 мг/л расчетная кривая C3(t) качественно не соответствует экспериментальным данным. Действительно, в эксперименте мы получаем максимальное значение C3 при t = 3.5÷4, после чего наблюдается некоторое снижение доли рибосом (по времени соответствующее исчерпанию субстрата в среде). Расчет же дает монотонно возрастающую кривую, причем при исчерпании субстрата вместо снижения наблюдается резкий рост C3. Немудрено, что численное значение невязки в этом случае будет относительно велико. Картина на рисунке 6а (полученная в результате расчета с k1 = 19 мг/л) гораздо лучше соответствует экспериментальным данным: понятно, что и невязка в этом случае будет меньше. Проведя множество расчетов с самыми разными значениями k1, можно построить кривую зависимости невязки от k1 (см. Рис. 7).
Рис. 6. Результаты численного решения системы ОДУ (12)-(14) при k1 = 19 (a) и k1 = 5 (б).
Примечание:
Концентрация биомассы (мг/л): о – экспериментальные данные; ________ – расчет по модели.
Концентрация субстрата (мг/л): х – экспериментальные данные; . . . . . . . . . – расчет по модели.
Доля РНК (‰): * – экспериментальные данные; __ __ __ – расчет по модели.
Fig. 6. Results of the numerical solution of the ODE system (12)-(14) for k1=19 (a) and k1=5 (б).
Note:
Biomass concentration (mg/L): о – experimental data; ________ – model calculation.
Substrate concentration (mg/L): х – experimental data; . . . . . . . . . – model calculation.
RNA fraction (‰): * – experimental data; __ __ __ – model calculation.
Рис. 7. Подбор численного значения Ks (т.е. k1) путем минимизации невязки между решением системы (12)-(14) и экспериментальными данными.
Fig. 7. Estimation of the numerical value of Ks (i.е. k1) by minimizing the residual between the solution of the system (12)-(14) and the experimental data.
Как это часто бывает в реальных (а не чисто учебных) задачах, результат опять оказался несколько неожиданным. Существует довольно четкий минимум невязки (НЕВ ≈ 3.227) при k1 ≈ 18 мг/л. При меньших значениях k1 невязка быстро возрастает (причина этого была вскрыта только что выше – при малых k1 расчетная кривая C3(t) перестает не только количественно, но и качественно соответствовать экспериментальным данным). А вот при увеличении k1 невязка сначала немного увеличивается, достигая максимума примерно при 78÷81 мг/л, а потом очень медленно снижается. Важно отметить, что при k1 ≈ 722 мг/л невязка становится такой же, какой она была при k1 ≈ 18 мг/л, однако при дальнейшем увеличении k1 она продолжает падать, хотя все более и более медленно. Так что же – наилучшее значение k1 находится где-то в области очень больших значений (или, может быть, оно вообще бесконечно)?
Уровень невязки, обусловленный погрешностью экспериментальных данных
К сожалению, очень медленное изменение невязки (с изменением k1) наводит на мысль, что задача идентификации k1 описанным методом в этой области становится плохо обусловленной или даже вообще некорректной. Более строгое рассмотрение вопроса о степени обусловленности может опираться на следующие рассуждения. Каждая экспериментальная точка получена нами с какой-то погрешностью. Поэтому даже если бы наша математическая модель позволяла абсолютно правильно рассчитать значения концентраций биомассы и субстрата, а также доли РНК, которые были в реальности у культуры E. coli в рассматриваемом эксперименте, невязка между таким расчетом и экспериментально измеренными значениями была бы ненулевой, ибо измерения в любом случае отягощены погрешностями. Для относительно простых невязок и законов вероятностных распределений погрешностей можно аналитически получить оценку того, какой была бы невязка в рассматриваемом идеальном случае. А вообще для любых распределений ее можно получить средствами статистического моделирования (см., например, [Brandt, 1999: Ch. 4; Chen et al., 1999: Ch. 6; Glagolev, Filippov, 2011: §1.5.3;18 Davis, 2024: §8.3]). Покажем на простом примере, как это сделать.
Пусть погрешности измерения распределены по известному закону. Для определенности будем рассматривать нормальные распределения со средними meХ, meS, meR и стандартными отклонениями σХ, σS, σR (соответственно, для независимых переменных C1, C2 и C3). В Ugodchikov3 мы использовали следующую невязку:
,
где через С1, С2 и С3 обозначены экспериментальные данные (концентрации биомассы, субстрата и доли РНК), а через φ1, φ2 и φ3 – соответствующие расчетные величины, полученные численным интегрированием модели (12)-(14); m – номер строки в Табл. 2; w1, w2 и w3 – средние значения С1, С2 и С3 (т.е. средние значения по соответствующим столбцам Табл. 2). Для простоты сосредоточим наше внимание пока только на концентрации биомассы. В любой момент времени tm ее измеренное значение С1(tm) будет представлять собой сумму истинного значения этой концентрации, которую мы обозначим через χ(tm), и случайной погрешности ΔХ (удовлетворяющей нормальному распределению со средним meХ и стандартным отклонением σХ). Очевидно, что при абсолютно правильной работе модели
С1(tm) - φ1(tm) = χ(tm) + ΔХ - χ(tm) = ΔХ,
т.е. невязка все равно не будет нулевой из-за погрешностей измерений биомассы. Разумеется, аналогичные рассуждения относятся к любым измерениям, следовательно, С2(tm) - φ2(tm) = ΔS и С3(tm) - φ3(tm) = ΔR, где ΔS и ΔR – соответствующие случайные погрешности измерения С2 и С3. Поэтому, чтобы узнать, какой будет невязка в идеальном случае – при абсолютно правильной работе модели, надо просто в формуле для невязки заменить С1(tm) - φ1(tm) на случайные величины19 ΔХ; С2(tm) - φ2(tm) – заменить на ΔS, а С3(tm) - φ3(tm) – на ΔR. При помощи генератора случайных чисел для распределений с заданными параметрами (в данном случае для трех нормальных распределений: meХ, σХ; meS, σS; meR, σR) следует получить конкретные реализации ΔХ, ΔS и ΔR (в данном случае – 11 реализаций для ΔХ, 11 – для ΔS и 11 – ΔR). В Приложении 1 приведена написанная на языке MATLAB функция stat_mod.
Пусть оказалось, что измерения концентрации биомассы характеризовались средней погрешностью 24 мг/л, причем стандартное отклонение составляло 17 мг/л; при измерениях концентрации субстрата средняя погрешность и ее стандартное отклонение составляли соответственно 10 мг/л и 7 мг/л; а при измерениях доли РНК – соответственно 0.01 и 0.007. Если мы хотим методом статистического моделирования определить среднее значение невязки, обусловленное такими погрешностями экспериментальных данных, то вызвать функцию stat_mod можно следующим образом (используем 10 000 случайных реализаций невязки):
>> [HEBmin,HEBavg,HEBmax,HEB]=stat_mod([24 10 0.01],[17 7 0.007],10000,0.9);
здесь последнее число указывает, что рассчитывается такой доверительный интервал, в который среднее значение попадет с 90%-й вероятностью. Понятно, что статистическое моделирование при каждом запуске программы дает немного различающиеся результаты20. Мы получили следующий результат:
HEBmin = 3.2148 HEBavg = 3.2204 HEBmax = 3.2261
Таким образом, если измерения проведены с описанной выше точностью, то невязка, большая чем 3.22, может быть обусловлена погрешностью модели (а к меньшим невязкам вообще нет смысла стремиться, поскольку при этом мы, скорее всего, пытаемся точно описать не столько особенности исследуемой биологической системы, сколько шум).
Однако значение невязки, примерно соответствующее вышеуказанному «пороговому» значению, достигается на Рис. 6 в двух местах: в достаточно «остром» минимуме (k1 ≈ 18 мг/л) и существенно правее – при k1 ≈ 731 мг/л. Какое же значение KS выбрать? К сожалению, этот вопрос относится, скорее, к теории некорректных задач, которая в данной лекции не рассматривается.
СОПОСТАВЛЕНИЕ РЕЗУЛЬТАТОВ РАЗЛИЧНЫХ МЕТОДОВ
Итак, мы рассмотрели целый ряд методов идентификации параметров математических моделей, но не затрагивали вопрос о погрешности полученных оценок. Эта погрешность может быть оценена при помощи как обычных методов математической статистики, так и нетрадиционных методов, с интенсивным использованием ЭВМ, типа уже упоминавшихся выше методов бутстрэпа, Монте-Карло, складного ножа и др. (см., например, [Efron, 1979; Ryan, 1997: p. 116, 126, 272-275, 290-291, 315-316, 430; Brandt, 1999: §9.8, 9.13; Glagolev et al., 2017: р. 59]), которые из-за ограниченности объема статьи мы не будем здесь демонстрировать. К сожалению, вопросам погрешности получаемых параметров в работах по моделированию часто не уделяется должного внимания. Поэтому в заключение мы считаем нужным сказать об этом несколько слов.
Выше в разделах «Метод приближенного линеаризующего преобразования», «Простейший случай» и «Обобщение на неявные функции» тремя различными методами для одних и тех же экспериментальных данных искались такие параметры роста микробов на 4-хлоранилине, как максимальная удельная скорость роста (k2) и отношение начальной концентрации микроорганизмов к экономическому коэффициенту их роста на данном субстрате (k3). Соответственно, эти методы дали следующие значения: k2 ≈ 0.077, 0.063, 0.113; k3 = 0.024, 0.077, 0.021. Как видим, значения, полученные разными методами, довольно сильно отличаются друг от друга. Возможным объяснением могло бы быть то, что какого-то метода (или каких-то методов) получены неверные значения. Но поскольку мы старались каждый раз применять конкретный метод в той области значений, где он действительно применим, то это объяснение, по-видимому, должно быть отброшено. Остается предположить следующее: погрешность полученных значений достаточно велика – такова, что с учетом этой погрешности они не противоречат друг другу. Действительно, пусть, например, погрешность определения коэффициента k2 для каждого метода составляет ±29%, тогда k2 ≈ 0.077 ± 0.22, 0.063 ± 0.18, 0.113 ± 0.33, и если истинное значение k2 составляло около 0.081, то это удовлетворяет всем этим оценкам.
АВТОМАТИЗАЦИЯ РЕШЕНИЯ ЗАДАЧ МИНИМИЗАЦИИ В MATLAB
Стандартные решатели MATLAB для оптимизационных задач
Выбор стандартных решателей оптимизационных задач зависит от типа решаемой задачи, ее физического смысла, рельефа целевой функции (критерия оптимальности), оптимизирующих переменных и наличия ограничений. В MATLAB реализованы следующие стандартные решатели: fminbnd, polyfit, lsqcurvefit, fminsearch, fmincon, первый из которых может применяться исключительно при решении задач одномерной оптимизации; второй и третий – при решения задач многомерной параметрической идентификации для процессов, зависящих от одной влияющей на их состояние переменной21 (при этом в случае решателя polyfit аппроксимирующая функция представляет собой многочлен произвольной степени, которую надо задать для решения); а два последних – для решения задач как одномерной, так и многомерной оптимизации [Gartman, Klushin, 2020: p. 286-288]. К сожалению, в краткой статье у нас нет возможности описать подробно все вышеперечисленные MATLAB-решатели. Мы более или менее подробно рассмотрим применение лишь одного из них (fminbnd), обсудим вопрос о том, зачем в нашей задаче – идентификации параметров – нужна многомерная минимизация, а далее отошлем читателя к богатой литературе.
Каждый из перечисленных решателей может включать в себя один или несколько алгоритмов оптимизации, которые при корректном задании начального приближения значений оптимизирующих переменных позволяют итеративным путем найти искомые оптимальные величины оптимизирующих переменных [Gartman, Klushin, 2020: p. 287]. Большинство вычислительных функций, в т.ч. fminbnd и fminsearch, написаны на языке программирования MATLAB. Они имеют открытый код и расположены в подкаталоге \toolbox\matlab\funfun [Anufriyev et al., 2005: p. 261-262].
Выбор стандартного решателя MATLAB может быть реализован на компьютере путем задания следующих основных параметров:
- названия решателя;
- такого вида целевой функции, чтобы возможно было рассчитать ее значение при различных значениях оптимизирующих переменных, генерируемых решателем в процессе итерационных расчетов;
- начального приближения оптимизирующих переменных и/или интервала итерационного поиска.
В некоторых случаях (например, при решении задач нелинейного программирования22) необходимо дополнительно задать:
- систему линейных и нелинейных ограничений, накладываемых на параметры решаемой задачи;
- ограничения в виде системы нелинейных неравенств и равенств;
- ограничения в виде системы линейных неравенств и равенств.
Наконец, можно задать параметры стандартной функции optimset или optimoptions. В частности, с их помощью возможно задание точности вычислений, отличающейся от задаваемой по умолчанию. А для контроля за ходом вычислительного процесса можно затребовать вывод в командное окно MATLAB последовательных итераций со значениями оптимизирующих переменных и целевых функций [Gartman, Klushin, 2020: p. 287].
Решение задач одномерной оптимизации при помощи fminbnd
Основным решателем для задач одномерной оптимизации является fminbnd (хотя могут применяться fminsearch и fmincon, предназначенные для решения задач многомерной оптимизации) [Gartman, Klushin, 2020: p. 288]. Теперь для этого решателя нам нужно задать конкретную целевую функцию.
Ранее мы уже запрограммировали целевую функцию, рассчитывающую невязку при заданном значении k1 – это Ugodchikov3. В принципе для решателя fminbnd ее можно взять точно в таком виде, как она использовалась нами выше (т.е. точно в таком виде, как в разделе «Приложение 2…»). Однако в строке этой функции, помеченной комментарием из 7 восклицательных знаков, значения Rm, mu и T не только вычисляются, но и выводятся на дисплей. Поскольку на каждой итерации fminbnd будет предполагать в качестве минимального какое-то значение k1 и заставлять функцию Ugodchikov3 вычислять невязку при этом значении, то на экран ЭВМ будет выведено много в общем-то не слишком интересной для нас информации – значения Rm, mu и T, вычисленные для всех опробованных значений k1 (оптимальным из которых будет только одно!). Чтобы избежать этого, достаточно переписать указанную строку в Ugodchikov3, отключив вывод на монитор при помощи точек с запятой, т.е. таким образом:
Rm=0.14*(Ks+76.5)/88; mu=5.95*Rm; T=(137.5*Rm/(Ks+126)-0.089)/0.036;
Наконец, если задаться каким-либо интервалом k1, на котором мы хотим найти минимум невязки (пусть это будет, например, 0.1 ≤ k1 ≤ 100), то решение задачи оптимизации займет лишь 1 строку (прямо в командном окне MATLAB – безо всякого программирования):
>> k1_opt=fminbnd('Ugodchikov3',0.1,100)
и довольно быстро (в пределах секунды) на экране появится ответ:
k1_opt = 17.3252,
который совершенно понятен безо всяких объяснений: минимальное значение невязки достигается при значении k1 = 17.3252. Однако приведенный пример представляет собой самый простой способ вызова fminbnd. Существуют и другие, которые мы сейчас проиллюстрируем на том же самом примере.
В выражение для решателя fminbnd может быть включена стандартная функция optimset [Gartman, Klushin, 2020: p. 288], параметры которой описаны в Табл. 4. Но можно поступить иначе – задать параметры в управляющей структуре (которую мы будем, как и в справочной системе MATLAB, называть options, хотя имя может быть произвольным). Тогда перед вызовом вычислительных функций следует, воспользовавшись функцией optimset, сформировать переменную23 options в соответствии с характером требуемого контроля. В общем случае входные аргументы optimset задаются попарно [Anufriyev et al., 2005: p. 258-259]:
options=optimset(…,'вид_контроля','значение',…).
Таблица 4. Параметры optimset [Anufriyev et al., 2005: p. 259-260].
Table 4. Optimset parameters [Anufriyev et al., 2005: p. 259-260].
Вид контроля | Значение | Результат | Примечание |
Display | 'off' | Информация о процессе вычислений не выводится |
|
'iter' | Выводится информация о каждом шаге процесса вычислений |
| |
'final' | Выводится информация только о завершении вычислений |
| |
'notify' | Выводится предупреждение, если процесс не сходится | Значение по умолчанию | |
MaxFunEvals | Целые числа | Максимальное количество вызовов исследуемой функции | Только для fminbnd и fminsearch |
MaxIter | Максимальное количество итераций вычиcлительного процесса | ||
TolFun | Вещественные положительные числа | Точность по функции для останова вычислений | |
TolX | Точность по аргументу функции для останова вычислений |
|
Приступим к формированию структуры options на примере минимизации функции одной переменной при помощи fminbnd. Получим сначала информацию о работе алгоритма минимизации на его последнем шаге. Для этого вызовем функцию optimset с одним выходным аргументом options и двумя входными: 'Display' и 'final', а затем укажем options в дополнительном четвертом входном аргументе MATLAB-функции fminbnd (кроме того, установим формат вывода long, поскольку в дальнейшем нам понадобятся все значащие цифры для анализа результата) [Anufriyev et al., 2005: p. 258]. Все это можно сделать прямо в командном окне MATLAB:
>> options=optimset('Display','final');
>> format long, k1_opt=fminbnd('Ugodchikov3',0.1,100,options)
Ответ MATLAB, появляющийся на экране, будет таким:
Optimization terminated: the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004
k1_opt = 17.32521144373114.
Как видим, кроме координаты точки локального минимума выводится информация об успешном завершении вычислительного процесса и точности, с которой (по умолчанию) найдено решение. Для изменения точности следует заново сформировать структуру options, указав еще одну пару входных аргументов. В следующем примере мы задаем не только опцию 'Display', но и точность 10-9 по аргументу при помощи параметра TolX [Anufriyev et al., 2005: p. 259]. Обратите внимание, что для 'Display' мы на этот раз выбрали другое значение. Итак, введем в командном окне MATLAB:
>> options=optimset('Display','iter','TolX',1e-9);
>> k1_opt=fminbnd('Ugodchikov3',0.1,100,options).
Получаем (для экономии места приводим начало и конец «распечатки»):
Func-count x f(x) Procedure
3 38.2584 3.37439 initial
4 61.8416 3.43065 golden
5 23.6832 3.29657 golden
6 14.6752 3.32481 golden
7 23.5419 3.29519 parabolic
8 20.2604 3.25705 parabolic
9 18.127 3.22887 golden
… … … …
34 17.3252 3.21645 parabolic
35 17.3252 3.21645 golden
Optimization terminated: the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-009
k1_opt = 17.32519999149728.
Значение, полученное с точность 10-9, можно считать «истинным» по сравнению с тем, которое получено с точностью 10-4 (по умолчанию fminbnd использует точность 10-4 [Anufriyev et al., 2005: p. 259]), поэтому погрешность последнего легко вычислить:
17.32521144373114 - 17.32519999149728 = 0.00001145223386.
Следовательно, при первом вычислении точность была ~10-5, а не 10-4, как выведено в сообщении. Информация, возвращаемая функцией fminbnd, содержит гарантированную точность, в то время как реальная точность может быть лучше [Anufriyev et al., 2005: p. 259].
Пользователям, имеющим представление о численных методах, могут оказаться полезны сведения о ходе вычислений, выводимые на экран при значении параметра 'Display', равном 'iter' (как мы это задали в последнем примере). Появилась таблица, каждая строка которой соответствует одной итерации и содержит информацию о том, какой раз вызывалась исследуемая функция – «Func-count», текущее приближение – «x» и значение функции от него – «f(x)», а также метод, применяемый на данной итерации, – «Procedure» [Anufriyev et al., 2005: p. 260]. Может показаться, что последние 8 итераций (с 28-й по 35-ю включительно) не имели смысла, ибо ни значение оптимизируемой переменной (17.3252), ни значение минимизируемой функции (3.21645) не менялись. Однако это постоянство только кажущееся. Просто у оптимизируемой переменной мы видим лишь 4 десятичных знака, а точность задали на уровне 10-9. На итерациях с 27-й по 35-ю оптимизируемая переменная меняется, но меняется в 5-м знаке; потом – в 6-м и т.д.
Функция optimset служит также для модификации существующей структуры. Например, если сначала была задана только точность по аргументу
>> options=optimset('TolX',1e-9);
а в дальнейшем потребовалось дополнительно указать точность по функции и получить информацию о каждом шаге вычислительного процесса, то достаточно обратиться к функции optimset следующим образом:
>> options=optimset(options,'TolFun',1e-7,'Display','iter').
При этом можно создать несколько структур с различными именами (к примеру, options1 и options2) для разных вариантов управления вычислительным алгоритмом [Anufriyev et al., 2005: p. 261].
Для просмотра всех текущих опций можно вывести структуру options в командное окно или открыть ее в редакторе массивов двойным щелчком по строке с options в окне браузера переменных рабочей среды [Anufriyev et al., 2005: p. 261]. Проиллюстрируем только первую возможность. Если в точности были выполнены все вышеприведенные примеры манипуляций с optimset, то введя в командной строке
>> options,
получим внушительный список параметров, в котором будут заданы только те, которые мы определили выше при помощи optimset (т.е. Display: 'iter', TolFun: 1.0000e-007 и TolX: 1.0000e-009).
Получение значения отдельного параметра производится при помощи функции optimget, входными аргументами которой являются имя структуры и название требуемого параметра [Anufriyev et al., 2005: p. 261]. Например, если мы хотим узнать, какая задана точность функции для останова вычислений, то следует ввести в командной строке
>> optimget(options,'TolFun')
и незамедлительно будет получен ответ:
ans = 1.0000e-007.
Если данному параметру не было присвоено значение при генерации структуры, то возвращается пустой массив [Anufriyev et al., 2005: p. 261]. Например, выше мы не задавали максимальное количество итераций24. Поэтому при обращении к соответствующему параметру
>> optimget(options,'MaxIter')
в качестве ответа будет получен пустой массив:
ans = [ ].
Вызов функции optimset без входных аргументов
>> optimset
приводит к отображению в командном окне названий всего множества параметров вместе с их допустимыми значениями. В фигурных скобках указаны значения, используемые в вычислительном алгоритме по умолчанию [Anufriyev et al., 2005: p. 261].
В заключение данного раздела опишем способы вызова fminbnd с некоторыми дополнительными выходными параметрами. Еще раз решим задачу нашего примера, но обратимся к решателю вот так:
>>[k1_opt,HEB_min,Exitflag]=fminbnd('Ugodchikov3',0.1,100,options).
Результат будет таким:
Optimization terminated: the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004
k1_opt = 17.3252 HEB_min = 3.2165 Exitflag = 1.
Exitflag – числовая характеристика вычислительного процесса: Exitflag > 0 – решение найдено с требуемой точностью, Exitflag = 0 – достигнуто максимальное число итераций [Gartman, Klushin, 2020: p. 293], Exitflag < 0 – отсутствие сходимости вычислительного процесса. И, наконец, обратившись к fminbnd таким образом:
>>[k1_opt,HEB_min,Exitflag,output]=fminbnd('Ugodchikov3',0.1,100,options),
получим следующий результат:
Optimization terminated: the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004
Ks_opt = 17.3252 HEB_min = 3.2165 Exitflag = 1
output = iterations: 24
funcCount: 27
algorithm: 'golden section search, parabolic interpolation'
message: [1x112 char],
откуда становится понятно, что структура output содержит в своих четырех полях информацию о процессе оптимизации: в output.algorithm – использованный алгоритм; в output.funcCount и output.iterations – соответственно количество вычислений целевой функции и количество итераций, понадобившиеся для поиска минимума с необходимой точностью; в output.message – сообщение о том, чем закончилось применение решателя (в данном случае это «Optimization terminated: the current…»).
На этом мы завершим описание fminbnd и optimset, но заметим, что в разделе «Mathematics: Function Functions: Minimizing Functions and Finding Zeros» справочной системы MATLAB размещена подробная информация о минимизации функций и, кроме того, приведены ссылки на литературу с описанием вычислительных методов, реализованных в MATLAB [Anufriyev et al., 2005: p. 261]25.
Решение задач многомерной оптимизации при помощи fminsearch
Однако, увлекшись вопросами программной реализации, мы несколько отвлеклись от существа задачи поиска параметров математической модели. Окинем взглядом решенную нами выше задачу микробиологической кинетики еще раз. При помощи различных частных методов мы свели ее к нескольким линейным задачам поиска тех или иных параметров и к нелинейной задаче поиска параметра k1. Линейные задачи решались при помощи чрезвычайно простой процедуры линейной регрессии (реализованной даже в электронной таблице Excel), а нелинейная – MATLAB-решателем fminbnd. Понятно, что любой коэффициент был получен нами с некоторой погрешностью. Иначе говоря, мы не можем быть уверены, что, например, экономический коэффициент (k5) равен в точности 6.73 (напомним, что такое значение было получено нами выше в разделе «Исключение времени как независимой переменной»). Но значение k1 = 17.3252 получено (в разделе «Решение задач одномерной оптимизации при помощи fminbnd») именно в предположении того, что k5 = 6.73. А если k5 = 6.826? Разумеется, нам не составит никакого труда определить k1, найдя минимум невязки и в случае k5 = 6.8. Но тут возникает важный вопрос: будет ли минимальное значение невязки таким же, каким оно было для k1 = 17.3252 (и, соответственно, для k5 = 6.73)? Это ниоткуда не следует! Таким образом, вполне может оказаться, что при k5 = 6.8 будет найдено такое значение k1 (разумеется, опять из условия минимальной невязки), что минимальная невязка будет меньше, чем она была для k5 = 6.73 и, соответственно, k1 = 17.3252.
Если читатель думает, что это все какие-то отвлеченные теоретизирования, что такая ситуация может встретиться редко, то он жестоко ошибается. Давайте практически проделаем все то, что описано выше. Прежде всего, еще раз решим нашу нелинейную задачу при k5 = 6.73, но вызовем решатель fminbnd таким образом, чтобы увидеть значение минимальной невязки при оптимальном значении k1:
>> [Ks_opt, HEB_min]=fminbnd('Ugodchikov3',0.1,100,options)
Результат не заставит себя ждать:
Optimization terminated: the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004
Ks_opt = 17.3252 HEB_min = 3.2165.
А теперь изменим в функции Ugodchikov3 (см. функцию в приложении 2) значение Y: вместо Y=6.73 зададим Y=6.8 и вновь запустим процедуру минимизации. Результат будет уже другим:
Ks_opt = 17.3906 HEB_min = 3.1754.
Для более «плохого» (с точки зрения соответствующей задачи линейной регрессии) значения k5 = 6.8 удалось найти настолько «хорошее» значение k1 (= 17.3906), что общая невязка оказалась не больше, а меньше! Иначе говоря, параметры k5 = 6.8 и k1 = 17.3906 (все остальные параметры остались неизменными) лучше удовлетворяют экспериментальным данным, чем k5 = 6.73 и k1 = 17.3252.
Но ведь мы фактически ткнули пальцем в небо – произвольно выбрали значение k5 = 6.8. Быть может, для k5 = 6.77 невязка была бы еще меньше? Или, скажем, для k5 = 6.83… Очевидно, что среди всех (имеющих биологический смысл) значений k5 найдется такое, при котором невязка будет «самой-самой минимальной». Итак, возникает задача уже не одномерной, а двумерной оптимизации: подобрать такие значения k1 и k5, чтобы невязка была минимальна. Как уже говорилось выше (в разделе «Стандартные решатели MATLAB для оптимизационных задач»), алгоритмы, выполняющие такую оптимизацию, имеются. Более того, существование универсальных решателей, способных найти минимум для функции не только двух, но и трех и вообще многих переменных, наводит на следующую мысль: нельзя ли минимизировать невязку, подбирая значения сразу для всех 6 параметров: k0, k1, …, k5?
Разработано множество решателей задач многомерной оптимизации, которые используются в среде MATLAB. Часть из них поставляется со стандартным пакетом, а остальные (и их большинство) приходится дополнительно приобретать у фирм-дистрибьюторов или скачивать из Интернета [Gartman, Klushin, 2020: p. 294]. Кроме того, значительное число оптимизационных программ (как общего назначения, так и уже сопряженных именно с задачей идентификации параметров) опубликовано в литературе на языке MATLAB и на других языках программирования (см., например, [Johnson, 1980: § 5.4; Bunday, 1984; Brandt, 1999: § 9.6, 9.11, 9.14, 10.8, 10.11, 10.13-10.15, 10.19; Mathews, Fink, 1999: § 8.1]). Они различаются используемыми в решателе алгоритмами оптимизации, возможностями варьирования различных алгоритмов и их параметрами, а также применимостью к решению разнотипных задач [Gartman, Klushin, 2020: p. 294]. Здесь мы рассмотрим многомерную оптимизацию только при помощи стандартной функции MATLAB fminsearch.
При использовании решателя fminsearch достаточно задать начальные значения оптимизирующих переменных в виде вектора, компоненты которого будут изменяться в соответствии с алгоритмом оптимизации, используемым в решателе27 [Gartman, Klushin, 2020: p. 295]. Но, разумеется, теперь (в отличие от одномерного случая) и целевая функция должна воспринимать независимую переменную как вектор.
Выше в наших примерах мы везде рассматривали ситуацию, когда функция Ugodchikov3 получает значение k1 и вычисляет (при этом заданном k1) значение невязки между экспериментальными данными и модельными кривыми. Напомним, что все другие коэффициенты модели (k0, k2, k3, k4 и k5) при помощи разнообразных частных способов идентификации параметров были уже либо вычислены (k5 = 6.73; k0 = 11.5), либо связаны с k1 однозначными зависимостями (23), по которым вычислялись в Ugodchikov3, как только туда поступало значение k1. Теперь нам нужно переписать функцию Ugodchikov3 таким образом, чтобы на входе она воспринимала не один лишь параметр (k1), а все 6 коэффициентов модели. Эту новую функцию мы назовем Ugodchikov2.
Собственно говоря, непосредственно на входе Ugodchikov2 ничего менять не нужно, просто теперь входной параметр coef будем рассматривать (и потому – будем задавать!) не как единственное число, а как вектор, содержащий 6 элементов: значения k0, k1, …, k5. Вообще, изменения, преобразующие Ugodchikov3 в Ugodchikov2, очень незначительны: нам всего-то нужно убрать блок расчета коэффициентов модели, т.е. 4 строки, начиная с комментария «% КОЭФФИЦИЕНТЫ МОДЕЛИ». Кроме того, теперь мы предусмотрели, что в процессе поиска минимума решатель может захотеть проверить отрицательные значения коэффициентов, но т.к. они лишены биологического смысла, то делать этого нельзя. Поэтому перед вызовом функции ode23tb, осуществляющей численное интегрирование дифференциальных уравнений, мы добавили строку, обеспечивающую неотрицательность коэффициентов. Наконец, поскольку в дальнейшем предполагается многократно вызывать Ugodchikov2 из какого-либо решателя оптимизационных задач, мы посчитали, что попытки построить график при каждом таком вызове могут тормозить вычислительный процесс, поэтому «закомментарили» строки, обеспечивающие графический вывод (подчеркнем: лишь «закомментарили», но не стерли их, поскольку когда-нибудь построение графика может понадобиться – и тогда достаточно будет «раскомментарить» эти строки обратно). Ну и, разумеется, мы частично изменили комментарии в «шапке» (см. текст программы Ugodchikov2 в приложении 3). Теперь, когда у нас появилась программа, вычисляющая невязку после получения 6 коэффициентов модели, никакого труда не составит подать имя этой программы и начальные значения коэффициентов на вход функции fminsearch, а она уже автоматически подберет такие их значения, которые обеспечат минимум невязки и, следовательно, наилучшее совпадение кривых, рассчитанных по модели, с экспериментальными данными. В качестве начального приближения к значениям коэффициентов будем использовать те, что были получены (при помощи частных способов) ранее:
k3 = 0.15, k2 = 0.89, k4 = 1.5, k5 = 6.73, k0 = 11.5, k1 = 17.3252. (24)
Итак, в командном окне MATLAB вызовем функцию fminsearch следующим образом:
>>opti=optimset('Display','iter');
>>x_opt=fminsearch('Ugodchikov2',[.15 .89 1.5 6.73 11.5 17.3252],opti)
Поскольку эта задача потребует довольно большого числа итераций, мы не будем приводить полную распечатку того, что пользователь увидит на экране, а ограничимся лишь информацией по нескольким итерациям:
Iteration Func-count min f(x) Procedure
0 1 3.29005
1 7 3.03938 initial simplex
2 8 3.03938 reflect
… … … …
4 12 2.94759 contract inside
… … … …
8 17 2.93738 reflect
… … … …
16 31 2.87947 expand
… … … …
32 51 2.54836 expand
… … … …
64 101 1.91947 reflect
… … … …
128 207 1.87345 contract inside
… … … …
212 353 1.87261 contract inside
Optimization terminated: the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004 and F(X) satisfies the convergence criteria using OPTIONS.TolFun of 1.000000e-004
x_opt = 0.1973 1.1790 4.2399 6.8769 -1.2888 5.8503.
На первый взгляд, результат может показаться странным: значение k0 – отрицательное! Однако вспомним, что в теле функции Ugodchikov2 мы принудительно делали все коэффициенты неотрицательными (при помощи строки, помеченной комментарием: «По биологическому смыслу параметры неотрицательны»). Иначе говоря, когда fminsearch генерирует значение k0 = -1.2888 и передает его в Ugodchikov2, там система дифференциальных уравнений решается все равно для значения k0 = +1.2888. Во-первых, это ясно видно из текста программы, а во-вторых, читатель может проверить это самым прямым образом, выполнив расчет модельных кривых при помощи команд
>> HEB = Ugodchikov2([0.1973 1.179 4.2399 6.8769 -1.2888 5.8503])
и
>> HEB = Ugodchikov2([0.1973 1.179 4.2399 6.8769 1.2888 5.8503])
(разумеется, предварительно «раскомментарив» графический вывод, т.е. 3 строки, начиная с plot…). В обоих случаях будет получен совершенно одинаковый ответ:
HEB = 1.8732
и графики будут выглядеть тоже абсолютно одинаково. Мы здесь их не приводим, поскольку они очень похожи на те, что изображены на Рис. 6а, но кривые проходят еще ближе к экспериментальным точкам.
И в заключение данного раздела нам хотелось бы кратко коснуться вопроса, относящегося не столько к технике решения оптимизационной задачи, сколько к сути получаемых результатов. Выше (в разделе «Уровень невязки, обусловленный погрешностью экспериментальных данных») мы показали, что если измерения концентрации биомассы, субстрата и доли РНК характеризовались соответственно такими средними абсолютными погрешностями (± их стандартные отклонения): 24 ± 17 мг/л; 10 ± 7 мг/л; 0.010 ± 0.007, то невязка, меньшая чем примерно 3.2, может быть обусловлена неточностью самих экспериментальных данных. Если отнести эти средние погрешности к средним значениям измеряемых показателей, то получим следующие относительные погрешности: 24·100%/340 ≈ 7%, 10·100%/89 ≈ 11% и 0.010·100%/0.098 ≈ 10%. Такой уровень относительной погрешности представляется достаточно типичным для измерений в биологических системах, особенно если учитывать вариабельность этих систем, а не только погрешность измерительного прибора.
Приблизительно такой же уровень невязки (между расчетными кривыми и экспериментальными данными) обеспечивает математическая модель (12)-(14) с численными значениями коэффициентов (24). Но теперь нам удалось найти другой набор численных значений тех же самых коэффициентов, который обеспечивает невязку ≈1.9. Следовательно, раз мы считали значения (24) обеспечивающими адекватность модели, то уж тем более таковыми следует признать значения из нового набора. Более того, можно вполне обоснованно предположить, что на самом деле мы имеем не два дискретных набора коэффициентов, а бесконечное множество. Действительно, посмотрим, например, на k3: в (24) мы имели значение k3 ≈ 0.15 (при этом НЕВ ≈ 3.2), а теперь – k3 = Rm ≈ 0.20 (НЕВ ≈ 1.9); вероятно, для любого значения k3 из интервала от 0.15 до 0.20 можно найти такой набор всех остальных параметров (k0, k1, k2, k4 и k5), что невязка окажется где-то между 1.9 и 3.2, т.е. модель с таким набором параметров также можно признать адекватной экспериментальным данным. Понятно, что все то же самое можно сказать относительно любого из коэффициентов модели. Но обратите внимание, что величины «интервалов адекватности» для разных параметров существенно различаются. Если в качестве характерных значений этих параметров взять середины интервалов, то мы получим, что относительная погрешность (будем обозначать ее значком «δ») δk3 ≈ (0.2-0.15)·100%/0.175 ≈ 29%, а, например, δk4 ≈ (4.2-1.5)·100%/[(4.2+1.5)/2] ≈ 95%. Подчеркнем: модель (12)-(14) и со значением k4 ≈ 1.5 час, и с k4 ≈ 4.2 час (и, скорее всего, с любым значением из интервала 1.5¸4.2), в общем, удовлетворяет имеющимся экспериментальным данным. Понятно, что такая низкая точность определения коэффициента модели вряд ли может удовлетворить современного взыскательного исследователя (хотя, конечно, все зависит от поставленной задачи).
Вспомним, что максимальный уровень невязки (≈ 3.2) соответствовал характерной погрешности экспериментальных данных 7-11%. А для погрешности k4 мы получаем (из этих относительно точных данных!) – 95%!!! Это свидетельствует либо о плохой обусловленности использованного метода решения обратной кинетической задачи, либо о плохой обусловленности самой этой задачи. Но, как уже было сказано выше, понятия хорошей/плохой обусловленности (и корректности/некорректности) составят тему другой лекции.
БЛАГОДАРНОСТИ
Работа выполнена в рамках государственного задания МГУ им. М.В. Ломоносова.
ПРИЛОЖЕНИЕ 1: MATLAB-ФУНКЦИЯ stat_mod
APPENDIX 1: MATLAB FUNCTION stat_mod
function [HEBmin,HEBavg,HEBmax,HEB]=stat_mod(me,sigma,N,P)
%**************************************************************************
% СТАТИСТИЧЕСКОЕ МОДЕЛИРОВАНИЕ НЕВЯЗКИ, ПОРОЖДАЕМОЙ *
% НОРМАЛЬНО РАСПРЕДЕЛЕННОЙ ПОГРЕШНОСТЬЮ ЭКСПЕРИМЕНТАЛЬНЫХ ДАННЫХ *
%**************************************************************************
% ВЫЗОВ: HEB=stat_mod(me,sigma,N,P) *
% *
% ВХОДНЫЕ ПАРАМЕТРЫ: *
% Фактически, экспериментальные данные также являются входным параметром, *
% но ради удобства они задаются непосредственно в теле данной функции *
% (в матрице Y, где каждый столбец соответствует данным одного типа, *
% например, если в разные моменты времени измерялись концентрации био-*
% массы, субстрата и рибосом, то в 1-м столбце матрицы можно размес- *
% тить данные по биомассе, во 2-м - по субстрату и в 3-м - по рибо- *
% сомам; тогда каждая строка матрицы Y будет соответствовать конкрет- *
% ному времени измерений); *
% me, sigma - векторы-строки, соответственно, средних значений абсолютных *
% погрешностей и стандартных отклонений (каждому столбцу матрицы Y со-*
% ответствует свой элемент вектора me и свой элемент вектора sigma); *
% N - количество реализаций вычислений невязки; *
% P - доверительная вероятность для расчета доверительного интервала, со- *
% держащего среднее значение невязки. %
% *
% ВЫХОДНЫЕ ПАРАМЕТРЫ: *
% HEBmin,HEBmax - соответственно, левая и правая границы доверительного *
% интервала, содержащего среднее арифметическое значение невязки, *
% обусловленной погрешностью экспериментальных данных; *
% HEB - вектор, содержащий все значения невязок, полученных в процессе *
% сатистического моделирования; *
% HEBavg - среднее арифметическое значение, вычисленное по элементам HEB. *
%**************************************************************************
% НЕОБХОДИМАЯ ВНЕШНЯЯ ФУНКЦИЯ (из Statistics Toolbox): *
% tinv - Inverse of Student's T cumulative distribution function. *
%**************************************************************************
% ПРИМЕЧАНИЕ: Вычисление доверительного интервала производится в предпо- *
% ложении нормального распределения значений невязки. Поскольку это пред- *
% положение в реальности может не выполняться, к величине доверительного *
% интервала следует относиться с осторожностью. *
%**************************************************************************
% ЛИТЕРАТУРА: Румшиский Л.З. 1971. Математическая обработка результатов *
% эксперимента. М.: Наука. С. 29. *
%**************************************************************************
% ПРОГРАММИСТ: Глаголев М.В. 16/02/2020 *
%**************************************************************************
Y =[59 130 0.041
65 130 0.057
80 130 0.068
106 126 0.089
150 120 0.107
213 109 0.127
314 90 0.140
479 63 0.140
711 36 0.134
899 0 0.122
947 0 0.116];
[m,n] = size(Y); % Количество строк (m) и столбцов (n) матрицы Ye
YAvg = mean(Y); % Характерные значения переменных
for k=1:N
y=randn(m,n); % Генератор нормально распределенных случайных чисел
HEB(k)=0;
for i=1:m for j=1:n HEB(k)=HEB(k)+abs(me(j)+sigma(j)*y(i,j))/YAvg(j);
end %for j...
end %for i...
end %for k...
% Расчет доверительного интервала в предположении нормального распределения
HEBavg=mean(HEB); x=tinv(1-0.5*(1-P),N-1)*std(HEB)/N^0.5;
HEBmin=HEBavg-x; HEBmax=HEBavg+x;
ПРИЛОЖЕНИЕ 2: MATLAB-ФУНКЦИЯ Ugodchikov3
APPENDIX 2: MATLAB FUNCTION Ugodchikov3
function HEB=Ugodchikov3(coef)
%**************************************************************************
% ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ *
% СТРУКТУРИРОВАННОЙ МОДЕЛИ ПЕРИОДИЧЕСКОЙ КУЛЬТУРЫ МИКРООРГАНИЗМОВ: *
% dX/dt = m*S*X*R/[(Kr+S)*Rm]; *
% dS/dt = -m*S*X*R/[(Kr+S)*Rm*Y]; *
% dR/dt = [Rm*(Kr+S)/(Ks+S) - R]/T; *
%и расчет невязки между интегральными кривыми и экспериментальными данными*
%**************************************************************************
% ВЫЗОВ: HEB=Ugodchikov3(coef) *
% *
% ВХОДНОЙ ПАРАМЕТР: coef - коэффициент Ks в вышеприведенной системе урав- *
% нений (другие коэффициенты определены из экспериментальных данных в *
% блоке КОЭФФИЦИЕНТЫ МОДЕЛИ). *
% *
% ВЫХОДНОЙ ПАРАМЕТР: HEB - невязка между интегральными кривыми и экспери- *
% ментальными данными, представляющая собой сумму нормированных квадратов *
% отклонений (нормирование осуществляется путем деления квадратов отклоне-*
% ний на среднее значение соответствующей переменной, вычисленное по экс- *
% периментальным данным). *
% *
% ПРОГРАММИСТ: Глаголев М.В. 10/02/2019. (Версия 1.0) *
%**************************************************************************
% ПРИМЕР: при вызове *
% *
% HEB=Ugodchikov3(5) *
% *
% должен быть выдан результат: Rm=0.1297 mu=0.7715 T=1.3081 HEB=4.5821 *
% и выведен график, содержащий экспериментальные и расчетные данные (на *
% графике X и S приведены в [мг/л], а R – в [мгРНК/гБиомассы]). *
%**************************************************************************
% ЭКСПЕРИМЕНТАЛЬНЫЕ ДАННЫЕ:
% X[мг/л] S[мг/л] R[гРНК/гБиомассы] t(Абсцисса, [час])
Ye=[53 130 0.040 0
59 130 0.041 0.5
65 130 0.057 1
80 130 0.068 1.5
106 126 0.089 2
150 120 0.107 2.5
213 109 0.127 3
314 90 0.140 3.5
479 63 0.140 4
711 36 0.134 4.5
899 0 0.122 5
947 0 0.116 6];
[m,n] = size(Ye); % Количество строк (m) и столбцов (n) матрицы Ye
time = Ye(:,n)'; % Моменты времени вывода решения
% КОЭФФИЦИЕНТЫ МОДЕЛИ
Ks=coef; Y=6.73; Kr=11.5;
Rm=0.14*(Ks+76.5)/88, mu=5.95*Rm, T=(137.5*Rm/(Ks+126)-0.089)/0.036 % !!!!!!!
cAbs(1)=Rm; cAbs(2)=mu; cAbs(3)=T; cAbs(4)=Y; cAbs(5)=Kr; cAbs(6)=Ks;
Y0 = [Ye(1,1) % Начальные значения: концентрации биомассы
Ye(1,2) % лимитирующего субстрата
Ye(1,3)]; % PHK
YeAvg = mean(Ye); % Характерные значения переменных
[T,Y] = ode23tb(@Monod,time,Y0,[],cAbs); % Обращаемся к решателю ОДУ
% Вычисление невязки между экспериментальными данными и расчетом по модели
HEB=0; for i=2:m for j=1:n-1 HEB=HEB+abs(Y(i,j)-Ye(i,j))/YeAvg(j); end, end
plot(T,Y(:,1),'k',T,Y(:,2),':k',T,1000*Y(:,3),'--k',T,...
Ye(:,1),'ok',T,Ye(:,2),'xk',T,1000*Ye(:,3),'*k');
xlabel('Time, h'), ylabel('Concentration') %Оси координат
%**************************************************************************
% ФУНКЦИЯ, ЗАДАЮЩАЯ ПРАВУЮ ЧАСТЬ СИСТЕМЫ УРАВНЕНИЙ *
%**************************************************************************
function dy=Monod(t,z,cAbs)
Rm=cAbs(1); mu=cAbs(2); T=cAbs(3); Y=cAbs(4); Kr=cAbs(5); Ks=cAbs(6);
X=z(1); S=z(2); R=z(3); % Обозначаем переменные для удобства
dy=[mu*S*X*R/(Kr+S)/Rm % Уравнения динамики концентраций: биомассы
-mu*S*X*R/(Kr+S)/Rm/Y % лимитирующего субстрата
(Rm*(Kr+S)/(Ks+S) - R)/T]; % PHK
ПРИЛОЖЕНИЕ 3: MATLAB-ФУНКЦИЯ Ugodchikov2
APPENDIX 3: MATLAB FUNCTION Ugodchikov2
function HEB=Ugodchikov2(coef)
%**************************************************************************
% ЧИСЛЕННОЕ ИНТЕГРИРОВАНИЕ *
% СТРУКТУРИРОВАННОЙ МОДЕЛИ ПЕРИОДИЧЕСКОЙ КУЛЬТУРЫ МИКРООРГАНИЗМОВ: *
% dX/dt = m*S*X*R/[(Kr+S)*Rm]; *
% dS/dt = -m*S*X*R/[(Kr+S)*Rm*Y]; *
% dR/dt = [Rm*(Kr+S)/(Ks+S) - R]/T; *
%и расчет невязки между интегральными кривыми и экспериментальными данными*
%**************************************************************************
% ВЫЗОВ: HEB=Ugodchikov2(coef) *
% *
% ВХОДНОЙ ПАРАМЕТР: coef - вектор коэффициентов [Rm m T Y Kr Ks] в выше- *
% приведенной системе уравнений. *
% *
% ВЫХОДНОЙ ПАРАМЕТР: HEB - невязка между интегральными кривыми и экспери- *
% ментальными данными, представляющая собой сумму нормированных квадратов *
% отклонений (нормирование осуществляется путем деления квадратов отклоне-*
% ний на среднее значение соответствующей переменной, вычисленное по экс- *
% периментальным данным). *
% *
% ПРОГРАММИСТ: Глаголев М.В. 06/04/2020. (Версия 1.0) *
%**************************************************************************
% ПРИМЕР: при вызове *
% *
% HEB=Ugodchikov3([0.1297 0.7715 1.3081 6.73 11.5 5]) *
% *
% должен быть выдан результат: HEB=4.5848. *
%**************************************************************************
% ЭКСПЕРИМЕНТАЛЬНЫЕ ДАННЫЕ:
% X[мг/л] S[мг/л] R[гРНК/гБиомассы] t(Абсцисса, [час])
Ye=[53 130 0.040 0
59 130 0.041 0.5
65 130 0.057 1
80 130 0.068 1.5
106 126 0.089 2
150 120 0.107 2.5
213 109 0.127 3
314 90 0.140 3.5
479 63 0.140 4
711 36 0.134 4.5
899 0 0.122 5
947 0 0.116 6];
[m,n] = size(Ye); % Количество строк (m) и столбцов (n) матрицы Ye
time = Ye(:,n)'; % Моменты времени вывода решения
Y0 = [Ye(1,1) % Начальные значения: концентрации биомассы
Ye(1,2) % лимитирующего субстрата
Ye(1,3)]; % PHK
YeAvg = mean(Ye); % Характерные значения переменных
cAbs = abs(coef); % По биологическому смыслу параметры неотрицательны
[T,Y] = ode23tb(@Monod,time,Y0,[],cAbs); % Обращаемся к решателю ОДУ
% Вычисление невязки между экспериментальными данными и расчетом по модели
HEB=0; for i=2:m for j=1:n-1 HEB=HEB+abs(Y(i,j)-Ye(i,j))/YeAvg(j); end, end
%plot(T,Y(:,1),'k',T,Y(:,2),':k',T,1000*Y(:,3),'--k',T,...
% Ye(:,1),'ok',T,Ye(:,2),'xk',T,1000*Ye(:,3),'*k');
%xlabel('Time, h'), ylabel('Concentration') %Оси координат
%**************************************************************************
% ФУНКЦИЯ, ЗАДАЮЩАЯ ПРАВУЮ ЧАСТЬ СИСТЕМЫ УРАВНЕНИЙ *
%**************************************************************************
function dy=Monod(t,z,cAbs)
Rm=cAbs(1); mu=cAbs(2); T=cAbs(3); Y=cAbs(4); Kr=cAbs(5); Ks=cAbs(6);
X=z(1); S=z(2); R=z(3); % Обозначаем переменные для удобства
dy=[mu*S*X*R/(Kr+S)/Rm % Уравнения динамики концентраций: биомассы
-mu*S*X*R/(Kr+S)/Rm/Y % лимитирующего субстрата
(Rm*(Kr+S)/(Ks+S) - R)/T]; % PHK
1 Цитируется по [Ivanitskiy, 2001: p. 108]).
2 Поскольку в дальнейшем будет важна зависимость φi не столько от k, сколько от t, мы иногда будем опускать k, подразумевая, конечно, что φi(t) = φi(k,t).
3 Когда веса для всех экcпериментальных точек i-го компонента одинаковы, вполне возможно использовать лишь индекс i; а когда, напротив, веса различаются для экспериментальных точек i-го компонента, но не различаются между компонентами (или вообще существует только один компонент), – лишь индекс m.
4 Кроме того, если окажется, что Сi(tm) = 0 для каких-то i и m, то мы вообще «сядем в лужу», поскольку деление на 0 не определено.
5 В литературе это распределение («double exponential distribution») встречается также под множеством других названий: «билатеральное экспоненциальное распределение», «двойное показательное распределение», «двустороннее показательное распределение», «показательное распределение с двумя хвостами», «1-й закон Лапласа», «1-й закон ошибок Пуассона», «1-й закон распределения ошибок Лапласа» [Johnson et al., 1994: § 19. 10; Johnson et al., 1995: § 24.1].
6 Согласно определению, «критерий» (от греч. kritérion – средство для суждения) – признак, на основании которого производится оценка, определение или классификация чего-либо; мерило оценки [Prokhorov, 1983, p. 654]. В узком смысле критерий должен включать в себя некоторое условие (например, в случае классификации оно указывает, почему рассматриваемый объект относится или не относится к данному классу). Следовательно, просто какое-то число критерием быть не может. Но, видимо, иногда «критерий» понимается более широко – как некоторый показатель (например, число), который следует подвергнуть сравнению с заданным показателем (или заданными показателями) такого же типа, чтобы произвести оценку изучаемого объекта или классифицировать его. Также отметим, что все свои «критерии» Гартман и Клушин [Gartman, Klushin, 2020: p. 285] записывают только для частного случая К = 1.
7 «Квадратура» имеет несколько значений (см., например, [Stepanov, 1958: p. 8; Matveyev, 1963: р. 8; Prokhorov, 1983: р. 562; Prokhorov, 1988: p. 264]), в частности «квадратурой» называют операцию взятия неопределенного интеграла [Stepanov, 1958: p. 8]. Видимо, именно в этом смысле понимают данный термин Коробов и Очков [Korobov, Ochkov, 2009: p. 133], когда говорят, что если система дифференциальных уравнений (математическая модель) интегрируется в квадратурах, то «функции φi(t)… задаются конкретными аналитическими выражениями, с помощью которых можно осуществить аппроксимацию опытного набора кинетических данных». Напомним, что аналитическое выражение, формула – это выражение, определяющее совокупность действий, которые нужно проделать в определенном порядке над значением аргумента и константами, чтобы получить значение функции [Prokhorov, 1988: p. 71-72]. Поэтому, например, выражение является аналитическим, а – не является. Но, вообще говоря, в теории дифференциальных уравнений принято более широкое толкование термина «интегрируемость в квадратурах».
Дифференциальное уравнение считается проинтегрированным в квадратурах, если его общее решение получено в явной или неявной форме, которая может содержать еще не взятые интегралы от известных функций [Myshkis, 1964: р. 392]. Следовательно, тип «уравнения, интегрируемые в квадратурах» включает в себя, в частности, уравнения с разделенными переменными: X(t)dt + Y(y)dy = 0. Равенство ∫X(t)dt + ∫Y(y)dy = const является общим решением таких уравнений [Matveyev, 1963: р. 32-65]. Но, например, и ∫sin½(y)dy не выражаются через элементарные функции [Myshkis, 1964: р. 322]. Поэтому если X(t) = и Y(y) = sin½(y), то, записав + ∫sin½(y)dy = const, мы, конечно, показали, что соответствующее дифференциальное уравнение + sin½(y)dy = 0 в общепринятом смысле интегрируется в квадратурах, однако, аналитического выражения y(t), дающего зависимость свойства системы (y) от времени (t), мы не нашли, и найти его невозможно, а потому в смысле Коробова-Очкова оно в квадратурах не интегрируется.
8 Другие англоязычные исследователи называют их ‘transformably linear models’ [Ryan, 1997, p. 72].
9 В цитируемой статье это кривая 6 на рисунке 2а. Подробности данного конкретного эксперимента для нашей задачи несущественны, и мы их опускаем, отсылая заинтересованных читателей к оригинальной публикации.
10 Разумеется, в строгой науке нельзя решать какие-либо вопросы на глазок. Достаточно четкие критерии того, можно или нельзя признать аппроксимацию удовлетворительной, способна дать математическая статистика. Но сейчас мы не будем отвлекаться на строгие критерии и доказательства, поскольку в данном разделе иллюстрируем вовсе не качество линейной аппроксимации, а метод определения параметров после линеаризации данных.
11 Например, Excel (Add-In “Solver” – надстройка «Поиск решения» в локализованной русскоязычной версии) [Davis, 2024: p. 201-205]; Maple (команда fsolve) [Govorukhin, Tsibulin, 2001: p. 97-98], MATLAB (Optimization Toolbox: функция fsolve) [Anufriyev et al., 2005: p. 733-735, 742-746; Gartman, Klushin, 2020: p. 203-209], библиотека NAG (функция c05nbf) [Glagolev, Smagin, 2005: p. 38-51] и др.
12 Действительно, ведь экспериментальные данные без них хорошо описались простой моделью (6), которая не содержала параметра k4. Следовательно, информация, необходимая для определения k4, если где-то и содержится, то именно в правых точках.
13 Здесь же отметим, что если модель такова, что кривые имеют точки перегиба, то в этих точках вторые производные равны нулю, что дает еще одну возможность для применения метода подстановки. Однако на практике эта возможность используется крайне редко. Видимо, это объясняется относительно большим объемом аналитических вычислений, которые требуется произвести, чтобы получить вторые производные, тогда как система кинетических уравнений в своем первоначальном (естественном) виде содержит только первые производные.
14 Конечно, эти параметры имеют четкий биологический смысл, но он нам сейчас не важен.
15 Действительно, в ПраЧ исходных уравнений его и так не было (поскольку уравнения – автономные), следовательно, не будет его и в ПраЧ нового уравнения, являющегося отношением ПраЧ исходных уравнений. А в левые части исходных уравнений время входило в виде дифференциала dt, но при делении одного уравнения на другое этот дифференциал сократится.
16 На всякий случай напомним, что В = 0.
17 К сожалению, в разных версиях Excel доступ к средствам регрессии осуществляется по-разному, но мы надеемся, что читатель умеет выполнять множественную линейную регрессию в той версии среды Excel, которая у него имеется.
18 К сожалению, эти авторы допустили досадную описку, могущую запутать неопытного читателя. Довольно подробно описывая статистическое моделирование методом Монте-Карло (именно из-за такого подробного, но емкого и четкого описания мы все-таки решились рекомендовать эту книгу в числе прочих), горе-авторы почему-то называют его «методом бутстрэпа». Метод с таким названием действительно существует, но это вовсе не Монте-Карло, а совершенно другой метод (по своей идеологии, пожалуй, более близкий к методу «складного ножа»).
19 Мы пишем во множественном числе, потому что на случайную величину заменяется разность в каждый момент времени, когда проводились измерения: С1(t2) - φ1(t2) = ΔХ2, С1(t3) - φ1(t3) = ΔХ3, …, С1(t12) ‑ φ1(t12) = ΔХ12.
20 Если не принять специальных мер, которые мы здесь не будем описывать.
21 Т.е. параметрической идентификации, аппроксимирующей функции с одной независимой переменной t вида С = φ(t) [Gartman, Klushin, 2020: p. 288]. Однако эту независимую переменную не стоит путать с оптимизирующими переменными, за счет изменения которых осуществляется процесс минимизации невязки. Разумеется, раз речь идет о решении задач многомерной параметрической идентификации, то оптимизирующих переменных может быть более одной. Выше все такие переменные (k0, k1, …, ) мы формально рассматривали в качестве элементов некоторого вектора k, и тогда более развернуто можно записать С = φ(k, t). Например, если изучаемый процесс зависит от одной влияющей на его состояние переменной t, причем предполагается, что зависимость эта описывается полиномом 2-го порядка, то С = k0 + k1·t + k2·t2. В данном случае путем варьирования элементов вектора k = {k0, k1, k2} необходимо добиться соответствия между значениями С, измеренными в эксперименте при разных значениях t, и значениями вышеприведенного полинома при тех же значениях t.
22Раздел математики, посвященный теории и методам решения задач о нахождении экстремумов функций на множествах, определяемых некоторыми ограничениями (равенствами или неравенствами), называется математическим программированием или, иначе, оптимальным программированием (такое «программирование» следует отличать от программирования на ЭВМ). Если изучаемая функция линейна и ищется на множестве, заданном линейными равенствами и неравенствами, то соответствующий раздел математического программирования называется линейным программированием [Prokhorov, 1983: p. 769]. В противном случае имеет место задача нелинейного программирования [Bazaraa, Shetty, 1979: p. 7].
23 Переменная options на самом деле является структурой. В данном случае умение работать со структурами не требуется, можно просто следовать приведенным правилам заполнения, просмотра и использования управляющей структуры options [Anufriyev et al., 2005: p. 258]. Любознательные читатели могут подробнее освоить работу со структурами данных по многочисленной литературе (см., например, [Govorukhin, Tsibulin, 2001: p. 315-316; Anufriyev et al., 2005: p. 403-421; D’yakonov, 2008: p. 264-268]).
24 Ограничивать количество вызовов функций и число итераций имеет смысл, если есть опасение, что получить решение не удастся из-за расхождения вычислительного процесса. В некоторых случаях приходится уменьшать точность, например, если вычисление исследуемой функции занимает много времени, а требуется получить только несколько первых значащих цифр ответа [Anufriyev et al., 2005: p. 260]. (Здесь же заметим, что, на наш взгляд, используемый Ануфриевым и др. термин «расхождение» применяется в отношении вычислительных процессов крайне редко; в литературе читатель гораздо чаще встретит «расходимость» или «отсутствие сходимости» вычислительного процесса).
25 Для некоторых задач может оказаться полезной дополнительная возможность функции fminbnd (и, кстати, fminsearch) поддерживать работу с функциями, зависящими от параметров. Эта возможность описана, например, в [Anufriyev et al., 2005: p. 264-265].
26 Предполагаем, что это значение также удовлетворяет экспериментальным данным с учетом их погрешности.
27 В нем реализован модифицированный алгоритм Нелдера – Мида [Gartman, Klushin, 2020: p. 296].
About the authors
M. V. Glagolev
Lomonosov Moscow State University; Institute of Forest Science, Russian Academy of Sciences; Yugra State University
Author for correspondence.
Email: m_glagolev@mail.ru
Russian Federation, Moscow; Uspenskoe, Moscow Region; Khanty-Mansiysk
A. F. Sabrekov
Yugra State University
Email: m_glagolev@mail.ru
Russian Federation, Khanty-Mansiysk
D. V. Il’yasov
Yugra State University
Email: m_glagolev@mail.ru
Russian Federation, Khanty-Mansiysk
References
- Alton P.B. 2011. How useful are plant functional types in global simulations of the carbon, water, and energy cycles? J. Geophys. Res., 116: G01030. doi: 10.1029/2010JG001430.
- Anufriyev I.E., Smirnov А.B., Smirnova Е.N. 2005. MATLAB 7. BKHV-Peterburg, Saint Petersburg, 1104 р. (in Russian). [Ануфриев И.Е., Смирнов А.Б., Смирнова Е.Н. 2005. MATLAB 7. СПб.: БХВ-Петербург. 1104 с.].
- Atkinson B., Mavituna F. 1983. Biochemical engineering and biotechnology handbook. The Nature Press, 1119 p.
- Bard Y. 1974. Nonlinear Parameter Estimation. Academic Press, New York etc.
- Bazaraa M.S., Shetty C.M. 1979. Nonlinear Programming Theory and Algorithms. John Wiley and Sons, New York etc.
- Brandt S. 1999. Data Analysis. Statistical and Computational Methods for Scientists and Engineers. Springer-Verlag, New York Inc., 652 p.
- Bray H.G., White K. 1957. Kinetics and Thermodynamics in Biochemistry. J. &. A. Churchill Ltd, London, 343 p.
- Bunday B.D. 1984. Basic optimization methods. Edward Arnold (Publishers) Ltd., London.
- Chen K., Giblin P., Irving A. 1999. Mathematical explorations with MatLab. Camfridge University Press, Camfridge etc.
- Davis R.A. 2024. Practical Numerical Methods for Chemical Engineers Using Excel with VBA. Coppell (TX).
- Dorofeev A.G., Glagolev M.V., Bondarenko T.F., Panikov N.S. 1992. Unusual kinetics of growth of Arthrobacter globiformis and its explanation. Mikrobiologiya, 61(1): 33-42.
- Draper N.R., Smith H. 1981. Applied regression analysis. JOHN WILEY & SONS, New York etc.
- D’yakonov V.P. 2008. MATLAB 7.*/R2006/R2007. Self-study guide. DMK Press, Moscow, 768 р. (in Russian). [Дьяконов В.П. 2008. MATLAB 7.*/R2006/R2007. Самоучитель. М.: ДМК Пресс. 768 c.].
- Efron B. 1979. Bootstrap methods: another look at the jackknife. The Annals of Statistics, 7(1): 1-26.
- Engeln-Mullges G., Uhlig F. 1996. Numerical Algorithms with Fortran. Springer, Berlin etc.
- Gartman T.N., Klushin D.V. 2020. Modeling Chemical Engineering Processes. Principles of Using Computer Mathematics Packages. Lan', Saint Petersburg, 404 р. (in Russian). [Гартман Т.Н., Клушин Д.В. 2020. Моделирование химико-технологических процессов. Принципы применения пакетов компьютерной математики. СПб.: Лань. 404 с.].
- Gerald C.F., Wheatley P.O. 1994. Applied Numerical Analysis. ADDISON-WESLEY PUBLISHING, Reading (MA) etc.
- Glagolev M.V. 2004. Principles of quantitative theory for methane generation anf methane consumption processes in the soil. In: Mires and Biosphere (Proc. 3rd School Session, 13-16 September, 2004), pp. 39-52, Tomskij CNTI Pub., Tomsk (in Russian). [Глаголев М.В. 2004. Элементы количественной теории процессов образования и потребления метана в почве // Болота и биосфера (Материалы Третьей Научной школы). С. 39-53.]
- Glagolev M.V. 2010. CH4 emission from bog soils of Western Siberia: from soil profile to region. Lomonosov Moscow State University: dis. cand. of biol. sciences. Moscow. 211 p. (in Russian). [Глаголев М.В. 2010. Эмиссия СН4 болотными почвами Западной Сибири: от почвенного профиля до региона: дис. … канд. биол. наук. М.: Московский государственный университет им. М.В. Ломоносова (МГУ).]
- Glagolev M.V. 2021. Mathematical modeling of microorganism growth (analytical approach). Environmental Dynamics and Global Climate Change, 12(2): 107-122. doi: 10.17816/edgcc90125
- Glagolev M.V., Faustova E.V., Sabrekov A.F., Terentieva I.E. 2018. Numerical solution of biokinetic equations in the courses "General Ecology" and "Modeling of Biological Processes". Vol. I. Ordinary differential equations. "KDU", "Universitetskaya kniga", Moscow, 142 р. (in Russian). [Глаголев М.В., Фаустова Е.В., Сабреков А.Ф., Терентьева И.Е. 2018. Численное решение уравнений биокинетики в курсах «Общая экология» и «Моделирование биологических процессов». Том I. Обыкновенные дифференциальные уравнения. М.: «КДУ», «Университетская книга». 142 с.].
- Glagolev M.V., Filippov I.V. 2011. Measuring greenhouse gas fluxes in wetland ecosystems. Khanty-Mansiysk, 220 р. (in Russian). [Глаголев М.В., Филиппов И.В. 2011. Измерение потоков парниковых газов в болотных экосистемах. Ханты-Мансийск. 220 с.].
- Glagolev M.V., Sabrekov A.F. 2019. On several ill-posed and ill-conditioned mathematical problems of soil physics. In: IOP Conference Series: Earth and Environmental Science. International Conference on Key Concepts of Soil Physics: Development, Future Prospects and Current Applications, p. 012011, Institute of Physics Publishing. doi: 10.1088/1755-1315/368/1/012011
- Glagolev M.V., Sabrekov A.F., Terentieva I.E. 2017. Reply to A.V. Smagin: IV. Surface diffusion or random noise? Environmental dynamics and global climate change, 8(1): 55-65.
- Glagolev M.V., Smagin A.V. 2005. Matlab Applications for Numerical Simulations in Biology, Ecology and Soil Science. Moscow St. Univ., Moscow. 200 p. (in Russian). [Глаголев М.В., Смагин А.В. 2005. Приложения MATLAB для численных задач биологии, экологии и почвоведения. М.: МГУ им. М.В. Ломоносова. 200 с.].
- Glagolev M.V., Terentieva I.E., Sabrekov A.F., Il’yasov D.V., Zamolodchikov D.G., Karelin D.V. 2023. Mathematical models of methane consumption by soils: A review. Environmental Dynamics and Global Climate Change, 14(3): 145-166 (in Russian). doi: 10.18822/edgcc622937
- Govorukhin V., Tsibulin V. 2001. Computer in mathematical research. Piter, Saint Petersburg, 624 р. (in Russian). [Говорухин В., Цибулин В. 2001. Компьютер в математическом исследовании. СПб.: Питер. 624 с.].
- Grossman S.I., Turner J.E. 1974. Mathematics for the Biological Sciences. Collier Macmillan Publishers, London, 512 p.
- Ivanitskiy G.R. 2001. Time running out. Nauka-Press, Moscow. 208 p. (in Russian). [Иваницкий Г.Р. 2001. Убегающее время. М.: Наука-Пресс. 208 с.]
- Johnson K.J. 1980. Numerical methods in chemistry. Marcel Dekker, INC., New York, Basel, 503 p.
- Johnson N.L., Kotz S., Balakrishnan N. 1994. Continuous Univariate Distributions. Vol. 1. JOHN WILEY & SONS, INC, New York etc.
- Johnson N.L., Kotz S., Balakrishnan N. 1995. Continuous Univariate Distributions. Vol. 2. JOHN WILEY & SONS, INC, New York etc., 784 p.
- Korobov V.I., Ochkov V.F. 2009. Chemical Kinetics: An Introduction with Mathcad/Maple/MCS. Goryachaya liniya-Telekom, Moscow, 384 p. (in Russian). [Коробов В.И., Очков В.Ф. 2009. Химическая кинетика: введение с Mathcad/Maple/MCS. М.: Горячая линия-Телеком. 384 с.]
- Lee Y.-K. 1981. The Use of Algal-Bacterial Mixed Cultures in the Photosynthetic Production of Biomass. In: Mixed Culture Fermentations, (M.E. Bushell, J.H. Slater, eds.), p. 151-172, Academic Press, London etc.
- Ljung L. 1987. System Identification: Therory for the User. Prentice-Hall, Upper Saddle River, NJ.
- Lokshina L.Ya., Vavilin V.A., Litti Yu.V., Glagolev M.V., Sabrekov A.F., Kotsyurbenko O.R., Kozlova M.A. 2019. Methane Production in a West Siberian Eutrophic Fen is Much Higher than Carbon Dioxide Production: Incubation of Peat Samples, Stoichiometry, Stable Isotope Dynamics, Modeling. Water Resources, 46(S1): S110-S125. doi: 10.1134/S0097807819070133
- Mamikhin S.V., Qiu W., Lipatov D.N., Manakhov D.V., Paramonova T.A., Stolbova V.V., Shcheglov A.I. 2025. Equidosimetric approach in ecology and tools for its implementation. Environmental Dynamics And Global Climate Change, 16(4), 144-151. doi: 10.18822/edgcc698394
- Mathews J.H., Fink K.D. 1999. Numerical Methods Using MATLAB. Prentice Hall, Upper Saddle River.
- Matveyev N.М. 1963. Differential equations. Izdatel’stvo Leningradskogo universiteta, Leningrad. (in Russian). [Матвеев Н.М. 1963. Дифференциальные уравнения. Л.: Издательство Ленинградского университета.]
- Mosteller F., Tukey J.W. 1977. Data Analysis and Regression. Addison-Wesley, Reading (MA) etc.
- Murray J.D. 2002. Mathematical Biology. Vol. I. Springer-Verlag, New York etc., 576 p.
- Myshkis A.D. 1964. Lectures on higher mathematics. Nauka, Moscow. 608 p. (in Russian). [Мышкис А.Д. 1964. Лекции по высшей математике. М.: Наука. 608 с.]
- Panikov N.S., Blagodatsky S.A., Blagodatskaya J.V., Glagolev M.V. 1992. Determination of microbial mineralization activity in soil by modified Wright and Hobbie method. Biology and Fertility of Soils, 14(4): 280-287.
- Panikov N.S., Paleeva M.V., Kulichevskaya I.S., Glagolev M.V. 1993. The contribution of bacteria and fungi to CO2 emissions from soil. In: Soil emission, pp. 33-51, Pushchino Scientific Center, Pushchino (in Russian). [Паников Н.С., Палеева М.В., Куличевская И.С., Глаголев М.В. 1993. Вклад бактерий и грибов в эмиссию СО2 из почвы // Дыхание почвы. Сборник научных трудов. Пущино: Пущинский научный центр. С. 33-51.].
- Pirt S.J. 1975. Principles of Microbe and Cell Cultivation. Blackwell Scientific Publications, Oxford etc., 274 p.
- Prokhorov А.М. (ed.). 1983. Soviet Encyclopedic Dictionary. Soviet Encyclopedia, Moscow, 1600 p. (in Russian). [Прохоров А.М. (ред.) 1983. Советский энциклопедический словарь. М.: Сов. энциклопедия. 1600 с.]
- Prokhorov Yu.V. (ed.) 1988. Mathematical Encyclopedic Dictionary. Soviet Encyclopedia, Moscow, 847 p. (in Russian). [Прохоров Ю.В. (ред.) 1988. Математический энциклопедический словарь. М.: Сов. энциклопедия. 847 с.]
- Romanovskiy Yu.М., Stepanova N.V., Chernavskiy D.S. 1975. Mathematical modeling in biophysics. Nauka, Moscow, 344 p. (in Russian). [Романовский Ю.М., Степанова Н.В., Чернавский Д.С. 1975. Математическое моделирование в биофизике. М.: Наука. 344 с.].
- Rumshiskiy L.Z. 1971. Mathematical processing of experimental results. Nauka, Moscow, 192 p. (in Russian). [Румшиский Л.З. 1971. Математическая обработка результатов эксперимента. М.: Наука. 192 с.].
- Ryan T.P. 1997. Modern regression methods. JOHN WILEY & SONS, New York etc.
- Seinfeld J.H., Lapidus L. 1974. Mathematical Methods in Chemical Engineering. Vol. III: Process Modelling, Estimation and Identification, 250 pp. Prentice-Hall, Englewood Cliffs, N.Y.
- Shampine L.F., Gladwell I., Thompson S. 2003. Solving ODEs with Matlab. Cambridge University Press, Cambridge etc.
- Stepanov V.V. 1958. Course of the differential equations. Fizmatgiz, Moscow. (in Russian). [Степанов В.В. 1958. Курс дифференциальных уравнений. М.: Государственное издательство физико-математической литературы.]
- Ugodchikov G.A. 1975. Research of a mathematical model of bacterial biomass growth dynamics. In: Application of mathematical methods in microbiology, pp. 187-198, NTs bio. issledovaniy АN SSSR, Pushchino. (in Russian). [Угодчиков Г.А. 1975. Исследование математической модели динамики роста биомассы бактерий // Применение математических методов в микробиологии. Пущино: НЦ био. исследований АН СССР. С. 187-198.]
- Vasil’eva G.K., Surovtseva E.G., Semenyuk N.N., Glagolev M.V., Panikov N.S. 1995. A method for enumerating chloroaniline-degrading microorganisms in soil proceeding from the substrate half-degradation period. Microbiology: 64(4), 480-488.
Supplementary files












