Страница 2 из 36
Многие студенты помогали, как в качестве критиков, так и в качестве экспериментаторов, пытаясь решать предлагаемые задачи, вычитывая текст, задавая много вопросов. Несмотря на все старания, некоторые ошибки наверняка просочились, пожалуйста, сообщите автору обо всем, что сочтёте неверным.
Многие из упражнений и проектов относятся к компьютерному математическому пакету MATLAB. Изучение базовых команд этого пакета для использования его в качестве мощного калькулятора является простым и полезным делом. Когда потребуются более сложные команды для решения упражнений, примеры обычно будут приводиться в постановках задач. Таким образом модели будут постепенно усложняется с применением специализированного программного обеспечения.
MATLAB по сути является полноценным языком программирования с отличными графическими возможностями. Мы воспользовались этими функциями, чтобы предоставить несколько программ, упрощая изучение математических моделей для начинающих. В упражнениях и проектах используются некоторые программы и файлы данных, приводимые ниже.
Готовые тексты программ приводятся в целях минимизации необходимого багажа знаний синтаксиса MATLAB. Чтобы запустить большинство программ ниже, просто скопируйте их из электронного варианта книги или введите в окне редактора скриптов MATLAB.
Можно просто сохранить текст программы в файл с расширением m. Для запуска такого скрипта в окне водится имя запускаемого файла. После запуска будет задан ряд вопросов о конструируемых моделях и их параметрах. Команда help имя_файла также предоставляет краткое описание функций программы, получаемое из комментариев в первых строках программы. Поскольку m-файлы являются текстовыми файлами, они могут быть прочитаны и изменены любым заинтересованным пользователем.
Некоторые m-файлы определяют функции, которые принимают аргументы. Например, такая команда, как compseq(seq1,seq2), запускает программу compseq.m для сравнения двух последовательностей ДНК seq1 и seq2. Набрав help compseq, можно увидеть объяснение синтаксиса такой функции. A mat-файл содержит данные, доступ к которым возможен только из MATLAB. Чтобы загрузить такой файл, скажем, seqdata.mat, введите load seqdata. Имена всех новых переменных, которые будут созданы, можно увидеть вводя команду who, в то время как значения, хранящиеся в этих переменных, можно увидеть просто вводя имя переменной.
Некоторые файлы данных могут быть предоставлены в виде m-файлов, тогда вспомогательные комментарии и пояснения сохраняются вместе с данными. Для них запуск m-файла создает переменные, так же, как и загрузка mat-файла. Комментарии можно прочитать с помощью любого текстового редактора.
В ходе выполнения задач для самостоятельного решения предлагается использовать следующие файлы скриптов MATLAB, доступных из открытых источников:
aidsdata.m – содержит данные числа случаев синдрома приобретенного иммунодефицита;
cobweb.m и cobweb2.m – рисуют графики с паутинной диаграммой для итераций модели с одной популяцией; первая программа оставляет все рисуемые линии, а вторая программа постепенно стирает их;
compseq.m – функция сравнивает две последовательности ДНК, получая частотную таблицу количества фрагментов с каждой из возможных базовых комбинаций;
distances.m – функция вычисляет расстояния Джукса-Кантора, 2-параметрическое расстояние Кимуры и логарифмическое расстояния между всеми парами в коллекции последовательностей ДНК;
distJC.m, distK2.m и distLD.m – функции вычисляют расстояние Джукса-Кантора, 2-параметрическое расстояние Кимуры и логарифмическое расстояние для одной пары последовательностей, описываемых частотным массивом сайтов ДНК с каждой комбинацией оснований;
flhivdata.m – содержит последовательности ДНК гена оболочки вируса иммунодефицита человека из «случая стоматолога во Флориде»;
genemap.m – моделирует данные тестового скрещивания для проекта генетического картирования, используя гены мухи или мыши;
genesim.m – производит временной график частоты аллелей гена в популяции фиксированного размера; относительные значения приспособленности для генотипов могут быть установлены для моделирования естественного отбора;
informative.m – функция находит участки в выровненных последовательностях ДНК, которые информативны для метода максимальной экономии;
longterm.m – рисует диаграмму бифуркации для модели с одной популяцией, показывая долгосрочное поведение по мере изменения значения одного параметра;
markovJC.m и markovK2.m – эти функции осуществляют получение марковской матрицы Джукса-Кантора или 2-параметрической модели Кимуры с заданными значениями параметров;
mutate.m и mutatef.m – моделирует мутации последовательности ДНК по марковской модели замещения оснований; вторая программа является функциональной версией первой;
nj.m – функция реализует алгоритм присоединения соседей для построения дерева из массива расстояний;
onepop.m – отображает графики итераций модели с одной популяцией;
primatedata.m – содержит последовательности митохондриальной ДНК из 12 приматов, а также вычисленные расстояния между ними;
seqdata.mat – содержит смоделированные данные последовательности ДНК;
seqgen.m – функция генерирует последовательности ДНК с заданной длиной и распределением оснований;
sir.m – отображает итерации эпидемиологической модели SIR, включая графики временной и фазовой плоскости;
twopop.m – отображает итерации 2-популяционной модели, включая графики временной и фазовой плоскости.
Глава 1. Динамическое моделирование разностными уравнениями
Независимо от того, исследуем ли мы рост числа выпускников математических специальностей, взаимодействие с работодателями, эволюцию рабочих программ классических курсов, передачу фундаментальных идей или распространение фейков, дидактические системы характеризуются изменениями и адаптацией. Даже когда они кажутся постоянными и стабильными, это часто является результатом баланса тенденций, толкающих системы в разных направлениях. Большое количество взаимодействий и конкурирующих тенденций может затруднить просмотр полной картины сразу.
Как мы можем понять такие сложные системы, как те, которые возникают в социальных науках? Как мы можем проверить, достаточно ли нашего предполагаемого понимания ключевых процессов, чтобы описать, как ведет себя система? Математический язык предназначен для точного описания, и поэтому описание сложных систем часто требует математической модели.
В этой главе мы рассмотрим некоторые способы, которыми математика используется для моделирования динамических процессов в обучении математике. Простые формулы связывают, например, количество абитуриентов в определенном году с выпускниками последующих лет. Мы учимся понимать последствия, которые можно прогнозировать, составляя уравнение, средствами математического анализа, при этом наша формализация может быть проверена эмпирическими наблюдениями. Хотя многие из моделей, которые мы рассматриваем, могут на первый взгляд показаться грубыми упрощениями, их сила в простоте. Чем проще модель, тем яснее становятся предсказываемые её последствия исходя из самых базовых предположений.
Начнем с того, что сосредоточимся на моделировании того, как количество выпускников физико-математических классов растёт или сокращается с течением времени. Поскольку математические модели должны основываться на вопросах, вот несколько вопросов, которые следует учитывать: почему число выпускников иногда растёт, а иногда сокращается? Должны ли объемы выпусков вырасти до такой степени, что они станут неустойчиво большими, а затем сойдут до нуля? Если нет, то должно ли количество выпускников достичь некоторого равновесия? Если равновесие существует, какие факторы ответственны за него? Является ли такое равновесие настолько тонким, что любое нарушение может положить ему конец? Что определяет, следует ли данная тенденция одному из этих курсов или другому?