Немедленно можно проверить, правильно ли встали библиотеки: печатаем словечко import и имя библиотеки, как показано выше. Если нет никакого сообщения об ошибке – с библиотекой всё в порядке.
Далее открываем меню File и загружаем текст программы из
Test_Exponent_1.py. Экран выглядит приблизительно так:
Наши параметры? Население Земли в 1890 году по данным UNESCO 1'531 млн человек. Средняя рождаемость в ХХ веке – 22 ребёнка на 1'000 населения, средняя смертность – 9.5.
Что программа делает? Сначала, загружаются данные UNESCO о населении Земли из файла Population_calibration.csv . Далее, создаём себе вектор значений T с циферками от 1890 по 2200 включительно, всего 311 чисел. Для каждого значения t из массива T вычисляем население по формуле {3.2} и заносим в массив P.
Последние 13 строчек программы выполняют рисование, сохраняют полученный график в файл и выводят на экран. Запускаем программу клавишей <F5>. На экране появляется вот такое окошко:
Сразу заметим, что график – «живой», а не картинка. Разберитесь с кнопочками в нижней левой части окошка. Они позволяют рассматривать всё в деталях и сохранять увиденное.
У данных UNESCO о численности населения имеется погрешность: примерно один-два процента, или ±100 млн человек. Почему так, большой роли для нашего изложения не играет, а детали можно посмотреть в статье Нико Кейлмана [13].
Уравнение {3.2} – аналитическое решение. Теперь модифицируем программу, добавив решение численное. Интегрирование станем выполнять методом Рунге-Кутты, используя библиотеку Scipy. В Цифровом Приложении имеется программа \Chapter 03\
Test_Exponent_2.py
В общем, никакой белой и чёрной магии тут нет. Все необходимые данные мы вынесли в отдельный класс Population, задаётся то же начальное значение 1531 млн человек для 1890 года, и такие же коэффициенты рождаемости и смертности. Производная из системы {3.1} считается в явном виде, а дальше сформированные значения передаются стандартной функции интегрирования из пакета Scipy.
Посмотрим на результат в выполнения программы. Для сравнения, на том же графике присутствует и аналитическое решение.
Численное и аналитическое решения совпадают с точностью 8 знаков, то есть в миллион раз точнее, чем регистрация рождений и смертей в Индии. Если не видно на графиках, программа выводит в консоль все числа – убедитесь сами.
С 1972 года существовали критики «Пределов роста», да и сейчас таковые имеются, критикующие так:
«Не знаю насчёт текущей версии, но первая модель включала взрывные экспоненциальные ошибки. ЕСЛИ ваша модель такая же как и Форрестера, с экспонентами везде, запустите на 40 лет, и ошибки разорвут вам экран, так что «катастрофа» будет всегда, вне зависимости, от того, какие данные вы туда вставите. Я это говорил Форрестеру на первой конференции в октябре 1971 года, но это не остановило шарлатанские попытки пропагандировать его чепуху.»
(пользователь «karlmagnus» 31 мая 2007 года)
Что можно ответить на такое? Действительно, в пятидесятые годы прошлого века численные методы имели некоторые проблемы, в том числе и с точностью вычислений. С пятидесятого по семьдесят первый – много воды утекло, например, кое-кто успешно слетал на Луну. Ладно, в Луну можно не верить, а астронавтов – снимали на ТВ в ангаре посреди Невады. Однако, DYNAMO использовали для проектирования «Боинга-747» и других знаменитых самолётиков, многие из которых летают и по сей день. Теми же методами считают мосты, небоскрёбы, подвески автомобилей и даже блок питания вашего компа. Не могу поверить, что «karlmagnus» пишет свои блоги на арифмометре.
Короче, если Ваш оппонент критикует современные методы решения дифференциальных уравнений, но не может указать конкретную ошибку в уравнениях или в коде – перед Вами типичный перец.
Заметим, что экспонента довольно плохо описывает поведение реального населения планеты Земля. В периоды с 1900 по 1950 годы и с 1990 года по сегодняшний день, наилучшее приближение – линейное, только прирост разный. Современный прирост – по 82 млн человек в год – держится уже четверть века.
Модифицируем программу: \Chapter 03\
Test_Exponent_3.py
Разница знатная. Если население Земли растёт по экспоненте, то к 2050 году нас будет 11.3 млрд человек. Если продолжит расти линейно – на миллиард с хвостиком меньше: «всего» 10.3 миллиарда. В 2100 году – 21.1 и 14.3 млрд народа, соответственно. Один крутой экомномист по фамилии ван-Хорнер даже предположил, что в 2025 году население планетки выйдет на бесконечность. По-моему, он с фантиками нас перепутал.
Поспешим успокоить читателей. По экспоненте растёт только население бактерий в чашках Петри, да и то – лишь в самом начале. Реальная функция несколько сложнее, хотя экспонента там тоже присутствует.
Впервые о свойствах уравнения {3.1} задумался в самом конце XVIII века английский доктор философии, математик, экономист и священник Т.Р.Мальтус [14]. За прошедшее с момента публикации время, чего только Роберту Мальтусу не приписали: от ненависти к бедным до крематориев в лагерях смерти Третьего Рейха. Извратили даже имя: хотя Мальтус при рождении был записан в церковной книге как «Томас Роберт Мальтус», однако имя Томас он не любил и был известен всем как Роберт. На самом деле, к работам добродушного священника о теории популяции все эти зверские «последователи Мальтуса» – от Спенсера до Ницше и Гитлера – отношения не имеют. Что же писал наш математик?
Начнем, пожалуй, с постулатов Мальтуса. Чтоб избегнуть разночтений, здесь и далее будем принципиально цитировать первую книгу, 1798 г. Викиложцы и прочие перцы часто пишут, что Мальтус «принял на веру» два постулата:
Производство продуктов питания возрастает как арифметическая прогрессия.
Население возрастает как геометрическая прогрессия.
Когда графики пересекутся, всем крышка! График даже откуда-то просочился в русскую Википедию.
На самом деле, викиложцы лукавят, a в книге Мальтуса чёрным по белому:
«I think I may fairly make two postulata.
First, That food is necessary to the existence of man.
Secondly, That the passion between the sexes is necessary and will remain nearly in its present state.»
«Я думаю, что можно принять на веру следующие два постулата:
Первое. Человеку надо есть, чтобы жить.
Второе. Тяга к представителям противоположного пола – это биологическая необходимость, и в будущем мало изменится.»
Это — постулаты Мальтуса, и ему они действительно очевидны. Как вам? Когда Мальтус защищал свой докторат то философии, он не только учил Логику, но и сдавал по ней экзамены на «отлично». Для него «postulata» — это в самом деле штуки самоочевидные каждому читателю и никаких доказательств не требующие. Мальтус, с магистерской степенью по математике, знал предмет очень так неплохо! В 1788 году, он закончил Кембриджский Колледж Иисуса «восьмым вранглером». Представьте себе, что на математической олимпиаде последних курсов МГУ, МИФИ, МФТИ и Бауманки – Вы заняли почётное восьмое место! Где-то так. Перед вранглерами – приподнимали академические четырёхугольные шляпы! От зависти к таланту и уважения к затраченным усилиям.
А как же про арифметическую и геометрическую прогрессию? А вот, там же в первой главе:
«Assuming then my postulata as granted, I say, that the power of population is indefinitely greater than the power in the earth to produce subsistence for man.»
Вот дословный перевод для современника Мальтуса из XVIII столетия:
«Если вы согласились с постулатами, я попытаюсь доказать, что сила роста человеческой популяции бесконечно превышает силу земли для производства человеческого пропитания.»
Для любителей лингвистики поясним, что в английском математическом тексте той поры «I say» — это как раз «попробуем доказать». А в нашем с Вами просвещённом XXI веке, математик или инженер написали бы так:
«Если вы согласились с постулатами, я попытаюсь доказать, что функция плотности человеческой популяции возрастает значительно быстрее, чем функция критической плотности популяции.»
Попробуем, по следам Мальтуса, доказать и мы. Уравнение {3.1} превращается:
Время у нас в годах, численность населения – в миллионах. Функции A и B измерять будем безразмерными единицами. И во времена Мальтуса, и кое-где даже сейчас, используется устаревшее «рождений на 100 тыс. населения» и, соответственно, «смертей на 100 тыс. населения», что очень неудобно, так как надо таскать за собой коэффициенты. Для нас же, A=0.001 – это тысяча смертей на миллион, или же 100 смертей на 100 тыс.
Для постоянных A и B – уравнение мы уже решили. Экспонента – вообще интересная функция. Снизу она ограничена нулём. То есть, при отрицательном коэффициенте воспроизводства (b-a), рано или поздно количество людей уменьшится до 10-6 миллиона, меньше одной особи, и популяцию придётся обнулить: «все вымерли». А вот сверху – ограничений нет никаких.
Уважаемые перцы! Когда у вас в следующий раз зачешется написать, что Мальтус принял экспоненциальный рост ничем не ограниченного населения как постулат и как-то хитро встроил в решение экспоненту, перекреститесь и накарябайте что-то более умное. Во-первых, это не «постулат», а доказанная математическая теорема, с конкретно описанными условиями. С дифференциальным уравнением в придачу. Во-вторых, там так и написано: «ничем не ограниченного» (про ограничения – несколько ниже). И пока вас не выбрали-таки старшим, ну или хотя бы восьмым вранглером, может стоит читать, как у Мальтуса написано…
Если бы Мальтус написал про экспоненты и на этом остановился, о Мальтусе мы сегодня и не вспоминали. Про экспоненты и логарифмы знал Джон Непер ещё в XVI веке!
Но Мальтус со товарищи двинулся дальше. Он предложил решить такое уравнение:
Здесь рождаемость b постоянна (смотрим второй постулат: секса хочется всегда!), а смертность пропорциональна населению, и обратно пропорциональна функции O(t). Последняя имеет размерность в миллионы человек, и называется оптимальной численностью популяции. Легко видеть, что если популяция P в точности равна O, то производная – ноль, а значит, население не уменьшается, и не увеличивается.
Если O(t) – константа, то {3.4} называется уравнением Ферхюльста. Бельгийский математик Пьер Франсуа Ферхюльст (Verhulst) написал его в XIX веке для рыбок.
Представьте себе, что у вас есть пруд, а в пруду живут зеркальные карпы. Каждый день вы забрасываете в пруд корма, достаточного для О взрослых особей. Если корма слишком много, излишки просто сгнивают. А если корма недостаточно – умирают и сгнивают «лишние» карпы, кому не досталось еды. Какова будет популяция в вашем пруду от времени?
Система {3.4.} решается аналитически:
В общем виде, решение Ферхюльста называется сигмоидой или логистической функцией и записывается так:
Проведём численное решение используя программу: \Chapter 03\
Test_Velhurst_4.py .
Отметим важное отличие логистической кривой от экспоненты. Бесконечного роста у функции Ферхюльста нет, а есть плавный выход на «полочку». Начиная с популяции 1530 млн человек в 1890 году, к 2200 году набирается 10.4 млрд, – и население стабилизируется.
Более того, у сигмоиды есть три участка. В начале, функция растёт вроде бы как экспонента, затем рост становится линейным, затем – рост замедляется, и функция выходит на асимптоту. Благодаря такому поведению, население планеты Земля с 1890 по 2015 описывается сигмоидой гораздо лучше, чем экспонентой. Я призываю читателей самим поиграть с программой и убедиться, что никаким подбором коэффициентов рождаемости и смертности экспоненту к реальным стат-данным подогнать не удастся. У вас либо слишком много народу между 1910 и 1970 годами, либо популяция «выстреливает» после 1980.
У сигмоиды есть и проблема. Поскольку посередине участок линейный, предсказать, как поведёт себя кривая справа – невозможно. Значение константы О в решении {3.5} или константы Right в решении {3.6} приходится подбирать из граничных условий, но ведь условий в будущем мы не знаем.
Начиная с программы \Chapter 03\
Test_Velhurst_5.py , мы навсегда распрощаемся с функцией экспоненты в чистом виде. Как и в программе World3, никакие входные данные или зависимости по экспоненте расти не будут. На конечной планете ничто не растёт до бесконечности. Итак, запускаем программу:
На диаграмме представлено четыре решения:
Численное решение, как выше.
Первое аналитическое (зелёные точки) – известнoe под псевдонимом «среднее предсказание ООН», с выходом на «полочку» около 11.5 млрд после 2100 года.
Второе аналитическое решение (красная линия) – оно же «максимальное предсказание» ООН.
Третье аналитическое решение (синяя линия) – уходит на асимптоту 40 млрд человек – но уже много после 2200 года.
Откуда у меня взялись 40 миллиардов? Из второй главы. Вспомним, что весь поток полезной энергии без разрушения биосферы – 2250 ТВт, а в 2015 году 7.3 млрд землян потребляли не менее 400 ТВт. Отсюда 7.3*2250/400 = 41 млрд.
Поглядим на это число поближе. Вот цитата из времён, когда «Пределов роста» ещё не было, а критиковали Мальтуса и его последователей:
«That the earth could maintain a thousand billions of people as easily as a thousand millions is a necessary deduction from the manifest truths that, at least so far as our agency is concerned, Matter is eternal and Force must forever continue to act.»
«То, что Земля может поддерживать жизнь одного триллиона человек так же легко, как одного миллиарда, легко вывести из того, что с точки зрения человека, Материя — вечна, и Сила Божия — тоже будет действовать вечно.»
Хенри Джордж, «Прогресс и бедность», 1879 год
Площадь земного шара – 5.101·108 км2. Распределив триллион человек, получим плотность населения 2'000 человек на км2. Многовато, но прецеденты уже есть: в Бангладеш, на каждом квадрате – 1'030 человек.
Однако, Бангладеш находится на суше, хотя его периодически затапливает. Поделим 1 триллион на площадь суши – 1.489·108 км2. Тогда, приходится говорить о плотности населения 6'700 человек на км2. Примерно как в современных мегаполисах, вроде Токио.
Заметим однако, что наш мегаполис простирается к вершинам Гималаев и до Южного полюса в Антарктиде. Оценки обитаемой суши разнятся у разных авторов. Действительно, при условии подвоза продовольствия и наличия неограниченного источника энергии, и Антарктида «обитаема» вполне. Для нашей простейшей прикидки достаточно считать обитаемой 50% площади суши, то есть плотность населения – удваивается: 13'400 человек на квадратном километре. Это уже экстрим, но в китайском Макао – 55'000.
Пусть население не отращивает жабры, а выращивает еду на суше. Площади потенциальных сельхозугодий в земной статистике отражены хорошо: 4.884·107 км2. На каждого из триллиона – по 49 м2, или пятачок земли размером 7х7 метров.
То есть, запихать один триллион на планету человек кое-как можно, поверим Хенри Джорджу на слово. Насчёт же «поддерживать жизнь» – позвольте усомниться.
Не будем планировать на триллион, а зададимся целью прокормить 40 млрд человек, используя исключительно возобновляемые источники энергии. В пику Хенри Джорджу заметим, что вариант 40 млрд кое-как, с большой натяжкой, – реализуем, а вот триллион – сродни космооперным тераваттам IEA, с которыми мы разбирались в статье "Два перца и тринадцать шариков" [
https://aftershock.news/?q=node/393532 ]. Наш Хенри оказался не Джорджем, а перцем!
Во второй главе мы подсчитали, что на душу в год надо 480 кг зерновых, Распахать, естественно, придётся все потенциальные сельхозугодья. С квадратного километра надо собирать 40·109*480/4.884·107 = 400·103 кг, то есть по 4 тонны с гектара. На душу населения приходится по 12 соток в среднем.
Тяжеловато, но прецеденты есть. В восьмидесятые годы Джон Джевонс организовал контору «Экологическая инициатива» [
http://www.johnjeavons.info/index.html ]и пытался доказать, что человека можно кормить с 2.6 соток [ напомним, что в статье про перцев мы вычилили абсолютный теоретический предел: 2.2 сотки ]. Оценка была последовательно повышена до 4 соток, затем – до десяти. Сам Джевонс, правда, с десяти соток не живёт, а зарабатывает на жизнь продажей книг и DVD и проведением семинаров по интенсивному выращиванию «органических» сельхозпродуктов. В первых, экстремистских, вариантах ведения органического хозяйства, предполагалась утилизация умерших в компост, примерно как в Юго-Восточной Азии позапрошлого века. Типичный вьетнамский биореактор показан ниже.
Нет комментариев