• Мнения
  • |
  • Обсуждения
Аксакал

Так ли уж точен компьютер? Размножение с точки зрения математики.

Большинство из нас считает, что компьютер является эталоном точности и непогрешимости. Еще бы, он способен провести вычисления по любой формуле и выдать результат с таким количеством знаков после запятой, что невольно задаешься вопросом: «Зачем столько? Кому может понадобиться такая точность? Наверное, только ученым-исследователям, рассчитывающим ядерные реакции или модель Вселенной. Мне-то она точно ни к чему!». Не спешите, возможно, что задача, которая не по зубам вашему компьютеру, рядом и вовсе не сложна на первый взгляд.

Давайте обратимся к биологии. Эта наука давно уже тесно сотрудничает с математикой, используя ее возможности для ответов на свои биологические вопросы. Вот, например, возьмем пару кроликов, естественно разнополых, и пустим их в большой загон. Запасы еды неограниченны, хищников нет. Сколько кроликов будет в загоне через месяц, год, десять лет? Если кролики вас мало интересуют, то можно рассмотреть вместо кроликов людей, а вместо загона — Землю. Своя рубашка ближе к телу?

Что будет с человечеством в будущем? Будет ли население Земли увеличиваться или уменьшаться? Этими вопросами ученые озаботились еще в восемнадцатом веке. В 1798 году Томас Роберт Мальтус, английский демограф и экономист, в своем трактате «О законе роста народонаселения» сделал вывод, что численность популяции растет по экспоненте, то есть в геометрической прогрессии. Будущее безоблачно? Как бы не так! Человеку нужно есть, пить, где-то жить, одним словом, потреблять ресурсы. А они вовсе не безграничны. Производство ресурсов растет со временем линейно, в арифметической прогрессии.

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

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

Х = С * Х * (1 — Х),
где Х — численность популяции в долях от максимально возможной при данных условиях, С — фактор роста, который определяет, сколько потомства дает, в среднем, одна пара особей. Это рекурсивная формула, в которой каждое последующее значение ряда зависит от предыдущего.

Несмотря на крайнюю простоту, логистическая модель оказалась весьма хорошим приближением для описания численности многих популяций. Действительно, если фактор роста меньше единицы, то популяция очень быстро погибает, несмотря на большую исходную численность. При факторах роста больше единицы численность популяции не возрастает неограниченно, а стабилизируется на определенном уровне. Чем больше фактор роста, тем больше стабильная численность популяции. Однако неограниченно возрастать фактор роста тоже не может. Если он превышает некоторое критическое значение, то популяция очень быстро погибает из-за нехватки ресурсов.

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

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

Для разных видов критическая плотность различна. Она может быть особенно низкой для долгоживущих хищников, которые перемещаются в поисках добычи на десятки километров. Например, критическая плотность для ондатр — всего лишь одна пара особей на тысячу квадратных километров. А для американского странствующего голубя на такую же площадь необходимо несколько сотен тысяч особей. К сожалению, этот вид, несмотря на кажущуюся многочисленность, перешел через критическую границу своей численности и вымер, несмотря на все усилия по охране этих птиц.

Вернемся к нашему логистическому уравнению. Давайте попытаемся определить, какой же фактор роста является критическим? Математически доказано, что если фактор роста находится в пределах от 1 до 3, то через некоторое количество итераций, то есть повторяющихся вычислений по логистической формуле, популяция стабилизируется. При факторе роста, равном трем, функция раздваивается — через определенное число итераций мы придем к ситуации, когда высокая популяция в один год сменяется низкой в следующий. Если фактор роста С = 3.45, то функция раздваивается снова, мы получаем четырехлетний цикл. Далее при росте С функция раздваивается все быстрее и быстрее и в точке С = 3.57 начинается хаос. Значения функции не будут иметь какой-либо периодичности или структуры. Здесь мы подошли еще к одной интересной теме — теории динамического хаоса. Но это уже выходит за рамки статьи.

Вам уже захотелось проверить все это на своем компьютере? Хорошо, запускаем Microsoft Excel. Давайте введем в ячейку А1 фактор роста, например 4. В ячейки A2 — начальное значение популяции, например 0.1. В ячейке A3 на нужно поместить формулу для расчета «=$A$ 1*A2*(1-A2)». Давайте попробуем для проверки посчитать это же выражение, но предварительно раскроем скобки: Х = С * (Х — Х*Х). С первого взгляда это кажется абсурдным — зачем два раза считать одно и тоже? Поверьте, это принципиально важно. Итак, в ячейку В2 заносим такое же значение, как в А2, а в В3 — формулу «=$А$ 1*(B2-B2*B2)». На всякий случай посчитаем разность между двумя выражениями: в С3 поместим формулу разности «=A3-B3». Понятно, что мы ожидаем увидеть там нули, но давайте удостоверимся. Итак, копируем диапазон A3: C3 вниз раз сто и смотрим, что у нас происходит.

Вот сюрприз! Уже с шестой-седьмой строки нуля в разности нет! Более того, разность растет и на пятидесятом шагу, а может быть и раньше, уже сравнима с нашими числами. Еще более удивительно, что разные компьютеры могут давать разные результаты!

Возникает вопрос — какое же значение верно? А никакое! Начиная с определенной итерации, все современные компьютеры дают неверный результат. А причина проста — несмотря на, казалось бы, огромную точность, компьютер все же округляет значения. Пусть в десятом, двадцатом, пятидесятом знаке, но округляет. При итерационных вычислениях эта ошибка быстро накапливается и искажает данные. Вы все еще считаете, что точность компьютера слишком высока?

Статья опубликована в выпуске 29.03.2008

Комментарии (1):

Чтобы оставить комментарий зарегистрируйтесь или войдите на сайт

Войти через социальные сети:

  • Олег, один нюанс: в рассматриваемом случае надо говорить не столько о точности компьютера, сколько о точности (заданной по умолчанию!) программы Microsoft Excel.
    А что мешает нам задать требуемую точность вычислений, разумеется, в пределах возможностей программы Excel и центрального микропроцессора ПК (например, установив предельное число итераций и величину относительной погрешности)?
    -Excel 2003: Сервис –> Параметры… –> вкладка Вычисления: установить флажок «итерации», задать «Предельное число итераций» (по умолчанию 100) и/или «Относительную погрешность» (по умолчанию 0,001).
    -Excel 2007: кнопка «Office» –> Параметры Excel –> Формулы –> Параметры вычислений: установить флажок «Включить итеративные вычисления», задать счетчиком «Предельное число итераций» (по умолчанию 100) и задать «Относительную погрешность» (по умолчанию 0,001).

    С рекурсивными формулами часто бывают «неожиданные сюрпризы»…