353

Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Embed Size (px)

Citation preview

Page 1: Чен, Джиблин, Инвирг - Matlab в математических исследованиях
Page 2: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

M A T L A BВ МАТЕМАТИЧЕСКИХ ИССЛЕДОВАНИЯХ

Page 3: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

M A T H E M A T I C A L

E X P L O R A T I O N S

W I T H M A T L A B

Ke Chen, Peter Giblin, Alan Irving

I CAMBRIDGE1 UNIVERSITY PRESS

Page 4: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Перевод с английскогоВ. Е. Кондрашова и С. Б. Королева

Москва «Мир» 2001

Page 5: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

УДК 519.68ББК 32.973

443

ЧенК., ДжиблинП., Ирвинг А.443 MATLAB в математических исследованиях: Пер. с англ.—

М.: Мир, 2001.-346с. ил.

ISBN 5-03-002821-8Это один из последних зарубежных учебников по использованию

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

Для студентов, аспирантов и преподавателей вузов, а также дляпрактиков-вычислителей.

ВБК 32.973

Редакция литературы по математическим паукам

© Cambridge University Press 1999ISBN 5-03-002821-8 (русск.) © перевод на русский язык,ISBN 0-521-63920-4 (англ.) оформление, «Мир», 2001

Page 6: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

От переводчиков

Книга эта — хорошо отработанный на практике учебный курс. Про-

зрачные по постановке и интересные по смыслу прикладные зада-

чи позволят читателю получить неформальное представление как

о возможных приложениях математики к задачам реальной жиз-

ни, так и об исключительной эффективности программирования

и методов визуализации, реализованных в МАТЪАВ'е. Авторы не

увлекаются использованием сложных команд пакета и в своих пред-

положениях о подготовке читателя не выходят за рамки того, что

так или иначе излагается по математике первокурсникам физико-

математических и технических факультетов вузов. Поэтому книга

как нельзя лучше подходит для первоначального знакомства с те-

перь уже трудно обозримыми приложениями математики к другим

отраслям знания и способами их реализации.

MATLAB —очень общая система многоцелевого назначения, ко-

торая вышла на рынок программных продуктов почти 20 лет на-

зад и с тех пор непрерывно совершенствовалась и расширялась,

так что изучать и применять ее можно по-разному. Но первона-

чально ее основу составляли алгоритмы решения систем линей-

ных уравнений и задач на собственные значения, разработанные

в 1970-х гг., откуда и произошло ее название «матричная лабора-

тория». Уже освоение только этих задач открывает перед пользо-

вателем очень большие возможности. Теперь она представляется

наиболее эффективной при проведении прикидочных расчетов и

при разработке (в поисках и апробации) новых алгоритмов. Сей-

час уже существует несколько десятков специальных приложений

к MATLAB'у, посвященных более узким проблемам. Это вычисле-

ния на языке формул, обработка сигналов и изображений, инже-

нерное программирование в виде блок-схем, нечеткая логика, ре-

шение экономических задач и многое другое. Но любое из этих

приложений можно изучать только после первоначального освое-

Page 7: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

6 От переводчиков

ния MATLAB'a —хотя бы в объеме этой книги. Англоязычный ин-терфейс системы не является существенным препятствием для ис-пользования MATLAB'a.

Большая часть приложений и многие команды MATLAB'a напи-саны на его простом, удобочитаемом программном языке и поэтомуполностью открыты для пользователя и могут быть модернизиро-ваны им в своих целях. Только код сравнительно немногих базо-вых команд, реализованных на языке С, недоступен ему, так чтоMATLAB можно рассматривать как почти открытый программ-ный продукт. Интерфейс MATLAB'a с С и Фортраном как по про-граммам, так и по данным позволяет, с одной стороны, использо-вать многие из написанных на этих языках процедур, а с другой —применять MATLAB при программировании на них. Большинствоприложений после их установки означает для пользователя про-сто расширение списка доступных ему команд. Излагаемый в книгематериал рассчитан на использование версий MATLAB'a не нижечетвертой, хотя авторы и не оговаривают этого явно. В пятой ипоследней, шестой (конец 2000 г.), версиях появились возможностии для объектного программирования — наиболее общего принципапостроения больших прикладных программ.

В настоящее время помимо MATLAB'a широкое распростране-ние получил ряд других программно-математических систем вы-сокого уровня - MAPLE, MATHEMATICA, MATH CAD, и они те-перь оказывают заметное влияние друг на друга. Например, систе-ма символьных вычислений MAPLE практически полностью (за ис-ключением ее привычных по начертанию символьных выдач) ужедавно включена в MATLAB. Но MATLAB, по-видимому, надолгоостанется первым среди них по возможностям получить численныерезультаты, поскольку он и многочисленные приложения к немусоздавались прежде всего для этих целей.

Программируя на Фортране или С, мы как бы складываем про-грамму из отдельных «кирпичиков* — элементарных команд, иформально для этого нужно лишь точно знать описание их ра-боты, что и дается разработчиками такого языка в обязательнойфирменной документации к нему. Здесь успех в реализации слож-ного алгоритма основан прежде всего на личном опыте специалиста

Page 8: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

От переводчиков 7

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

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

За рубежом вышли десятки учебников по MATLAB'y и прило-жениям к нему. Список последних изданий можно найти в интер-нете на сайте фирмы Math Works Inc. Там же можно познакомитьсяс рекламными материалами на все ее программные продукты. Рус-скоязычные издания по MATLAB'y, перечень которых приведен вконце книги, в основном следуют фирменной документации и содер-жат описание команд, а потому не очень подходят для первоначаль-ного ознакомления с системой, хотя они, несомненно, полезны тем,кто уже работает на MATLAB'e. Поэтому мы надеемся, что дан-ная книга найдет своих читателей среди студентов, преподавателейи тех специалистов-практиков, кто захочет использовать в своейповседневной работе эту одну из самых эффективных программно-математических систем — MATLAB. По мере его распространенияу нас обязательно появятся в ближайшие годы свои учебники поMATLAB'y и его приложениям.

Page 9: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

8 От переводчиков

Мы весьма признательны авторам книги за предоставленные

нам рабочие материалы английского издания в Т^Х'е и за список

замеченных ими опечаток. Наши собственные поправки немногочи-

сленны и оформлены в виде подстраничных примечаний.

Поскольку мы сами уже несколько лет используем MATLAB в

своей работе, нам будут интересны замечания и предложения чита-

телей, которые можно направлять электронной почтой в наш адрес

[email protected] и за которые мы заранее им благодарны.

В. Е. Кондратов,С. Б. Королев

Page 10: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Предисловие

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

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

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

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

Page 11: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

10 Предисловие

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

Подобно Галлии, книга делится на три части. Первая часть на-чинается с очень элементарного практического введения в особен-ности MATLAB'a, за которым следует ряд методических глав поработе с MATLAB'OM. В них читатель встретится с теми матема-тическими понятиями и на деле познакомится с теми методамиMATLAB'a, которые особенно пригодятся в последующих темати-ческих главах. Так, по ходу дела вводятся все стандартные про-граммные структуры и команды MATLAB'a: матрицы, целые чис-ла и элементы теории чисел, графическое представление кривыхна плоскости, подгонка данных и приближение функций по мето-ду наименьших квадратов, моделирование случайных распределе-ний, обыкновенные дифференциальные уравнения. Таким образом,студент, изучая возможные применения MATLAB'a, заодно ознако-мится с математикой, которая интересна сама по себе.

Во второй части содержится несколько учебных работ, называе-мых «исследованиями», которые основаны на ранее введенных по-нятиях, Матрицы используются при рассмотрении магических ква-дратов, перестановок и решений линейных систем; операции с целы-ми числами применяются при нахождении наибольших общих дели-телей множеств случайных чисел, при проверке чисел на простоту ив оценке способов тасования игральных карт; методы приближенийиспользуются при решении нелинейных уравнений и интерполяциии т.д. В каждом случае исследовательское отношение к учебномуматериалу поддерживается большим количеством упражнений каквычислительного, так и чисто математического характера.

Наконец, в третьей части содержится несколько примеров «по-строения моделей», где читателю дается возможность применитьнавыки, полученные в первой части. Математическое моделирова-ние не излагается здесь в законченном виде и требует некоторой сте-пени математической зрелости, которой студенты-первокурсникимогут и не обладать. Тем не менее мы полагаем, что имеющие-ся возможности MATLAB'a и важность самого моделирования какматематического искусства не позволяют нам упустить открываю-

Page 12: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Предисловие 11

щуюся возможность. На практике мы нашли, что студенты хорошосправляются с этими задачами.

В Ливерпуле мы требовали от студентов тщательной проработ-ки за шесть недель вводного материала (часть первая), а после это-го предлагали им выбрать для изучения любые три работы из вто-рой и третьей частей (но не менее одной из каждой). Двух недельоказывалось достаточно для выполнения каждой из работ, так чтовесь курс занимал двенадцать недель.

Мы, конечно, постарались важные вопросы распределить равно-мерно по всей книге. Но проницательный читатель обнаружит триразличных стиля в изложении исследовательских работ второй итретьей частей, ввиду многообразия подходов, которое мы считаемвполне здоровым явлением.

Книга дополнена приложениями, в которых приводятся крат-кий список команд MATLAB'a, информация о символьных вычис-лениях (не использующаяся явно в тексте книги) и о представленииMATLAB'a в Интернете, и, наконец, перечисляются по главам М-файлы, написанные авторами.

Как пользоваться книгой

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

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

Читатель, уже знакомый с МАТХАВ'ом, может сразу перейтик гл.2. В случае сомнений можно быстро освежить свои знания,выполнив упражнения в конце гл.1.

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

MATLAB может быть установлен на многих платформах. Дляопределенности предполагается, что читателю доступен MATLAB

Page 13: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

12 Предисловие

в среде Microsoft Windows. Если это не так, читатель может по-чувствовать некоторые неудобства на ранних стадиях при работе сфайлами и при редактировании командных строк в соответствии симеющейся платформой, но все М-файлы должны работать исправ-но, а материал самой книги от платформы не зависит. Распростра-нители книги дадут краткий обзор тех ключевых мест, в которыхместный читатель может сбиться с пути праведного.

Благодарности

Мы очень благодарны коллегам из Ливерпуля, которые помогалинам в подготовке этого курса и обеспечили доступ к материалу.Это Найджел Бэкхаус, Эрик Эдмонд, Тоби Холл, Нилл Керк, ДикВейт, Невилл Уотерс. Мы особенно благодарны студентам, слушав-шим курс в течение нескольких лет: их усилия помогли обнаружитьнеоднозначности в исследовательских работах и сделать материалболее дружественным и, надеемся, более точным, чем он был внача-ле. Все оставшиеся ошибки, конечно, на нашей совести. П. Джиблинтакже благодарит Университет Брауна в Провиденсе за его щедроегостеприимство во время написания части этой книги, а также ко-миссию Фулбрайта за оплату этой командировки.

Ливерпуль, октябрь 1998 Ке Чеп,Питер Джиблип,

Алан Ирвинг

MATLAB® —зарегистрированная торговая марка The Math Works,Inc.

Page 14: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Часть I

Основы

1. Введение 151.1. Первые шаги в MATLAB'e 151.2. Векторы и графики 181.3. Создание и редактирование скрипт-файлов 211.4. Получение распечаток 28Упражнения 28

2. Матрицы и комплексные числа 302.1. Векторы и матрицы 302.2. Комплексные числа 352.3. Динамика населения: матрица Лесли 37Упражнения 40

3. Целые числа 443.1. Цикл вычисления чисел Фибоначчи 443.2. Условный цикл: Зп + 1 или задача о граде 463.3. Евклидов алгоритм нахождения наибольшего общего

делителя 473.4. Теорема Ферма и степенной алгоритм 49Упражнения 523.5. Приложение 55

4. Графики и кривые 574.1. Полиномы 574.2. Простые примеры вычерчивания кривых 584.3. Полиномы Тейлора 614.4. Приближения с помощью функции polyfit 624.5. Задача о козе 644.6. Огибающие семейства линий 65Упражнения 684.7. Приложение 72

Page 15: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

14

Представление данных 745.1. Анализ данных 745.2. Приближение по методу наименьших квадратов 78Упражнения 855.3. Приложение 87

Вероятность и случайные числа 906.1. Генерирование случайных чисел 906.2. Случайные целые числа 926.3. Моделирование равномерных распределений 946.4. Моделирование нормальных распределений 946.5. Моделирование экспоненциальных распределений 95Упражнения 986-6. Приложение 100

Дифференциальные и разностные уравнения 1057.1. Обыкновенные дифференциальные уравнения

(ОДУ) 1057.2. Системы дифференциальных уравнений 1087.3. Разностные уравнения 111Упражнения 113

Page 16: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

1

Введение

1.1. Первые шаги в MATLAB'e

Если вы еще не работали с МАТЪАВ'ом, то, чтобы запустить его,надо сделать двойной щелчок вашей мышью на нужной пиктограм-ме (иконке) или спросить об этом у своего приятеля. Спросить уприятеля — часто самый быстрый путь получить помощь, и на бу-дущее мы советуем пользоваться этим, если в чем-то не удалосьразобраться самостоятельно. Если слова «щелчок» и «иконка* ни-чего вам не говорят, вам нужна дополнительная помощь по началамWindows. К тому же может случиться, что ваша система не исполь-зует Microsoft Windows и вам будет достаточно просто набрать в ко-мандной строке matlab и нажать клавишу <Enter>. Так будет, на-пример, если вы используете какую-либо систему типа UnixlK Еслизапуск прошел нормально, вы увидите приглашение MATLAB'а

для начала вычислений. В дальнейшем любая строка, начинающа-яся с >>, обозначает клавиатурный ввод для MATLAB'a: имеется ввиду, что вы наберете необходимое, но без знака >>, который сис-тема выводит автоматически.

1.1.1. Арифметика в MATLAB'e

В MATLAB'e есть основные арифметические операции: + (сложе-ние), - (вычитание), * (умножение) и / (деление). Степень обозна-чается через "" , так что набрав

» 5*5+12"2

и нажав <Enter>, получим

169

^ В дальнейшем мы будем делать в нужных местах специальные примечанияо редактировании и работе с файлами в среде, отличной от Windows.

Page 17: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

16 Глава 1. Введение

Не забывайте нажимать <Enter> после набора строки, чтобы по-слать ее для выполнения. Законы старшинства операций встроены,но в сомнительных случаях пользуйтесь круглыми скобками. На-пример, для строки

ans

Элементарные функции, известные вам по работе с ручнымикалькуляторами, здесь также реализованы. Выполните строки

» sqrt(5~2+12~2)

» expClogCl.7))

А чтО; думаете, даст sin(pi/2)? Попробуйте.На самом деле MATLAB имеет для числа тг встроенное значение

тг = 3-1415926... Просто наберите pi, когда оно вам потребуется.Попробуйте следующее:

>> pi>> format long>> pi>> format short

MATLAB выведет значительно больше значащих цифр, чем выда-ется по умолчанию в режиме format short.

1.1.2. Использование переменных

Вы можете приписать числовое значение «переменной» для исполь-зования в последующих вычислениях. Выполните

>> х=3

и получите

х =

Page 18: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

1.1. Первые шаги в MATLAB'e 17

Но можно получить и что-нибудь более полезное, например,

>> rad=2; ht=3;» vol=pi*ht*rad~2

vol =

37.6991

Обратите внимание, что первая строка содержит две «команды»и ни одна из них не выдает результата! Когда MATLAB встречаетинструкцию с символом ; (точка с запятой) в конце, он запрещаетвывод результата. Инструкция в действительности выполняется, ноее результат умалчивается, что вы можете проверить, выполнив

>> rad=4;» г ad

rad =

Использование символа ; позволяет избежать хаотического за-полнения экрана промежуточными результатами. Помните об этом,разбирая последующие примеры.

Не забывайте, что каждая переменная должна как-то получитьзначение прежде, чем вы сможете использовать ее в дальнейшихвычислениях. Так, после выполнения предыдущих примеров и стро-ки

» i = х~2 + 2*х*у + у~2

будет выдано примерно такое сообщение

??? Undefined function or variable у

Это не требует пояснений. После засылки у=4; повторное вычисле-ние f пройдет успешно.

Кстати отметим, что быстрый способ повторить предыдущуюстроку MATLAB'a —это нажимать клавишу «стрелка-вверх» (t) дотех пор, пока не выберется желаемая команда. Попробуйте это сей-час. Если исходная строка была не совсем правильной или же выхотите получить новую строку из сложной, но схожей с ней и вы-полненной ранее, вы можете воспользоваться этим же приемом. Вы-брав требуемую строку, используйте «стрелки-в-сторону» («— и —>•)

2-4196

Page 19: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

18 Глава 1. Введение

совместно с клавишей Delete, чтобы отредактировать ее нужнымобразом. В качестве упражнения попробуйте, используя предыду-щие строки, вычислить объем правильного круглого цилиндра срадиусом 2 и высотой 1/4. Вы получили тг?

При затруднениях с запоминанием уже заданных вами имен пе-ременных попробуйте выполнить who или whos. Попробуйте обе ко-манды. Вы узнаёте перечисленные переменные?

1.2. Векторы и графики

Одно из удовольствий, которое вы будете испытывать при изуче-нии MATLAB'a, состоит в простоте построения графиков. Основ-ные принципы таковы:

(i) выберите последовательность ж-значений, т.е. вектор значенийаргумента;

(ii) вычислите у = /(х), т.е. получите соответствующий вектор у-значений;

(iii) нарисуйте график у от х.

Прежде чем проделать это, стоит потратить немного времени, что-бы узнать кое-что о том, как MATLAB работает с векторами.

1.2.1. Векторы

Выполните следующие примеры, в которых все результаты будутвекторами. Не спешите, обдумывая каждый результат.

» и=[2,2,3]» и=[2 2 3]» v=[l,0,-l]>> w=u-2*v» range=l:13» odd=l:2:13» down=20:-0.5:0» even=odd+l» xgrid=0:.05:1; x=xgrid*pi» y=sin(x)

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

Page 20: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

1.2. Векторы и графики 19

образом, [1+1 2 3] означает то же, что и [2,2,3] , а [1 + 1 2 3] —то же, что и [1 ,1 ,2 ,3] !

Заметьте, что векторы могут быть любой длины. Они могутбыть строками, как выше, или векторами, подобными

>> w'ans =

О

2

5

где апостроф обозначает транспонирование (Т). В MATLAB'e век-торы трактуются просто как специальный случай матриц, о кото-рых вы узнаете значительно больше в следующей главе.

Обратите внимание, что произошло, когда представляемый век-тор оказался слишком длинным и не уместился в одной строке.Тогда система сначала отображает столько элементов, сколько ихумещается в строке, а остальные переносит на следующие строки.Элементы вектора-строки трактуются как «столбцы».

Элементарная функция вектора х, такая, как sin(x), также яв-ляется вектором того же типа. Мы можем использовать этот фактпри создании графиков функций, как показано в следующем раз-деле.

MATLAB знает как перемножать матрицы соответствующихразмеров. Это будет обсуждаться подробнее в следующей главе. Асейчас попробуйте выполнить строки

wJ*w

>> u*u

Вы понимаете смысл полученных результатов? Почему последняястрока не работает?

Пусть теперь вы хотите получить множество значений z, данноевыражением z ~ у2, где вектору у уже были присвоены некоторыезначения. Из предыдущего опыта вы понимаете, что

» z=y*y

не приемлемо для MATLAB'a. Присвоение

>> z=y*yJ

Page 21: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

20 Глава 1. Введение

выполняется системой, но вычисляется как скалярное произведениеу -у! Чтобы заставить MATLAB перемножить векторы поэлемент-но, выполните

» z=y.*y

где точка перед символом * есть ключевой признак поэлементнойоперации. Подобным же образом u./v и у.""2 понимаются как по-элементные операции над векторами одинаковых размеров.

1.2.2. Кое-что о графиках

Теперь выполните whos, чтобы удостовериться, что х и у опре-делены, как выше. Они оба должны быть 1 х 21-матрицами (т.е.векторами-строками).

Построить график легко. Просто выполните

>> plot(x.y)

и чуть подождите. Как по волшебству, появится замечательная не-замысловатая кривая у — sin а; от аргумента %. Оси выбираютсяавтоматически в соответствии с областями изменения переменных.Это простейший возможный случай. Потом вы захотите делать бо-лее сложные вещи. А сейчас попробуйте следующее:

» t i t le( 'Graph of y=sin(x)')» x label( 'x ' )» y label( 'y ' )» yl=2*x;>> hold on» p lotCx.y l , ' r ' )

Вероятно, вы сможете разгадать значение каждой из этих команд.Например, yl=2*x определяет значения новой функции у ~ 2х,hold on дает MATLAB'у указание сохранить выведенный график,a plot (x,yl, ' г ' ) рисует новую кривую поверх прежней. Заметь-те, что оси были скорректированы1^ и вторая кривая нарисованакрасным цветом.

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

^ Предполагается, что вы используете MATLAB 4-й версии. Имеется несколь-ко небольших различий между этой и более ранними версиями, особенно в от-ношении графических команд.

Page 22: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

1.3. Создание и редактирование скрипт-файлов 21

рисуется кривая, выбрав символы, как показано далее. Выполнимстроки

>> hold off>> p lot(x ,y , '+ ' )» plot(x,y, 'g* ' )>> plot(x,y, J w.')

MATLAB сделал то, что вы ожидали? Вы воспользовались клави-шей | , чтобы повторно выполнить предыдущие команды? Можнополучить подсказку об использовании любой команды МАТЪАВ'а.Выполните, например.

>> help plot>> help hold>> help sin

и т.д.

1.3. Создание и редактирование скрипт-файлов

Начав работать, вы вскоре найдете утомительным снова и сновавводить те же самые или подобные им последовательности команд.К счастью, есть простой путь обойти это: нужно просто сохранитьлюбую часто повторяемую последовательность команд в виде фай-ла, называемого «скриптом» или «М-файлом». После этого можновызывать этот список команд так часто, как надо.

Например, в каком-то сеансе работы вы захотели найти рассто-яние между точками А и В, заданными соответственно векторамиа = (1,0, —2) и b — (2,3,1). Зная, что вектор смещения между нимиравен

d = b - aи что

\d\2 - d - d ,вы можете воспользоваться следующей последовательностью ко-манд МАТЪАВ'а:

» а=[1,0,-2];» Ь=[2,3,1];>> d=b-a;» dd=d*d';>> dist=sqrt(dd)

Page 23: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

22 Глава 1. Введение

чтобы решить эту частную задачу. Это неплохо, но, предположим,у вас теперь пять точек, и нужно выбрать из них две наиболееблизкие друг к другу. Очевидно, что тогда вы захотите сохранитьв «скрипте» (файле) как можно больше таких шагов, которые до-пускали бы затем их полное повторение.

1.3.1. Редактирование и сохранение текстовых файлов

Сначала нам необходимо рассмотреть управление файлами и ихредактирование.

Пользователи, не использующие WindowsЕсли вы не используете Microsoft Windows, то здесь вам нужно бу-дет сделать некоторые изменения в процедурах. Однако как бы нибыл MATLAB инсталлирован на вашем компьютере, без сомнениятам будет какой-нибудь текстовый редактор. Предполагая, чтоон носит имя ed i t , вероятно самый легкий способ вызвать его изMATLAB'a —это выполнить

>> ' e d i t fname

где fnarae —имя текстового файла, который либо уже существует,либо будет существовать ко времени окончания вами работы. Еслиэто не срабатывает, проконсультируйтесь с кем-то, знающим на-стройку вашей системы, или с более опытным пользователем.

Пользователи WindowsWindows устанавливается со своим собственным базовым редакто-ром текстовых файлов под именем Блокнот (Notepad), пиктограм-му которого молено обычно найти в разделе Стандартные програм-мы (Accessories Group). Типичная установка MATLAB'a в Windowsпрямо использует эту программу, почему и мы ограничимся ею.Чтобы открыть и отредактировать новый файл с именем myf i l e .га,непосредственно из MATLAB'a, сделайте следующее:

(i) В меню MATLAB Command Window щелкните мышью на F i l e ,(ii) Щелкните на New, а затем на M-file.

(iii) В Блокноте, который вы только что открыли, можно набиратьлюбые строки, например,

У, myfile.m'/, Это просто название (идентификатор) самого файла.

7, Эти три строки суть строки комментария, на которые

'/, MATLAB не обращает внимания.

dispC I am an M-file')

Page 24: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

1.3. Создание и редактирование скрипт-файлов 23

(iv) Щелкните на F i l e а затем на Save As.(v) В окошечке F i l e Name, открывшемся в ожидании, наберите

myfile.m.(vi) Щелкните на ОК.

Вы только что создали файл, который MATLAB может найти ииспользовать.

Вернувшись в MATLAB Command Window, вы теперь можете спро-сить MATLAB, найдет ли он этот файл. Выполните

>> type myfile

и увидите строки, которые набрали раньше. Если этого не получи-лось, вернитесь к шагу (i) и снова вызовите Блокнот щелчком поF i l e в MATLAB Command Window, но дальше выберите Open M-f i l e .Вы увидите окно ввода, соответствующее myf i l e . m. Если не получи-лось и это, вернитесь прямо к началу этого раздела, но желательнос кем-то, кто проследил бы за правильностью ваших действий.

1.3.2. С крипт-файлы

Если все прошло нормально, то теперь вы имеете первый примерскрипт-файла. Чтобы использовать его, просто наберите

>> myfile

после чего увидите что-то вроде

I am an M-file

Теперь о чем-то более полезном. Откроем М-файл, чтобы по-вторить ранее приведенные команды для определения расстояниямежду двумя точками. Действуя, как и раньше, откройте новыйМ-файл с именем distab.m, содержащий несколько строк с ком-ментариями

7. distab.m7, Вычисляет расстояние между двумя векторами а и Ъ

7. . . .включая дополнительные строки (те, которые начинаются с %), ко-торые помогут вам вспомнить, как это работает. Далее пойдут ра-бочие строки

d=b-a;dd=d*d';dist=sqrt(dd)

Page 25: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

24 Глава 1. Введение

Не забудьте сохранить файл, щелкнув мышью сначала по File, aзатем по Save As, как это делалось при создании mfile.m. Еслинеобходимо, еще раз просмотрите тот пример. Окончив редактиро-вание файла, при желании можно закрыть Блокнот, щелкнув поFile и затем по Exit. Можно оставить Блокнот и открытым, ноэто может привести к путанице, если окажется, что открыто слиш-ком много окон с Блокнотом. При закрытии Блокнот всегда самнапомнит вам о сохранении последних изменений в файле.

Теперь задайте компоненты векторов а и Ь, если не сделали это-го раньше:

» а=[1,0,-2];» Ъ=[2,3,1] ;

Затем найдите расстояние, просто выполнив

>> distab

Получилось? Если нет, вернитесь в Блокнот и сделайте еще однупопытку.

Проделайте это для различных точек А я В, в частности и длятаких пар, где правильность определения расстояния просто про-верить, например, для Л s (1,2,3) и В = (1,1,3).

» а=[1,2,3] ;» Ъ=[1,1,3];>> distab

Чтобы узнать, какие М-файлы вы создали или какие еще есть вMATLAB'e, воспользуйтесь командой what. Если же вы хотите про-верить назначение М-файла, можно использовать команду help(точно так же, как для любой команды MATLAB'a):

» help myfile

» help sqrt

» help sin

Команда help выводит начальные строки с комментариями в нача-ле М-файла. Вот почему всегда считается хорошим правилом вклю-чать строки комментария (начинающиеся с %) в шапку М-файла.Также полезно включать в первую строку комментария имя файла.

Заметьте, что myfile —это имя инструкции MATLAB'a (того,что вы набираете для исполнения), тогда как myfile. m— имя фай-ла, содержащего ее определение.

Page 26: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

1.3. Создание и редактирование скрипт-файлов 25

1.3.3. Файлы функций

Было бы утомительным присваивать значения компонентам двухвекторов перед каждым обращением к нашему «скрипту». Можносоединить присвоение входных значений с действующими инструк-циями вызова М-файла. используя М-файл типа функция. Крометого, одновременно можно присвоить полученные значения новымпеременным, т.е. создать файл-функцию distf n, такую, что, набрав

» dab=distfn([l,2,3],[1,1,3]);

» а=[1,2,3]; Ъ=[1,1,3]);>> dab=distfn(a,b);

вы присвоите правильное значение расстояния переменной dab безкаких-либо дополнительных хлопот.

Вот как нужно сделать изменения в скрипт-файле distab.m.чтобы он стал файлом-функцией distf n.m. Пусть ваш Блокнот ужезакрыт, так что начнем редактирование с самого начала:

(i) В меню MATLAB Command Window щелкните мышью на File.(ii) Щелкните по Open M-file, чтобы открыть Блокнот, и просмо-

трите список доступных М-файлов, т.е. оканчивающихся на.т. {если потребуется, смените окончание *.txt в рамке вводаимени файла File Name на * .m).

(iii) Выберите distab.m.(iv) Теперь можно внести изменения. Сначала измените строки

комментария, чтобы отразить новое имя и назначение файла,а затем измените исполняемые инструкции MATLAB'a так,чтобы ваш файл принял вид:

У, distfn.mУ. Вычисляет расстояние между двумя точками, заданными

'/• векторами а и bУ, Вызов:У, dist=distfn(a,b)У. ввод: а,Ь (векторы положения точек)

У, вывод: distfn - расстояние между точкамиfunction dist=distfn(a,b)

d=b-a;dd=d*d';dist=sqrt(dd);

Page 27: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

26 Глава 1. Введение

(v) Щелкните по Save As.(vi) В окошечке File Name, открывшемся в ожидании, наберите

distfn.m.(vii) Щелкните по ОК.

Вернувшись в MATLAB Command Window, вы теперь можете, на-брав help distfn, прочесть, как пользоваться этой функцией. Вы-полните

» d i s t-d i s t fn( [ l ,1 ,1] , [2,2,2])

или

>> dist=distfn(a,b)

чтобы присвоить найденное расстояние переменной dist. Если вывносите не одно исправление, то можете забыть поставить в неко-торых местах символы ; . Для исправления любых ошибок просма-тривайте файл, используя Блокнот.

М-файлы-функции (или «М-функции»), т.е. М-файлы с первойисполняемой строкой вида function . . . , обладают одним оченьважным свойством. Кроме самого имени (здесь это distfn), вседругие переменные (a, b, dd и т.д.)—чисто внутренние для этойфункции. Это помогает уменьшить путаницу с другими вычисле-ниями и переменными, используемыми вами. Проверьте это, вы-полнив

>> who>> clear>> who

» dist=distfnC[l)l,lj,[2,2,2])

>> who

Команда clear удаляет все ранее определенные переменные. Послевыполнения функции dist=distfn(. .) внутренние переменные неоставляют и следа в вашем МАТЪАВ-сеансе.

1.3-4- Файлы дневника работы и сохранение файлов

Иногда вам может понадобиться запомнить те ваши действия, кото-рые отображались на экране дисплея. Позднее вам может потребо-ваться распечатать их (см. следующий раздел). Сделать это оченьлегко. Чтобы понять это, выполните

>> diary sectl.txt» '/. Начало раздела 1

Page 28: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

1.3. Создание и редактирование скрипт-файлов 27

>> '/, сейчас несколько команд

>> myfile

>> dis t=dis t fn( [1,1,1],[2,2,2])>> diary sect2 . tx t>> '/, Я хочу сохранить это где-то еще>> х=0: .1 :1;>> у=х.*х>> plot(x,y)>> diary.off

Сеанс будет протекать вполне нормально. Команда diary f name да-ет MATLAB'y указание записать копию выводимого на экран тек-ста (числа и буквы) в файл с именем fname. Команда diary offпрекращает запись. В приведенном сейчас примере часть выводазаписывается в один файл, а часть — в другой. Для просмотра полу-ченного вы можете воспользоваться Блокнотом и, если необходимо,отредактировать записи. Вызовите Блокнот, как обычно щелкнувпо File, и с помощью fJpen просмотрите список файлов с окон-чаниями имен на * . t x t . В этом списке вы увидите s e c t l . t x t иsect2. txt .

Взглянув на sect2. txt , вы, вероятно, будете разочарованы, ненайдя там графика у = х2. Это потому, что графики и другие гра-фические образы нелегко представить в текстовой форме. В следу-ющем разделе будет показано, как обойти эту трудность.

При окончании сеанса с MATLAB'OM все текущие переменныеи их значения теряются. Обычно это не создает проблем. Начатьсеанс заново можно строкой

>> clear

освободившись тем самым от всего предыдущего. Если же вы все-гаки хотите сохранить то, что получили, наберите, например.

>> save monday

или

>> save monday x,y

где вторая команда сохранит только явно указанные переменные вфайле monday. Можно вновь загрузить сохраненное на следующийдень или когда пожелаете командой

>> load monday

Page 29: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

28 Глава 1. Введение

Помните, что таким способом сохраняются лишь сами переменные,т.е. их текущие значения. Все формулы, которые вы применяли,будут потеряны, если вы не запомните их в некотором М-файле.

1.4. Получение распечаток

1-4-1- Пользователи Windows

Одно из преимуществ использования среды Windows состоит в том,что печать текстовых файлов, таких, как файлы дневника рабо-ты или М-фаЙлы, выполняется одинаково во всех приложениях.MATLAB — стандартное приложение и поэтому использует все до-стоинства такого подхода. Это же верно и для графиков, получен-ных с помощью MATLAB'a.

Чтобы получить печатную копию М-файла или другого тексто-вого файла, просто откройте его с помощью Блокнота обычнымобразом (см. предыдущий раздел). Щелкните на File, а затем наPrint. И все! Если не получилось, возможно, вам надо проверитьPrint Setup в том же самом меню, чтобы узнать, куда выводитсяраспечатка. При необходимости вы можете вызвать вашего местно-го специалиста по обслуживанию компьютеров. Но обычно все уженастроено, так что все распечатки идут на нужный принтер.

Графики выводятся на печать точно так же, но вы должны ис-пользовать кнопки File и Print в окне, в котором построено изо-бражение (обычно это Figure No. 1).

1.4-2. Пользователи, не работающие nod Windows

Если у вас нет системы Windows или вы хотите обойтись без нее,можно выполнить

» !print fname.txt

или воспользоваться подходящей командой печати вашей операци-онной системы (например, 1р или lpr для Unix).

Для графиков команда MATLAB'a print обычно настроена навывод текущего изображения на принтер, заданный по умолча-нию. Если это не так, попробуйте воспользоваться советами из helpprint. Потерпев неудачу и здесь, расспросите вашего терпеливогодруга.

Page 30: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Упражнения 29

Таблица 1.1. Сводка вышеприведенных основных команд

plot(х,у)t i t l eС'Заголовок')sqrt(х)hold on

х=-1:.2:1format long

help sqrtdiary f i l e l . t x t

p l o t ( x , y , ' * ' )xlabel('Надпись по оси х')sin(x)hold off

y=x.*xformat shorthelp myfilediary off

plot(x,y, '+g')ylabel('Надпись по оси у')exp(x)

dotprod=x*y'

save fnameload fname

i )

1 С = транспонирование)

Упражнения

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

1.1 Найдите сумму первых четырех членов последовательности

1 2 3

2 x 3 ' 3 x 4 ' 4 x 5 '

1.2 Определите вектор t со значениями компонент, равномернорасположенными с шагом 0.2 между 0 и 6 включительно. Те-перь используйте его, чтобы нарисовать кривые

f(t) = sm(irt)

1.3

g(t) = ехр(—t) sin(7r()

на одном графике, изобразив первую зеленым, а вторую —желтым цветом. Если вы не уверены, как применить нужныевам функции MATLAB'a, наберите help exp и т.д. Улучшитеграфик, добавив белую линию, соответствующую у = 0.Воспользуйтесь редактором, чтобы создать М-файл, в кото-ром определяется длина каждой из сторон треугольника АБС,вершины которого заданы векторами а = [1,2,3], b — [2,3,4]ис = [3,4,5].

Page 31: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Матрицы и комплексные числа

2.1. Векторы и матрицы

2.1.1. Векторы

Кратко вспомним, как вводятся векторы. Пусть

а= (-1,2,4) и Ъ = (1.5,2,-1).

Присвоим эти векторные значения переменным а и Ь, вводя либо

» а = [-1 2 4]» b = [1.5 2 -1]

либо

» а = [-1,2,4]» Ъ = [1.5,2,-1]

Таким образом, могут быть использованы либо пробелы, либо за-пятые.

Один способ определения внутреннего или скалярного произве-дения, двух векторов а • Ъ, был указан в §1.2. Здесь мы приве-дем другой способ, использующий идею поэлементного умноже-ния, также введенного в гл. 1. Набрав

>> с=а.*Ь

где перед знаком умножения * стоит точка, перемножим векторы аи b поэлементно и получим вектор с — [—1.5,4,—4]. Тогда скалярноепроизведение получается суммированием компонент вектора с:

>> sum(c)

что дает а • b — —1.5. Аналогично

>> sqr t ( sum(a.*a))

Page 32: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

2.1. Векторы и матрицы 31

дает длину а. В действительности, команда MATLAB'a norm сра-зу найдет длину (норму) вектора. Чтобы найти угол 9 между а иЬ, мы можем воспользоваться формулой в = arccosa • b/(jaj jb|).В MATLAB'e arccos обозначается через acos, так что вычисления,проводимые таким способом, могут быть записаны как

>> theta = acos( 5Шп(а.*Ъ) / sqrt (sum(a. *a)*sumCb.*b)) )

что дает приблизительно в = 1.693 радиан.

2.1.2. Матрицы

Матрица

А =

вводится для вычислений в MATLAB'e как

» А=[-1 1 2;3 -1 1;-1 3 4]

со строками-векторами, разделенными точками с запятыми, иликак

» А = [-1 1 23 -1 1-1 3 4]

с различными строками, разделенными <Enter>, и потому появив-шимися на разных строках экрана. Приглашение MATLAB'a » непоявится, пока вы не закончите ввод матрицы закрывающей скоб-кой J. Если случайно вы написали в одной из строк больше элемен-тов, чем в другой, то получите сообщение об ошибке. Заметьте, чтопри желании вы можете разделять элементы в строке запятыми:

Если вы найдете избыточным число пробелов между числамив строках выдач MATLAB'a, то можете избавиться от лишних спомощью команды

>> format compact

На каком-то этапе загляните в help format, чтобы узнать, как мож-но управлять видом выходных данных MATLAB'a.

Page 33: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

32 Глава 2. Матрицы и комплексные числа

Система уравнений

—xi + x<i + 2:сз = 10,

может быть записана как

Ах = Ь, (2.2)

где, скажем, х есть вектор-столбец (х!,Х2,хз)т, a b — вектор-стол-бец (10, —20,40)т правой части этой системы. В MATLAB'e мы мо-жем записать b как транспонированный вектор-строку

» Ъ=[10 -20 40] '

Чтобы решить систему линейных уравнений Ах = Ь, где опре-делитель матрицы А не равен нулю, мы можем воспользоватьсяобратной матрицей Л."1 для А, т.е. такой матрицей, что АА~1 —А~1 А = / (I— единичная матрица размера 3 х 3). Чтобы узнать,равен ли нулю ее определитель, наберите

» det(A)

и получите ответ: 10. Тогда решение х получается как

х = А~*Ах — А ^ Ь ,

что в MATLAB'e примет вид

>> x=inv(A)*b

отображая результат в виде вектора-столбца х (в нашем случае это

Таким образом, матричное произведение получается с исполь-зованием символа умножения *, но матрицы должны иметь согла-сованные размеры, иначе MATLAB выдаст сообщение об ошибке.Например, Ъ*А не имеет смысла, поскольку число столбцов в b, aименно 1, не равно числу строк в А. а именно 3. Вы можете опро-бовать матричное умножение с помощью

» С=А*А» det(C)» D=A~3» det(D)

Таким образом, С = A2, D ~ А3 и, но известному правилу дляквадратных матриц одинакового порядка, det(P)det(Q) = det(-PQ),их определители равны 100 и 1000, соответственно.

Page 34: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

2.1. Векторы и матрицы 33

На самом деле, чтобы решить линейную систему, подобную (2.1)или (2.2), не надо начинать с обращения соответствующей матрицы.Надо применить линейные преобразования к расширенной матрице,образованной из Л и b. MATLAB может выполнить эти вычисленияследующим образом1^. Вы просто набираете

» х = А\Ъ

II здесь матрицы должны иметь согласованные размеры. Проде-лайте это и проверьте ваш ответ, определив произведение Ах илинайдя «невязку» г = b — Ах.

Вы можете также сложить две матрицы одного и того же раз-мера. MATLAB не будет выражать недовольство, даже если вы при-бавите к матрице скаляр. Действительно, результат

» Е=А~2+2*А+1

есть матрица

= А2+ 2А

Только не спутайте 1 с единичной матрицей 2^. Единичную матрицуп матрицу, у которой все элементы 1, можно получить, набрав

» diag([i 1 1])» ones(3,3)

так что diag порождает диагональную матрицу с заданными диа-гональными элементами, a ones — матрицу заданных размеров изединиц. Посмотрите, что дает

» diag(ones(l,3))

Обратите внимание на скобки при использовании функции diag. Вдействительности можно получить единичную матрицу (например,размера 3x3), выполнив

» еуе(З)

Как уже отмечалось, можно решать систему Ах — Ь, сформи-ровав соответствующую расширенную матрицу

» F - [А Ъ]

*' См. гл. 16, где более детально обсуждается решение линейных систем.' Из того, что А*1 снова равняется А, можно ошибочно подумать, что в

MATLAB'e умножение на 1 — это умножение на единичную матрицу.

3-4196

Page 35: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

34 Глава 2. Матрицы и комплексные числа

На самом деле этот метод применим даже тогда, когда определи-тель равен нулю или матрица А системы уравнений не квадратная.

Процедура заключается в приведении расширенной матрицы к«верхней треугольной форме» специального вида, когда с помощьюлинейных операций над строками создается матрица, у которой ве-дущие элементы в строках равны 1, а элементы, расположенныеперед ними и ниже их, равны нулю.

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

» G=rref(F)

и получите эту верхнюю треугольную форму для F. В данном слу-чае это

G =/ 1

0

\ 0

010

001

119

_ 4

Это значит, что исходная система эквивалентна системе с расши-ренной матрицей G, но последнее есть просто х = 1,у = 19, z = —4,так что остается только прочесть решение.

Не забудьте о круглых скобках при использовании функцийMATLAB'a, подобных rref. Даже если вы наберете матрицу не-посредственно при вызове функции, все равно поставьте их, напри-мер, в

» r r e f ( [1 2 3; 4 5 6 ; 78 9])

Обратите внимание, что в данном случае одна строка (последняя)будет состоять из нулей, указывая на линейную зависимость строкисходной матрицы. Можете проверить это, найдя определитель, ко-торый равен нулю.

Интересно выполнить

>> rrefmovie(F)

и тогда вы увидите «живую» демонстрацию процесса преобразова-ний матрицы.

Page 36: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

2.2. Комплексные числа 35

2.1.3. Собственные значения и собственные векторы

Если .4 есть п х n-матрица, А—-число и х —ненулевой n x 1-вектор(столбец), такие, что

Ах = Ах,

то х называется собственным вектором матрицы .4, а А — соответ-ствующим собственным значением.1' Собственные значения мож-но понимать и как такие числа А, для которых det(A — XI) — 0, где1 — единичная n x п-матрица.

Для примера выполните

>> A=diag([ l 2 3])» eig(A)» P=[ l 2 3;4 5 6; 5 7 8]>> det(P)» B=inv(P)*A*P» eig(B)» [Y,D]=eig(B)

Собственными значениями матрицы .4 будут просто диагональныеэлементы 1, 2 и 3. Поскольку матрица Р — невырожденная\det(P) = 3), матрицы А и В = Р~1ЛР «подобны» и имеют оди-наковые собственные значения. Обратите внимание, что MATLABможет упорядочить их по-разному. В последней командной стро-ке определяются собственные векторы матрицы В в таком виде:матрица У имеет столбцами собственные векторы, а в диагональ-ной матрице D на диагонали находятся их собственные значения,причем собственный вектор, соответствующий первому диагональ-ному элементу в D, является первым столбцом в У, и т.д. В данномслучае все собственные значения и собственные векторы являютсявещественными. Примером, где это не так, служит матрица А из§2.1.2.

2.2. Комплексные числа

MATLAB имеет символ i (т/—Т), встроенный вместе с правиламикомплексной арифметики. В MATLAB'е для у/—1 зарезервировантакже символ j. Наберите

>> clear

^Геометрически это означает, что линейное преобразование, соответствую-щее матрице А, переводит х в другой вектор, направленный вдоль той же ли-нии, проходящей через начало координат, что и х.

Page 37: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

36 Глава 2. Матрицы и комплексные числа

» i» J

и посмотрите, что получится.Предупреждение: при работе с комплексными числами есть опас-ность, что MAT LAB не будет воспринимать i как квадратный ко-рень из —1. Это может произойти, если перед этим буква i ис-пользовалась как индексная переменная, обычно целая (мы позднеевстретим индексирование в циклах for; см. §3.1). Чтобы оградитьсебя от этого, просто выполните

>> clear i , j

перед началом работы с комплексными числами и избегайте исполь-зования i для других целей.

Вы уже встречались с комплексными числами, когда находи-ли собственные значения и собственные векторы в §2.1. MATLABлегко управляется с комплексными числами. Например.

» a=l+i; b=2-3i;>> c=a*b>> d=sqrt(a)

дают ответы с — 5 — i,d — 1.0987 + 0.455Н. Заметьте, что приведенотолько одно значение квадратного корня. Подобно этому

» (-1ГЦ/2)

дают соответственно г и 1 + i. Другие значения квадратного или ку-бического корней получаются умножением на —1 или на кубическиекорни из единицы, соответственно.

Модуль, аргумент (—тг и < 7г радиан) и вещественная часть ужезаданного комплексного числа а получаются посредством

» abs(a)>> angle(a)» real(a)

соответственно. Команда

>> imag(a)

дает мнимую часть, но без г. Так для a = 1-И ответ есть 1. Команда

>> conj(a)

Page 38: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

2.3. Динамика населения: матрица Лесли 37

дает a — комплексно сопряженное к а. (Если а — х + iy, где х и у —вещественные, то а — х — iy.) Таким образом, для

>> a*conj(a)-abs(a)~2

ответом всегда будет 0 (или очень маленькое число, такое, как1.7764е-015, т.е. 1.7764 х Н Г 1 5 ) .

Попробуйте также выполнить

>> exp( i*pi)

что даст е'77 = —1.

2.3. Динамика населения: матрица Лесли

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

По данным за некоторый год, подсчитаем количество людей ввозрастных диапазонах 0-5, 6-19. 20-59 и 60-69. Более подробноеделение связано, конечно, с несколько большим объемом работы.Поэтому сделаем следующие довольно сильные упрощающие пред-положения.

• Внутри одного возрастного диапазона возрастное распределе-ние постоянно, т.е. в каждой годовой группе содержится одина-ковое число людей.

• Мы не рассматриваем лиц старше 69 лет!• Смерти случаются лишь в возрастном диапазоне 60-69 лет с ин-

тенсивностью d_\% в год и в диапазоне 0-5 лет с интенсивностьюdi% в год.

• Рождения соответствуют возрастному диапазону родителей в20-59 лет с интенсивностью Ь% в год.

Page 39: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

38 Глава 2. Матрицы и комплексные числа

Таблица 2.1. Структура матрицы Лесли.

0

м С

а со g

га ч

0-5

6-19

20-59

60-69

'КФ 3J

о 5ggS Ч? а

« 2

П 3

П 4

СС

а

о -S

К1 t i

6

14

40

10

оч/лиS

d,T o o " 1

0

0

ю о 7 1 4 ( l

о

а;СV

~ T o o ) U l

П2

Пя

100 J

о

Мя 2

м 5-

\ ^ ~ 100̂

i t

ИЗ.40

\ 100 J'ft

« 3о д

i Sса и:

ь

^ Т о о )

Hi14

40

6

В этих предположениях мы хотим сопоставить вектор-столбец

= ( n 1 ( 2 ) , 7 i 2 ( 2 ) , n 3 ( 2 ) , 7 i 4 ( 2 ) ) T

количества людей в четырех возрастных диапазонах за 2-й год свектором-столбцом

N(l)=,tn 1 ( l ) ,n 2 ( l ) ,n 3 ( l ) ,n 4 ( l ) ) T

количества людей за 1-й год. Помните, что, как и выше, Т обозна-чает транспонирование вектора или матрицы.

Чтобы понять, как получить эту взаимосвязь, рассмотримтабл. 2.1.

Ее столбцы содержат: границы возрастного диапазона; обозна-чение щ для текущего числа лиц из этого диапазона; число годовыхгрупп (например, возрасты 0, 1, 2, 3, 4. 5 образуют шесть годовыхгрупп); число умерших в этот год согласно нашим правилам: по-лучающееся отсюда число переживших этот год; те из выживших,кто покидает диапазон (переходящих в следующий или, в случаедиапазона 60-69, выпадающих из наших расчетов); число включа-емых в диапазон, либо как родившихся, либо как перешедших изпредыдущего.

Конечно, каждый покинувший диапазон становится вступаю-щим в следующий диапазон. В соответствии с упрощающими пред-положениями число составляющих возрастной диапазон в каждыйотдельный год остается одним и тем же, так что число «покинув-ших» есть число «выживших», поделенное на число лет, охваченныхвременным диапазоном. На практике берутся более узкие возраст-

Page 40: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

2.3. Динамики, населения: матрица Лесли 39

ные диапазоны, что делает это предположение более правдоподоб-ным.

Теперь легко видеть, что вектор N(2) количества людей разныхвозрастных диапазонов за 2-й год связан с соответствующим век-тором N(1) за 1-й год линейным соотношением

где L — так называемая матрица Лесли

L =

ьюо/К1 -&) о

I (л - AL.\ 13 n6 V 100 У 14 и

Г) - L 39и 14 40

\ U U 40 10 I 1 lOoJ /

По тем же соображениям

N(3) = LN{2) = L 2N(1)

и т. д., а в общем случае

N(t + 1) =LN{t).

Задав данные, скажем, для t ~ 0, и некоторые оценки Ь, d/ и с1д,можно предсказать возможную возрастную структуру населенияна несколько лет вперед. Это очень полезно, если вам приходит-ся планировать программы пенсионного обеспечения, университет-ские штаты или ежедневные поставки продовольствия.

М-файл l e s l i e . m позволит вам исследовать эти понятия. Набе-рите

>> l e s l i e

и получите 4 х 4-матрицу L, описывающую эволюцию этой моде-ли населения. Вам будет предложено ввести уровень рождаемости(Ь) в процентах в год, например 2.5, уровень детской смертности(например, dj = 1) и смертности по возрасту (например, d& — 10)и т.д. Теперь задайте начальное распределение населения, скажем,

» N = [ 3.6 11.4 29.6 1 0 . 6 ] '

которое очень грубо аппроксимирует население Великобритании в1996 г. в млн. чел.

Теперь можно проделать следующее:

Умножьте N на L 4 раза (N1=L*N, N2=L*N1,. . .), чтобы пред-сказать на основе этой модели распределение населения Великобри-

Page 41: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

40 Глава 2. Матрицы и комплексные числа

тании в 2000 г. Какие же изменения там произойдут? Заметьте, чтовы можете ввести и нечто вроде

» L~4

» N50=L"50*N

Вычислите

» [Y D] = eigCL)чтобы получить собственные векторы и собственные значения мат-рицы Лесли L. Найдите наибольшее собственное значение и соот-ветствующий ему собственный вектор Е. Можно сравнить векторнаселения, скажем, после 50 лет. L o 0N. с этим собственным векто-ром Е следующим образом:

» N50=L"50*N» N50./Е

Вторая команда делит компоненты N50 на соответствующие ком-поненты Е. Результатом должны быть три приблизительно равныечисла, показывающие, что население через 50 лет, грубо говоря,пропорционально собственному вектору, соответствующему наи-большему собственному значению.

Что произойдет, если исходное распределение населения будетпропорционально этому собственному вектору?

Упражнения

2.1 В качестве простого примера действий с комплексными числа-ми рассмотрим следующий пример, более полно изложенный вгл. 13. {Вспомните сделанное в §2.2 предупреждение: во избе-жание ошибок перед началом такой работы следует выполнить«clear i».) Введите какое-либо комплексное число, например,

» z=3+4i

Теперь выполните

» z=(z~2~l)/(2*z)

Используя клавишу -[, повторите последнюю команду несколь-ко раз. В конце концов ответы сходятся к % или —г; для на-чального значения 3 + 4г это будет %.• Сможете ли вы догадаться, как по начальному z опреде-

лить, к чему сойдутся такие числа: к г или к ~i? (Мы не

Page 42: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Упражнения 41

ожидаем, что вы сможете доказать это. Доказательство бу-дет дано в гл. 13.)

• Если вы начнете с г = 0, то MATLAB будет выдавать—inf, NaN, NaN ..., что в данном случае не имеет особогосмысла1^. Но есть и другие начальные значения, такие как2 = 2, которые приведут к более осмысленной расходимости.Какие начальные значения г приводят к расходимости? (Издесь мы ожидаем лишь эмпирический ответ.)

2.2 Это упражнение сочетает работу над матрицами с редактиро-ванием файлов и использованием дневников работы. Создайтеследующий М-файл (не забудьте либо оставить пробелы меж-ду элементами каждой отдельной строки, либо вставьте тамзапятые):

А=[1 1/2 1/3

1/2 1/3 1/4

1/3 1/4 1/5]

Ь=[1 0 0] '

det(A)

X=inv(A)*b

и назовите его каким-либо удобным для ссылок именем, на-пример, ch2q2.m.

Этот М-файл решает уравнения с матрицей -4 коэффициен-тов и вектором-столбцом b в качестве правой части. Заметьте,что сначала вычисляется определитель матрицы .4. Даже еслиdet(.4) ф 0. численное решение может быть очень чувствитель-ным к небольшим неточностям или изменениям в параметрах.Этого следует ожидать, если det(.,4) мал. Данная система ока-зывается плохо обусловленной.2'

(a) Создайте копию файла ch2q2.m. скажем, ch2q2a.m и от-редактируйте ее так, чтобы решались уравнения, в которыхэлементы 1/3 матрицы А заменены на 0.333.(b) Сделайте то же самое, заменив 1/3 на 0.33; и пусть этобудет М-файл ch.2q2b.rn.

1 ' В MATLAB'е есть специальные переменные inf (бесконечность) и NaN (нечисло), которые могут иметь и знак минус. Первая переменная возникает привыходе текущего результата за принятую в системе числовую шкалу (это при-мерло 103 0 й). а вторая — в случаях 0/0, inf-inf и в арифметических действиях,когда один из операндов уже есть NaN. В программах вместо NaN можнописать пап. — Прим. перев.

2> См. гл. 16, где обсуждаются плохо обусловленные системы.

Page 43: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

42 Глава 2. Матрицы и комплексные числа

Запустите ваши М-файлы в MATLAB'e и сохраните резуль-таты в дневнике работы. Для этого наберите (в МАТЪА1Ге)diary ch2q2.txt, а затем ch2q2. чтобы выполнить данныйМ-файл, затем наберите ch2q2a, чтобы прогнать следующийМ-файл, и, наконец, ch2q2b, чтобы запустить третий файл.Когда вы прогоните все файлы, наберите diary off. Верни-тесь к редактору и вызовите файл ch2q2.txt, чтобы просмо-треть его содержимое. Вы увидите, что результаты решенияэтих близких систем уравнений сильно отличаются. Вы, ко-нечно, можете вставить свои собственные комментарии к ре-зультатам и распечатать дневник, чтобы получить «твердуюкопию».

2.3 Скопируйте М-файл leslie.m и отредактируйте его так, что-бы он был удобен для изучения популяции кошек, описывае-мой возрастными диапазонами 0-1, 2-5, 6-10 и 11-15 и удовле-творяющей следующим модельным предположениям:• Кошки старше 15 лет не учитываются.• Рождения происходят в диапазоне 2-5 (Ь% в год).• Уровень смертности котят для диапазона 0-1 равен в,к% в

год.• В диапазоне 2-5 выживают все.• Уровень смертности для диапазона 6-10 равен dp% в год, а

для диапазона старшего возраста 11-15 равен &А% В ГОД.Пусть имя этого М-файла будет cats.m.

(a) Найдите матрицу для случая b = 15, с1к — 5, UR — 2 иd-A = 30. (Наберите, например, diary ch2q3.txt, затем запу-стите М-файл, набрав cats и введя необходимые данные, и взаключение наберите diary off.)(b) Возрастет или уменьшится вся популяция за пять лет, еслиее исходное распределение равно [20, 20, 20, 20]? Вы можете ис-пользовать sum, чтобы просуммировать все элементы векто-ра. Можете снова воспользоваться diary ch.2q2q3.txt, чтобывключить результат определения величины популяции за этотпериод и дополнить его своим комментарием: было ли возра-стание или уменьшение популяции. Заметьте, что используято же имя для дневника работ, вы добавляете новый матери-ал к старому. Не забывайте выполнять diary off каждый раз,когда вы временно приостанавливаете запись в этот дневник.(c) Найдите наибольшее по абсолютной величине собственноезначение и соответствующий собственный вектор матрицы

Page 44: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Упражнения 43

Лесли С развития популяции кошек. Заметьте, что в

» V=C(:,1)

будет первый столбец V матрицы С. Это очень полезно, есливы хотите в дальнейшем что-то сделать с этим столбцом, на-пример, сравнить его с другим вектором.(d) Используя исходную популяцию из (Ь), покажите, что век-тор популяции (N) после 50 лет приблизительно пропорцио-нален собственному вектору из (с). Повторите все, выбрав ис-ходную популяцию по собственному желанию. Вспомните, что

» VI./V2

дает вектор, содержащий отношения элементов V I и V2.

Page 45: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Целые числа

В этой главе мы введем структуры MATLAB'а, имеющие отноше-ние к некоторым свойствам целых чисел.

3.1. Цикл вычисления чисел Фибоначчи

Наберите последовательность

>>»>>»>>

f = [1f(3) =ff(4) =

f

1]f C D -

f(2) •

* Ш)

»• f ( 3 ) ;

Последняя команда выведет вектор [ 1 1 2 3]. Таким образом, f (1)ссылается на первый элемент вектора f, f C2) —на второй, и т.д.

Мы можем проделывать это снова и снова в цикле:

» f = [1 И ;for k = 1:15f ( k + 2 ) = fCk+1) + f ( k ) ;end» f

Обратите внимание, что MATLAB не выводит приглашение », пока,цикл не завершит end. Цикл for. . .end последовательно выбираетзначения 1,2,... ,15 для переменной к и для каждого из них добав-ляет к вектору f новый элемент f(fc + 2). Так, для к = 1 вектор fвыглядит как [1 1 2]; для к — 2 он принимает вид [1 1 2 3] и т.д.Точка с запятой после выражения для f (к + 2) запрещает вывод наэкран результатов его вычисления на каждом из 15 шагов цикла.

Набрав

» p l o t C f , ' * ' )

Page 46: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

3.1. Цикл вычисления чисел Фибоначчи 45

получим график значений, каждая точка (г,f(г)) которого изобра-жается символом *. Команда p l o t (f ) соединит эти точки отрезкамипрямой, и мы получим ломаную линию. Элементы вектора f явля-ются числами Фибоначчи 1,1. 2, 3, 5.8,13, 21, 34,... . Они формиру-ются, как и выше, по правилу f(l) — f(2) = 1; f(k+2) = f(fc+l)-t-f(fc)для к > 1.

Приведенные команды могут быть записаны в М-файл. Другойвариант таких вычислений получается с помощью «цикла while»:

f = [ l 13;k = l ;

while f(k) < 1000

f(k+2)=f(k+l)+f(k);

k=k+l;

end

f

plot(f)

Этот М-файл сохраним под именем fibno.m и выполним, на-брав fibno. Отступы слева используются здесь, чтобы показатьструктуру М-файла, но на его работу и результат они не влияют.На этот раз две команды между while и end выполняются до техпор, пока условие цикла {(к) < 1000 остается истинным. Посколь-ку f (16) = 987 и f (17) — 1597, последнее значение к, при которомвыполняется цикл while, есть к ~ 16. Значение, принимаемое к поокончании работы всего М-файла, равно 17, поскольку к увеличи-лось на 1 во время исполнения последнего шага цикла. Отметимважное различие между циклами for и while:

• В цикле for переменная цикла (к в нашем примере) автомати-чески увеличивается на 1 при каждом проходе цикла. Если выхотите, чтобы начальным значением этой переменной было а ионо увеличивалось каждый раз на d, пока не превысит 6, наби-райте

for k=a:d:b

end

• В цикле while переменная (к, как и выше) не увеличиваетсяавтоматически. Вы должны сами увеличивать ее явным образомв каждом цикле, как это делалось выше присвоением k=k+l.

Page 47: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

46 Глава 3. Целые числа

3.2. Условный цикл: Зп + 1 или задача о граде

Пусть п — положительное целое число. Выполним итерациями сле-дующий процесс: если п четно, заменим его на п/2; если же пнечетно, заменим его на Зп + 1. Так, начиная с п = 10, мы по-следовательно получим 5,16,8,4,2,1. Здесь мы приводим М-файл,который выполняет это автоматически для любого заданного (вво-димого) п. Назовем его hail .m. Обратите внимание, что rem(a,b)в MATLAB'e —это остаток от деления а на Ь.

n=inputС'Enter n ' )

while п>1k=k+l;if rem(n,2)==0n=n/2;

else

n=3*n+l;

end

f(k)=n;

end

barCf)

Чтобы использовать этот файл, наберем h a i l и затем введем,к примеру, 25 <Enter>. Результат получится в виде гистограммы,а не в виде графика кривой, как раньше.

Эта гистограмма для п — 1000 приведена на рис. 3.1.Если после выполнения этого М-файла мы наберем к, то в от-

вет получим точное число шагов, необходимых для достижения 1,считая исходное значение как шаг 1. (Так, например, для п — 8 по-лучатся числа 8,4,2,1, соответствующие 4-м шагам.) При п — 1000необходимо сделать 112 шагов, что приближенно можно увидеть изгистограммы на рис. 3.1. Если же после выполнения этого М-файланабрать maxCf), то получим максимальное значение, которое дости-гает п во время итераций — это наивысшая точка гистограммы. Приначальном значении 1000 получится 9232.

Сделаем некоторые комментарии к работе ha i l .m .

(i) Обратите внимание на увеличение к в цикле while. С равнымуспехом это можно сделать позже в этом же цикле, после стро-ки f(k) — п.

Page 48: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

3.3. Евклидов алгоритм нахождения наибольшего общего делителя 47

2 0 4 0 60 ВО 100 120

Рис, 3.1. Итерация «задачи о граде» для начального п = 1000.

(ii) Обратите внимание и на конструкцию if. . . e l s e . . .end. Вседействия должны завершаться оператором end. Но можно ис-пользовать if. . .end без альтернативного «else».

(iii) Символ —= двойного равенства означает сравнение. Скорей-ший способ проверить нечто на четность — вычислить остатокот деления на 2, что и делает rem(n,2).

(iv) Символ ; после оператора в if ставить не обязательно (но ивреда не будет).

Для произвольного п неизвестно, всегда ли этот процесс сходитсяк 1. Не найдено ни одного числа, которое не приводило бы к 1,но общего доказательства здесь пока нет. Больше об этом можнопрочесть в [13].

3.3. Евклидов алгоритм нахождения наибольшегообщего делителя

Чтобы найти наибольший общий делитель (НОД) двух целых чисела и Ь, где Ь > 0, сначала разделим Ь на а:

а = bq + г, where 0 < г < Ъ.

Здесь q — частное, а г—остаток, который мы находим как

r=rem(a,b)

Page 49: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глава 3. Целые числа

Таблица 3.1. Алгоритм Евклида.

Шаг

1234

Текущее «691596

Текущее 615963

Текущее ц4112

Текущее г9б30

(Если необходимо, частное q можно найти, выполнив q=f 1оог(а/Ъ).)Поэтому всегда

НОД(«, Ь) = НОД(а - bq, Ь) - НОД(г, Ь) = НОД(Ь, г). (3.1)

В том особом случае, когда г является делителем Ь (это обознача-ется через т\Ь и читается как 'г делит 6'), последнее число в колонкедля b просто равно 71.

Н а б р о с о к д о к а з а т е л ь с т в а с о о т н о ш е н и я (3.1), Первое равенство в(3.1) следует из того, что а и Ь имеют 'точно те. :>х;е. делители, что и параа — bq и Ь. и поэтому их НОД равны. Чтобы увидеть это, предположим,что d\a и d\b. Тогда а = aid, b = b\d для некоторых целых а\ и Ь\, ипоэтому a — bq — d(ai — biq), так что d является делителем и для а — bq.II обратно, такие же самые аргументы показывают, что общий делительa — bqiib является и делителем а. Второе равенство в (3.1) следует простоиз определения г, а третье — из того, что перестановка чисел не изменяетих НОД.

Идея алгоритма Евклида состоит в том, чтобы заменять а на Ъи Ъ на ;• и повторять все действия. Положим а = 69, b = 15. Вычис-ления можно свести в табл. 3.1. Тогда НОД(69,15) = НОД(15, 9) —Н0Д(9, 6) = НОД(6, 3) = 3, так как в конце 6 делится на 3 точно и,следовательно, НОД равен 3.

Чтобы реализовать этот алгоритм в MATLAB'e, нужно нахо-дить остатки г и затем заменять о на Ь, Ь на г. Вычисления про-должаются до тех пор, пока остаток г > 0, но предпочтительнееиспользовать условие b > 0, поскольку в конце цикла они равны и,кроме того, до начала, цикла значение г еше не определено. Легчепопять уже написанный М-файл, чем описать его! Понимаете ливы, почему за НОД принимается последнее значение а, вычислен-ное этой процедурой, а не последние значения Ъ или г?

'/, Функция вычисления НОД чисел а и b.

У, Для пробного запуска нужно набрать, например,

У, gcdiv(69,15)

Page 50: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

3-4. Теорема Ферма и степенной алгоритм 49

У. Для надежности перед началом вычислений устраняется

У, возможная отрицательность а,Ъ

function h=gcdiv(a,b)

if a<0 a=-a;

end

if b<0 b=-b;

end

while b > 0

r=rem(a,b);

a=b;

b=r;

end

h=a;

Этот М-файл, доступный под именем gcdiv.m, написан как функ-ция. Заметьте, что значение функции равно h, которое являетсявыходным значением процедуры, реализующей евклидов алгоритм.Этот М-файл используется командой вида gcdiv(a,b), где an b ли-бо уже известны MATLAB'y на этот момент, либо заменены явнымобразом целыми числами, например числами 69 и 15. Что произой-дет, если выполнить gcdiv(0,4) ? Как вы думаете: ответ имеетсмысл? А если выполнить gcdiv(4,0) ?

В конце этой главы приводится упражнение 3.7, в котором вы-числение НОД h распространяется на три числа в соответствии сопределением НОД(а. Ь, с) = НОД(НОД(о, Ь), с). Другими словами,если вы вычислили НОД х для а и Ь, то h — НОД(:с, с). Имеется так-же упражнение, в котором НОД используется для получения парыслучайных чисел. В Исследованиях (гл. 9) приведена программа, вкоторой используется НОД большого количества случайно выбран-ных чисел. Для этого необходимо написать М-файл, который будетмногократно обращаться к функции gcdiv, описанной выше.

3.4. Теорема Ферма и степенной алгоритм

Наиболее интересные примеры из элементарной теории чисел свя-заны с замечательной теоремой, впервые высказанной в общем видеПьером де Ферма в 1640 г., хотя ее первое полное доказательствобыло опубликовано Леонардом Эйлером только в 1736 г. Частныйслучай этой теоремы был известен китайским математикам еще засотни лет до Ферма. Доказательство теоремы можно найти в любой

4-4196

Page 51: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

50 Глава 3. Целые числа.

книге по элементарной теории чисел, например, в [7]. Здесь будетдана лишь се формулировка и рассмотрены некоторые ее следствия.Вспомним, что простым называется число р > 0, которое не имеетдругих делителей, кроме 1 и самого р.

Теорема Ферма. Пусть число р — простое, и число а не делитсяпар. Тогда ар~х — 1 делится иа р.

Это утверждение можно также записать в виде rem(ap~l,p) = J.Это означает, что остаток от деления а''"1 на р равен 1 или ар~1 =1 mod р. Мы не будем здесь использовать символ = , но запись а ^ Ъmod т, где а,Ь,т — целые числа и т ф 0, означает просто, что тявляется делителем а — Ь.

Мы воспользуемся теоремой Ферма только для того, чтобы по-лучить метод, позволяющий распознать числа, не являющиеся про-стыми, но сначала в центре нашего внимания будет такая

Задача. Как можно вычислить остаток от деления а" на т придостаточно больших п и т ?

Если, скажем, п ~ 1000000, то даже для а ~ 2 практическинельзя непосредственно вычислить а" и потом найти остаток отделения, поскольку число 2 1 0 0 0 0 0 0 состоит почти из 300000 тысячцифр. MATLAB терпит неудачи и с много меньшими числами: так,например, он правильно вычисляет rem(7~2,10) = 9, но выдастгега(7"20,10) = 0, что очевидным образом неверно!

3.4-1 • Степенной алгоритм

Это изящный метод вычисления rem(an,rn) для больших чисел.Если он вас заинтересует, то математические тонкости вы найде-те в §3.5.1. Главное надо помнить, что степенной алгоритм не вы-числяет ап, а действует лишь с числами, не превосходящими ;п 2.Для вычислении rem(a",m) по степенному алгоритму просто набе-рите

>> pow(a,n,m)

Помните, что вы можете получить информацию о М-файле pow.m,набрав команду help pow.

Используя степенной алгоритм, легко проверять примеры, от-носящиеся к теореме Ферма. Так. 16 1 9 9 8 = 1 mod 1999, поскольку1999 —простое число.

Page 52: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

3.4. Теорема Ферма и степенной алгоритм 51

П р и м е р ы

(i) pow(3,118,119) дает 32. Согласно теореме Ферма. 119 не явля-ется простым числом — иначе ответом была бы 1. Конечно,119 = Т х 17.

(ii) pow(2,1993002,1993003) дает 1121689, так что 1993003 не яв-ляется простым числом (на самом деле, оно равно 997 х 1999).

(iii) pow(2,10"6+2,10*6+3) дает 1, что согласуется с тем, чтоЮ6 +3 = 1000003 является простым, но не доказывает это-го. К тому же иpow(3,10~6+2,10~6+3)pow(5,10~6+2,10~6+3)

равны 1. Все это является неким осмысленным «свидетель-ством» того, что 10ь + 3 является простым, по не доказыва-ет этого. (И действительно, 106 + 3 является простым.) См.§3.4.2, где даны сходные примеры того, что такое «свидетель-ство* в пользу простоты оказывается ложным!

В конце концов, целочисленная арифметика в MATLAB'e на-чинает давать сбои из-за ошибок округления. Например, 10° + 7оказывается простым, но

» pow(2,10"9+6 !10~9+7)

не дает правильный ответ 1. Это происходит потому, что MATLABне может правильно оперировать с целыми десятизначными числа-ми. Вы можете применять ронк семи- или восьмизначным числам1'.

Более моганые пакеты могут работать с сотнями цифр. Эти паке-ты обычно тестируют на «возможную простоту» очень большие (покрайней мере, из 100 цифр) числа, используя теорему Ферма и ееболее тонкий вариант —тест Миллера. Такие «возможно простые»числа используются в криптографии при пересылке сообщений спомощью фактически невзламываемых кодов. Вы можете прочестьо таких кодах в работе [12]. Тест Миллера для чисел более скромныхпорядков появится в гл. 9.

*' В действительности целочисленная арифметика остается точной, если опе-ранды и результаты 15-значны- точнее, не превосходят 2 s 2 ft; 4.5036е + 15. Вслучае алгоритма ром в этом диапазоне должны быть а, п и т2. — Прим. перев.

Page 53: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

52 Глава 3. Целые числа

3,4-2. Псевдопростые числа

Имеются числа, которые удовлетворяют заключению теоремы Фор-ма, но не удовлетворяют ее предположению об их простоте. Этоозначает, что мы можем иметь reinfn'""1, т"'О = 1 для некоторогоа > 1, и при этом т не является простым. Когда это происходит,мы называем т псевдопростъш по основанию а.

Например, rem(72 4,25) = 1, rem(23'10, 341) = 1. так что 25 = 52

является псевдопростым по основанию 7, а 341 — 1 1 x 3 1 — псевдо-простое по основанию 2. Тем не менее, если для некоторого фикси-рованного т. находится множество таких а, что rem(a' n ~ 1 ,m) = 1,то это может рассматриваться как накопление свидетельств в поль-зу простоты т. Для очень больших т это может оказаться наиболееэффективным способом отбора «возможно» простых чисел, хотя напрактике используется так называемый тест Миллера. Это и будетпредметом одного из исследований в гл. 9.

Число 561 (= 3 х 11 х 17) имеет довольно неприятное свойство,состоящее в том, что гет(а 5 Ь 0 , 561) = 1 для любого а. не деляще-гося на, 3, 11 или 17. ЭТО так называемое число Кармапкла. Числа,подобные этому, выдают себя за простые в большом количестве те-стов, но терпение все же помогает распознать их. Только в 1992году было доказано, что существует бесконечно много чисел Кар-м аи к л а.

Упражнения

3.1 Выполните М-файл iibno.m, набрав f ibno в MATLAB'e. Дли-на вектора f определяется командой l e n g t h ( f ) . Чему равнадлина f в нашем случае? Чему равны числа Фибоначчи, бли-жайшие к 1000 слева и справа?

3.2 Воспользуйтесь командой h a i l , чтобы найти число шагов, не-обходимых для достижения 1 при начальном значении 27, инаибольшее значение, достигаемое в ходе итераций.

Модифицируйте ha i l .m так, чтобы выдавалось число ите-раций и наибольшее достигнутое значение, но не выводилсяграфик в конце. Полученный М-файл назовите hail2.m.

Измените h a i l 2 . m, как указано далее, и назовите егоhail3.m. Удалите строку n = input ('Введите п ' ) ; , новставьте строки

Page 54: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Упражнения 53

for k=50:100

в начале и

end % конец цикла for k=50:100

в конце. Что эгют Л1-файл делает? Проверьте, выполнив его,т.е. наберите h a i l 3 в окне MATLAB'a.1'

Воспользовавшись дневником (В 1.3.4) для сохранения ре-зультатов hail3.m, рассмотрите все значения п от 50 до 100.для которых итерации приводят к таким же наибольшим зна-чениям, как в случае исходного числа 27. Для каждого изних установите число итераций, необходимых для достиже-ния 1.

3.3 Наберите format short <Enter>. Пусть 6п и 7п обозначаютцелые числа, представпмые в обычной десятичной системе счи-сления в виде цепочек символов из п шестерок и п семероксоответственно. Так. G.j = 6666 и т.д. Воспользуйтесь коман-дой gcdiv, чтобы найти ИОД чисел 6П и 7п для п — 1, 2, 3 . . . . .Какой из ответов неверный? Как вы узнали об этом?

Перейдите теперь в режим format long и повторите уп-ражнение. Каково теперь новое значение п с неверным резуль-татом? И снова, как вы можете удостовериться, что для этого?! ответ неверен?

3.4 Если вы наберете pow(17,1000,100). то в ответ получите 1.так что 1.71000 есть 1 плюс кратное числа 100, т.е. 17 1 0 0 0 — 1кратно 100. Каковы две последние цифры числа 17 1 0 0 0? Темже способом покажите, что 17 1 и о 0 — 1 кратно 99 и 101. Из чеговы можете заключить, что 17 1 0 0 0 — 1 кратно 99 х 100 х 101?(Здесь используется тот факт, что 99, 100 и 101 не имеют об-шего делителя.)

Используйте pow, чтобы найти три последние цифры 19" 0 0 0.Найдите остатки от деления \7ЛЛ1Л и 33131 7 на 112643.Замечание.: Команда MATLAB'a rem здесь не годится, по-

скольку числа слишком большие, и поэтом;' придется исполь-зовать М-файл степенного алгоритма pow. Подумайте, почемуиз представления 17 = 1 4-16 следует, что 17 3 3 1 3 — 1 делится на16? (Это математический вопрос.) Понимаете ли вы, почему

*•' Не следует использовать переменную (индекс) внешнего цикла к как тако-вую во внутренним цикле. В данном случае это не приводит к ошибке толькопотому, что внутренний цикл имеет тип while . . .end. а во внешнем цикле к посуществу но используется. — Прим. иерее.

Page 55: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

54 Глава 3. Целые числа

подобным же образом 331317 — 1 делится на 16? Что вы можетесказать о НОД(17- Ш - 1,331317 - 1)?

3.5 Воспользуйтесь pow, чтобы найти rem(2 1 3 E M 6 7 f\ 1394677). Поче-му можно сказать, что число 1394677 не является простым?

3.6 Наберите М-файл, приведепшлй ниже, и назовите его mypow .m:

m=10"7+l;while m<l(T7+100

m '/, Без точки с запятой!pow(2 ,m-l ,m) '/, Без точки с запятой!

m=m+2;

end

Что этот файл делает? Воспользуйтесь им (и, если необхо-димо, дневником, хоти может оказаться полезной и командаpause), чтобы найти только два числа между 107 и 10' + 100,которые, возможно, могут оказаться простыми.

3.7 Создайте функцию h=gcdiv3(a,b,c), которая вычисляетНОД трех чисел а, Ь. с. Вот один из способов сделать это. ВашМ-файл должен начинаться строкойfunction h=gcdiv3(a,b,с)и он должен просто вычислять х = НОД(а, b), a затем h =НОД(х, с), каждый раз вызывая уже существующую функциюgcdiv. Хорошо известно, что

НОД(а; Ь, с) = НОД(НОД(а. Ь), с),

так что ваш М-файл будет очень коротким. Пусть его имя бу-дет gcdiv3.m, чтобы указать, что это М-файл.

Протестируйте функцию h = gcdiv3 на нескольких трой-ках небольших чисел, чтобы убедиться, что она дает правиль-ные ответы. Затем, вычислите

НОД(414304,56496,3-51824) и НОД(196054Л75131,133407).

Создайте М-файл gcdrand .m со следующими строками (этоодин из методов получения «случайных» чисел, в данном слу-чае в диапазоне от 1 до 106):

t = fix(clock)и = t ( 6 )

randC'seed',n)a = round(rand*10"6)b = round(rand*10"6)

Page 56: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

3.5. Tip иложенне 5 5

с = round(rand*10~6)gcdiv3(a,b,c)

(Мы обсудим «случайные» числа более детально в гл. 5.) Про-гоните этот М-файл раз 20 и выпишите полученные НОД (невыписывайте числа а, Ь, с). Какой процент проб даст НОД, рав-ный 17 Позднее мы проведем исследование (гл. 9), котороеопределит «вероятность» того, что НОД трех случайно вы-бранных чисел равен 1. —как теоретически, так и эксперимен-тально.

3.5. Приложение

3.5.1. Доказательство степенного алгоритма

Ключевым фактом здесь является то. что мы можем взять остаткипа любом этапе вычислений и всегда придем к тому же результату.Так, если нужно найти х — rcm(ob,rn), мы можем последовательновычислять

р — rem(a. m), q = rem(b,m). ;r = vem(pq, т). (3.2)

Так, например. rem(973 х 58,10) = rcm(3 х 8,10) = rem(24,10) = 4.Конечно, это просто числа единиц у сомножителей 973 х 58, по-скольку мы берем остатки от деления па 10.

Имеется чрезвычайно быстрый алгоритм вычисления остатковдля больших степенен. Приведем пример. Пусть нужно вычислитьj. = гет(7г>0,11). Во-первых, найдем двоичное представление пока-зателя степени, т.е. числа 50. Это будет

50 = (0 х 1) + (1 х 2) + (0 х 22) + (0 х 23) + (1 х 24) + (1 х 25).

Таким образом,

75О = 72 х / | 6 х " 3 2 . (3.3)

Мы вскоре увидим, как это сделать быстро. Затем последователь-но вычислим остатки от деления на 11 чисел 72, 74, 78, 71 6, 73 2. Этоделается повторным возведением в квадрат и последующим при-менением соотношения (3.2). Так, мы вычисляем rem(72,11) явнымобразом, затем возводим ответ (5) в квадрат и снова находим оста-ток. На этот раз получится 3, что в квадрате даст 9. и поэтому те-перь не надо находить остаток. Вся последовательность имеет вид:

rem(7 2,ll) = 5,rem(52.ll) = 3. 9. rem(92,11) = 4, rcm(42,11) = 5.

В силу (3.3) нам нужны лишь первый, четвертый и пятый из этихрезультатов. Лучше всего свести все это в таблицу (см. табл. 3.2).

Page 57: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

56 Глава 3. Целые числа

Таблица 3.2. Степенной алгоритм.

I) ]

7•72

74

7 s

7 i e

7 3 2

rem(k,ll)

i

53945

d=6vn

010011

x на ЭТОТ момент

155591

Заметим, что содержимое столбца «ж на этот момент» меняетсятолько и том случае, когда в столбце «бит» появляется «1», указы-вающая, что эта степень 2 действительно присутствует в выраже-нии (3.3).

Биты вычисляются следующим образом. Начнем с d — rem(n. 2)как с разряда единиц п, т.е. с самого правого разряда в двоич-ном разложении п. На каждом следующем таге п заменяется на(п — d)/2; этим очередной бит бинарного разложения переносится вкрайнее правое положение. Для п = 50 мы последовательно полу-чаем:

d=rem(50,2)=0; п = (50 - 0)/2 = 25:d=rem(25,2)=l; п = (25 - 1)/2 - 12;d=rem(12,2)=0; п = (12 - 0)/2 = 6;d^rem{6,2)=0; n = (6 - 0)/2 = 3;d=rem(3,2)=l; п = (3 - 1)/2 = 1;d=rem(l,2)=l.

М-файл pow.m; выполняющий все эти вычисления, выглядиттак:

function x=pow(a,n,m)b = а;х = 1;

while n>0d = rem(n,2);if d=-l

x = rem(x*b,m);endb - rem(b * b,m);n = (n-d)/2;

end

1 ' Эту строку следует записать в виде Ъ = rem(b.m)* 2; чтобы число а моглобыть 15-значным — иначе таким должно быть уже число а2. — Прим,, перев.

Page 58: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

4

Графики и кривые

В этой главе будет показано, как, используя MATLAB. нарисоватьграфики функций у = f(x), аппроксимировать двумя способамиФункции полиномами, решать уравнения вида f(x) — 0 и рисоватьпа плоскости семейство линий для построения их «огибающей».(О графиках z = f(x:y) см. гл. 17.) Методы аппроксимации оченьважны для приложений, в которых желательно заменить относи-тельно сложную функцию (или. фактически, множество данных,см. гл. 5) простым полиномом, с которым легко обращаться. Здесьимеется выбор между очень хорошим приближением функции f(x)вблизи некоторого заданного зпачения ж0 аргумента х. которое мо-нотонно ухудшается по мере удаления х (полипомы Тейлора), идостаточно хорошим приближением в более обширной области (ап-проксимация «подгонкой»). У каждого из них есть свои областиприменения.

4.1. Полиномы

Полиномы вида р(х) — ж4 + 2хл — Зх2 + 4ж + о вводятся как наборих коэффициентов:

» р=[1 2 - 3 4 5]

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

Корни полинома р (т.е. решения уравнения р(х) — 0) получим,выполнив

>> roots (p)

Page 59: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

58 Глава 4. Графики и кривые

Обратите внимание, что эта команда находит как вещественные, таки комплексные корни. Мы можем увеличить число отображаемыхцифр с помошью

» format long

Можно получить график полинома р:

» х=-4: .05 :2 ;>> y=polyval(p,x);>> p l o t ( x . y )

Первая строка создает вектор х с элементами от -4 до 2 с шагом0.05; т.е.

х = [-4.0 -3.95 - 3 . 9 . . . 1.95 2.0].

Как обычно, точка с запятой запрещает вывод на экран.Вторая строка вычисляет значения полинома р для всех х, со-

здавая вектор у той же длины, что и х. и содержащий р(—4)... .,р(2).Третья строка строит график зависимости у от х, отображая

соответствующие пары чисел и соединяя их (очень короткими) от-резками прямых.

Добавив

>> hold on» p l o t ( [ - 4 , 2 ] , [0,0])

нарисуем ось х. Команда plot берет первые значения из каждойквадратной скобки, образуя точку (—4,0), и соединяет ее с точкой(2,0) ; полученной с помощью вторых элементов из квадратных ско-бок. Таким образом, на экране рисуется ось х. Теперь видно, чгор имеет два вещественных корня на интервале от —4 до 2 и их по-ложение соответствует вычисленным значениям корней —3.18... и-0.728. . . . См. рис. 4.1.

4.2. Простые примеры вычерчивания кривых

Сначала вспомним основные шаги создания графиков (§ 1.2.2). На-пример, чтобы нарисовать кривую у = sinx для х между 0 и 2гг,выполним

» х=0: .05 :2*pi ;>> y=sin(x) ;>> p l o t ( x , y )

Page 60: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

4.2. Простые примеры вычерчивания кривых 59

Рис. 4 .1 . График полинома у = х + 2х3 — Зх + Ах + 5 с нарисованнойосью х.

Команда p l o t работает с двумя (одинаковой длины) вектора-ми значений координатных пар. Если в этом случае вы наберетеlength(х) или length(y) . то получите в ответ 126. Хотя оси мас-штабируются автоматически по максимальным значениям х и у,при необходимости их масштаб можно изменить вручную. Напри-мер, строка

» axis С [0 10 ~2 2])

отображает на экран область 0 < х < 10, — 2 < у < 2. Проделайтеэто, чтобы увидеть результат. (В версиях MATLAB'a до 4.0 вамможет потребоваться после axis повторить команду p lot(x,у) . }

Аналогично, чтобы нарисовать график, скажем, у — xsinx, сде-лаем следующее

» х=0: .05:2*pi ;>> у=х.*s in(x) ;>> p l o t ( х , у )

Обратите внимание на операцию . * (§ 1.2.1), которая перемножаетсоответствующие элементы векторов х и s i n ( x ) . и не пытайтесьпроделать невыполнимое умножение х на s in(x) как матриц (дляматричного умножения размеры этих векторов не согласованы).

Page 61: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

60 Глава 4. Графики и кривые

Теперь выполните

>> х = 0 . 0 1 : . 0 1 : 1 ;>> у=1/х;» у=1./х;>> plot(х,у)

Первая попытка, определить у — 1/х не сработает; вторая долж-на вычислить у — 1/х для 0.01 < .т < 1. Вспомним (§1.2.1). чтосимвол ./ используется для поэлементного деления: 1 делится поочереди на каждый элемент вектора х и результату присваиваетсяимя у. Команда 1/х не имеет смысла, поскольку нельзя разделить 1на вектор. (В версиях MATLAB'a до 4.2с выражение у=1, /х такженедопустимо.)

Набрав

>> t = 0 : . 0 5 : 2 * p i ;>> x=cos(t);>> y=sin(t);>> plot(x.y)

получим параметрическую кривую {(cost, sin г)}, которая, конечно,является окружностью радиуса 1 с центром в (0,0), хотя она и не вы-глядит очень «круглой» из-за автоматического масштабирования.Попробуйте

>> axis С'square')

и заметьте как «округлился» график. Мол-сете также воспользовать-ся командой

>> a x i s ( ' e q u a l ' )

которая делает масштабы осей одинаковыми независимо от формыкривой. Так, после

>> t=0:.05:2*pi;

» x=2*cos(t);

>> y=sin(t);

>> plot(x,y)

>> axis('equal')

получится изображение эллипса, у которого отношение большой ималой осей визуально равно 2:1. Замена a x i s ( ' equal ') наa x i s ( ' square') приведет к другому результату. Попробуйте!

Более тонкие примеры параметрических кривых приведены вупражнениях и исследованиях.

Page 62: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

4.3. Полиномы Тейлора G1

4.3. Полиномы Тейлора

Хорошей иллюстрацией графических возможностей является срав-нение графика такой функции, как sin а-, и графика ее приближенияполиномом Тейлора

X зГ 5! •"' v ' (2Ar — 1)!'

М-файл ts ine.m запрашивает значение к (это число членов поли-пома), затем рисует зеленым цветом «истинную» кривую и, посленажатия <Entcr>, к этой кривой дорисовывает красным цветомее приближение. Сначала масштабирование соответствует толькокривой синуса, а затем обеим кривым. Помните: чтобы выполнить«тот М-файл. достаточно набрать t s i n e с последующим <Enter>.Набирать .га не надо.

На рис. 4.2 синусоида, изображается сплошной линией, а прибли-жение Тейлора, для к — 5 (что соответствует степени 2к — 1 — 9) —точечной линией.

А вот М-файл tsine2.m рисует реальную синусоиду (она зе-леная), затем фиксирует масштабирование, и рисует приближе-ние (уже красным цветом). Это достигается выполнением командыa x i s ( a x i s ) после первой команды plot в М-файле tsine2.m. Обра-тите внимание на разницу, скажем, для случая к = 4.

Рис. 4.2. Синусоида (сплошная линия) и приближение Тейлора степени9 (точечная).

Page 63: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

62 Глава 4. Графики и кривые

Приближение с возрастанием к все меньше отличается от кри-вой при удалении от х — 0. По мерс приближения к к 10 кри-вые становятся более или менее неразличимыми в области от 0до 2тг.

Ниже мы приводим текст М-файла t s i n e . Даже если вы неочень внимательно следили за деталями, то все же должны отме-тить, как легко осуществляются в MATLAB'e все эти относительносложные действия.

У, Рисует приближение Тейлора

У, степени 2к-1 к синусоиде

k=input(3Введите число членов

ряда Тейлора для синуса: ' ) ;

х=0:.05:2*pi;

z=sin(x);

plot(x,z, 'g') У, Точная кривая синуса рисуется зеленым

*/, цветом

hold on

pause '/, Это приостанавливает выполнение до нажатия клавиши

1 Enter

w=x;

у=х;

s=-l;

for j=l:k-l

w=w.*x.*x/(2*j*(2*j+l));

y=y+s*w;

s=-s;

end

plot(x,y,'r')

У, Приближение рисуется красным цветом

hold off

Заметьте, что мы используем 'g ' , чтобы кривая рисовалась зе-леным цветом (см. §1.2.2). Пунктирная линия рисуется командойplot (х, у , ' — ' ) ; когда это требуется, символ - применяется длязадания сплошной линии. Мы уже встречали команду hold on,которая позволяет сохранить график и поверх него нарисовать дру-гой. Поэтому в конце необходимо отменить режим сохране-ния графика, выполнив команду hold off. И опять обратитевнимание на использование в этом файле поэлементного умно-жения . *.

Page 64: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

4.4. Приближения с помощью функции polyfit

4.4. Приближения с помощью функции polyfit

63

Совсем другой подход к приближению функций полиномами да-ет использование функции poly f i t , которая подбирает для кривойполином заданной степени по методу, минимизирующему расстоя-ние между трафиками полинома и истинной кривой, усредненное повсей их длине. (См. также гл. 5.) Так, например, выполните М-файлс названием polyex-m:

а=0: .05 :2*pi ;b = s i n ( a ) ;c = p o l y f i t ( a , b , 5 ) ;d=polyval(c,a) ;p l o t ( a , d , ' r ' )hold onpausep l o t C a . b , ' g ' )hold off

Файл находит приближение синусоиды полиномом 5-й степени вобласти от 0 до G.3, используя а в качестве независимой перемен-ной. Полиномиальное приближение с есть просто список коэффи-циентов: чтобы вычислить его в точках а, используется функцияpolyval. Первая команда plot рисует красным цветом приближе-

1

0.806

0.4

0.2

0

-0.?.

-0.4

-0.6

-О.В

\

\

•••

7 " \ :

V /

\

Рис. 4.3. Синусоида (сплошная) и приближение polyfit степени 3 (то-чечная линия).

Page 65: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

64 Глава 4. Графики и кривые

ние. а вторая команда plot рисует зеленым цветом собственно си-нусоиду. Обратите внимание, как сильно отличается это прибли-жение от приближения Тейлора той же степени, получающегося спомощью ts ine.m при А1 ~ 3.

На рис. 4.3 показан результат применения программы polyex.mдля степени 3.

4.5. Задача о козе

Здесь рассматривается хорошо известная 'задача, приводящая к до-вольно громоздком}- уравнению, которое мы можем решить как гра-фически, так и численно.

Задача. Коза привязана п точке на границе круглого поля с ра-диусом 10 метров. Какой длины должна быть веревка, чтобы козамогла щипать траву ровно на половине площади поля?

Пусть .т — длина персики в метрах. Некоторые манипуляции сплощадями секторов и треугольников дают для х уравнение

2(х2 - 200) arccos (~) - х \ / 4 0 0 - х 2 + ЮОтг = 0. (4.1)

Посмотрите на рис. 4.4 и обратитесь к § 4.7.1. Вспомните, что обрат-ный косинус arccos в MATLAB'e вычисляется командой acos. Пред-ставляется невозможным решить это уравнение явно! Для графиче-ского решения легко нарисонать левую часть уравнения (4.1)— этоделает М-файл goatgr.m . Из графика ясно (достаточно взглянутьна рис. 4.4). что решении лежит где-то возле х ~ 10. Один из спо-собов вычислить точное значение решения — это воспользоватьсявстроенной ' ' функцией fzero. Для ее работы нам нужен М-файл,содержащий определение рассматриваемой функции. В данном слу-чае это goatf n. m , которая выглядит так (эта функция доступна вамчерез Интернет, и поэтому пет необходимости создавать ее):

function y=goatfn(x)у=2*(х.*х-200).*acos(x/20)-x.*sqrt(400-x.*x) + 100*pi;end;

l> В более* поздних версиях эта команда оформлена уже как М-файл. Текствстроенной функции недоступен пользователю и представляет собой исполня-емый (*.ехе) код, обычно на языке С. Это делается с целью сокращения вре-мени счета в тех случаях, когла производимые функцией вычисления могутбыть очень большими. Таковы sin, cos. exp и целый ряд других, но подавляю-щее большинство команд системы -•• это М-файлы. которые можно вызвать дляпросмотра в командном окне (и ваши г.обстпенные М-файлы тоже) с помощьюкоманды type. - -Прим. персе.

Page 66: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

4.6. Огибающие семейства линий 65

Рис. 4.4. Коза привязана в точке G. Мы хотим определить длину х ве-ревки, которая позволяет козе щипать траву па половине поля. Уравне-нием для х' является (4.1), что доказывается в § 4.7.1. Штриховка нужна;\пк этого доказательства.

Заметим, что выполнение команды MATLAB'a goatfn приведет кошибке, но, скажем, команда goatfn(lO) даст значение функциидля х = 10. Что произойдет, если вы наберете goatfn(25)? Каковапа самом деле «область определения» функции в задаче о козе, т.е.область х. для которых у принимает вещественные значения?

Теперь наберем

» a=fzero('goatfn',10)

что означает «найди решение а уравнения goatfn(x)=0 вблизи ж=10».В режиме format long можно увидеть очень точную оценку.

4.6. Огибающие семейства линий

Интересным способом использования графики MATLAB'a являет-ся вычерчивание семейства линий на плоскости и его огибающей.Например, М-файл parnorm.m рисует нормали к параболе у = х2,параметризованной как х — t,y — t2. Нормаль к параболе в точке£. £*) описывается уравнением

у -t2 = -—(х - t), т. е. х + 2ty - t - 2t3 = 0.

5-4196

Page 67: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

66 Глава 4. Графики и кривые

Другими словами, p(t)x + q{t)y + r(t) = 0, где p(t) = 1, q(i) — 2t иr(t) = — t — 2t3. Эти функции р. q. г в MATLAB'e имеют вид

p=ones(sizeCt));q=2*t;r = - t - 2 * t . * t . * t ;

Обратите внимание на использование ones(size(t)), когда функ-ция тождественно равна 1. Для создания p(t) = 5 нужно было бынаписать p=5*ones(size(t)). Заметьте, как используется .* привычислении значения куба t. Можно также написать r=-t-2*t . "3 .

Другие возможности для задания р, q.r рассмотрены ниже.М-файл parnorm.m требует ввода:

(i) ограничений на х (используем xl — —2, хи — 2, т.е. потребуем.чтобы значения х лежали между —2 и 2);

(ii) нижнего предела изменения у (используем yl = —1). Верхнийпредел у определяется тогда из нашего требования, чтобы раз-меры области изменения х, а именно 4, совпадали бы с разме-рами области изменения у;

(iii) границ изменения параметра t (используем Ы = — 2, tu = 2, такчто t изменяется от —2 до 2, как и х).

Выполнение parnorm.m (наберите parnorm и <Enter>) приведетк вычерчиванию в графическом окне всех линий, и глаз непроиз-вольно выделит другую кривую с заострением вниз, которая ка-сательно ко всем линиям. Эха остроконечная кривая называетсяогибающей нашего семейства нормалей. Нажатие клавиши <Enter>позволит выделить остроконечную кривую, вычертив ее белым ^цветом. См. рис. 4.5.

М-файл parnorm. m является частным случаем М-файлаlinenv.m, который вычерчивает семейство линий

где p,q,r — любые функции параметра t над некоторой ранее за-данной областью значений t. Мы получим М-файл parnorm.m изlinenv.m, задав функции p,q,r в нужном месте (см. ниже). В ис-ходный М-файл добавлено несколько строк так, что красным цве-том рисуется парабола и (после нажатия <Enter>) белым рисуется

1> В версиях MATLAB'a, начиная с 5.0, фон для графиков по умолчаниюбелый. Чтобы сделать фон черным, следует перед началом сеанса выполнятькоманду vhitebg без параметров. — Прим. перев.

Page 68: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

4.6. Огибающие семейства линий 67

•1

2.5

2

1.5

1

0.5

0

-0-5

i

•IЩИ

W/i\ \ \ \ х х ч х ч 4

_2 -1.5 -1 -0.5 0 0.5 1 1.5 2

Рис. 4.5. Нормали к параболе у = х2 и их «огибающая» (кривая сострием вниз).

сама огибающая кривая. В упражнении 4.7 описан метод расче-та огибающей кривой. Еще прочесть об огибающих вы сможете вгл. 10.

Основной М-файл linenv.m не завершен: прежде чем вы смо-жете выполнить его, необходимо уточнить функции р.д,г в следу-ющих строках:

Р=q=

У, Это три строки, где задано

У, уравнение линии px+qy+r=0,

У, p,q,r являются функциями t.

У, Осторожно!! Выражение q=4 создаст

% не вектор, а константу.

У, Поэтому если какая-то из функций p,q,r

У, является константой, скажем к, необходимо

У, записать это так: k*ones(size(t)) .

У, Здесь onesCsize(t)) - вектор из единиц

У, того же типа, что и вектор t.

Page 69: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

68 Глава 4. Графики и кривые

В частном случае нормалей к параболе (как в parnorra.m) намнужно уравнение нормали к кривой у ~ х2 в точке (t,t2). котороеприведено в начале этого раздела.

Упражнения

4.1 Выполните

» а = 1 ;

» х = - 5 : . 0 5 : 5 ;>> у = х . * х . * х - а*х + 1;>> plot(x,y)

Несмотря на то. что 1 — число, MATLAB достаточно разумен,чтобы прибавить ее к вектору х.*х.*х-а*х, компоненты ко-торого содержат значения хл — ах для х = —5. х = —4.95,х — —4.9,.... х ~ 5. Таким образом, 1 прибавляется к каждо-му элемент}' итого вектора.

Сможете ли вы па основе графика сказать, сколько веще-ственных корней имеет уравнение л;3 — х -+- 1 = 0? Выполните

>> axis([-Б 5 -3 3])

Это должно помочь: команда вынудит MATLAB ограничитьоси координат пределами — 5 < х < 5 и —3 < ]/ < 3.

М-файл cubics.m. выполняющий указанные выше дейст-вия, позволяет вам выбрать своп области изменения х и у. атакже значение п. Итак, команды cubics <Enter>, за которы-ми следуют пять чисел —о, 5, —3, 3,1 со своим <Enter> каждое,рисуют функцию у = х3 — ах + 1 для —5 < х < 5, — 3 < у < 3.полагая а = 1. При этом ось х рисуется белым цветом. Загля-ните в этот М-файл. если хотите увидеть, как это все делается.

Попробуйте выполнить cubics с другими значениями а инайдите приближенно значение а, при котором график каса-ется оси х. так что имеется двойной корень. Как только выдогадаетесь о значении а. выполните cubics при 0.5 < х < 1 и—0.05 < у < 0.05. Вы обнаружите, что сможете сказать оченьточно, касается ли график оси. Найдите как можно лучшееприближение для и.

4.2 В Ы-файле tsine.m заменитеplot (x,z, ' g ' ) на plot (x,z. *z, 'g''). иp l o t ( x , y , ' r ' ) на p l o t ( x , y . * y , ' r ' ) .Назовите полученный М-файл, скажем, tsine3.m. Какие

Page 70: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Упражнения 69

фупкиии будут теперь нарисованы красным и зеленым цве-тами? Напишите формулы для них. Выполните этот М-файл.чтобы найти минимальное число членов (к), необходимых дляполучения хорошего полиномиального приближения при 0 <.г < 4. Какова степень --этого полинома? (Указание: это не к.)

4-3 В задаче о козе (§4.5), найдите значение х. близкое к 10, ис-пользуя f zero. Имеется только одно решение исходной задачи?(Взгляните на. график функции из задачи о козе.)

Выполните нижеследующие строки, аппроксимирующиефункцию у из задачи о козе полиномом z степени 3 (можно сде-лать это. инедя операторы непосредственно в окне MATLAB'aпли через М-файл):

х=-19:.05:19;y-goatfn(x);z = p o l y f i t ( x , y , 3 ) ;v=polyval(z 3 x);p l o t ( х , у , ' g ' , x , v , ' г ' )

При этом зеленым цветом рисуется истинная функция из зада-чи о козе, а красным - - приближение. Вы должны согласиться,что обе кривые очень близки в области от —19 до 19.

Наберите z, чтобы узнать, каков полипом z. Воспользуй-тесь командой r o o t s ( z ) , чтобы найти его корни. Почему по-явился «дополнительный» корень г, не имеющий отношения кнулю функции задачи о козе?

4.4 Введите х=. 05: .01:2; а затем введите необходимые строки,чтобы нарисовать график у — x'sin ^ в интервале 0.05 < х < 2.(Будьте осторожны с невинно выглядящим ~. Сравните с §4.2выше.) Воспользуйтесь последовательностью команд, анало-гичных приведенным в упр. 4.3, чтобы начертить полиноми-альное приближение степени 7 на том же графике, что иисходная кривая. Как вы думаете, почему сходство такое пло-хое?

4.5 М-файл hypocy .m рисует так называемые гипоциклоидпыекривые (известные также как спирографы), которые полу-чаются качением окружности радиуса Ъ внутри окружностирадиуса а > Ь. Кривая образуется точкой Р, жестко закре-пленной на катящейся окружности на расстоянии d от еецентра.

Page 71: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

70 Глава 4. Графики и кривые

Р и с . 4.6. Генерация гипоциклоиды окружностью радиуса Ь, катящейсявнутри окружности радиуса a > Ъ. Гипоциклоида вычерчивается точкойР, прикрепленной к радиусу CQ движущейся окружности, где длина СРравна d- На рисунке a — 3,6 = \,d = 0.7 .

Параметрическое уравнение гипоциклоиды имеет вид:

Ых — (а — b) cos

у — (а — b) sin

ticos t.

— d sin t (4.2)

(см. §4.7.2 и рис. 4.6). М-файл запрашивает значения a,b,dи верхний предел для t, т.е. вы должны ввести такое п, что0 ^ i < 7i7r. Нарисуйте кривую, используя hypocy .m с 6 = rf = 1и а = 2. Объясните то. что увидите, используя параметриза-цию (4.2).

Возьмите a — 3,4,5,6,7 при Ь = d — 1 и определите вкаждом случае: (i) наименьшее целое значение п, при которомкривая замыкается и начинает повторяться; (и) число «высту-пов» (точек заострения) на кривой.

Сможете ли вы написать общую формулу для результатапри любом целом а > 2?

Page 72: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Упражнения 71

4.6 Покажите, что прямая, перпендикулярная отрезку, соединя-ющему точки (а,Ь) и (c,d) и проходящая через его середину,имеет уравнение

2х{а - с) + 2у{Ь - d) ~ а2 - Ь2 + с2 + d2 = 0.

(Указание: Используйте свойство равенства расстояний: точ-ка (ж, у) находится на искомой прямой тогда и только тогда,когда ее расстояния от (а, 6) and (с, d) равны. Это приводит куравнению

(x-a)2 + (y-b)^(x-c)2 + (y-d)2,)

Проверьте, что для точек (0,1) и (£,0) такая прямая опи-сывается уравнением

2xt-2y + l- t2 = 0. (4.3)

Завершите М-файл linenv.m, чтобы построить огибающуюсемейства таких прямых для —2 < t < 2.

4.7 Предположим, что уравнения

рх + qy + г = 0 и р'х + q'y + г' — 0 (4.4)

(где p,q,T являются функциями £, как в упр. 4.6, а штрихозначает дифференцирование по t) разрешены относительнох и у:

r'q - rq' rp' ~ r'pх- —, , , у= —; — • (4.5)

pq'~p'q pq'~p'q

(Это просто решение системы двух линейных уравнений.) Та-ким образом, хну являются функциями параметра t, и когда£ изменяется, точка (х, у) вычерчивает некоторую кривую.

Прямые, но громоздкие выкладки показывают, чтоКасательная к кривой (х,у) в точке с параметром tявляется в точности исходной прямой p(t)x + q(t)y +r(t) =0.

Таким образом, (4.5) дает огибающую кривую, которая явля-ется касательной ко всем линиям семейства.

На практике обычно проще прямо найти решение, чем вос-пользоваться (4.5). Например, в случае нормалей к параболеиз § 4.6 мы получим огибающую из уравнений

х + 2ty - t - 2t3 = 0 и 2у - 1 - 6£2 = О,

где второе уравнение получено дифференцированием первогопо t. Второе уравнение прямо дает у, после чего х находится

Page 73: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

72 Глава 4. Графики и кривые

из первого уравнения:

у= -(l + 6t2).

Это кривая с острием вниз на рис. 4.5. Мы можем найти урав-нение кривой в координатах х,у. исключив t. Так как б£2 =2у - 1, то 2 Ш 6 = (2у - I ) 3 . И так как 4/3 = -х, то 1616 = х2.Следовательно, 21Gx2 = 16(2у — I ) 3 . т.е.

27ж2 = 2{2у- I ) 3

является уравнением огибающей кривой в данном случае.Найдите уравнение огибающей в случае семейства прямых

(4.3). Как это связано с формой кривой, появляющейся тогда,когда вес они вычерчены на экране?

4.7. Приложение

4-7.1. Вывод уравнения (4-1) из задачи о козе

Из рис. 4.4 следует, что область, где привязанная в точке G козаможет щипать траву, ограничена дугой окружности от G вдоль гра-ницы поля к Л, затем вдоль дуги окружности с центром в G к В и,наконец, вдоль границы поля обратно к G. Площадь этой областиесть сумма

(i) площади сектора окружности с центром в G радиуса х, огра-ниченного прямыми линиями BG.GA и дугой окружности сцентром в G от А до В, и

(ii) удвоенной площади части поля ниже хорды BG.

Площадь последней части есть площадь кругового сектора поля собходом от С вдоль радиуса к В, вдоль окружности к G и вдольрадиуса к С, минус площадь заштрихованного треугольника GCB.

Пусть в — угол CGA (равный углу CGB). Площадь (i) есть\х2{2в), а в ~ a rccos^, так что площадь равна x 2 a r c c o s ^ . Пло-щадь (ii) есть

Прибавляя (з) к удвоенной (ii) и полагая результат равным половинеплощади кругового поля, 507г, получим уравнение (4.1).

Page 74: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

4.7. Приложение 73

4-7.2. Вывод параметрического уравнения (4-Ю

В обозначениях рис. 4.6 отрезок, соединяющий точку О с центромС катящейся окружности, образует угол и от горизонтали противчасовой стрелки, так что

С = ((а — Ь) cos u, (а - Ь) sin it).

В то же время отрезок, соединяющий С г движущейся точкой Р,поворачивается на угол t по часовой стрелке от ее исходного го-ризонтального положения Ро в предположении, что центр С милойокружности начинает движение в положительном направлении осил. Условие качения состоит в том, что дуга большого круга от Q o кЛ равна дуге малого круга от Л к Q. где CPQ есть прямая линия,как показано на рисунке. Следовательно,

г., ,-. Ы

ova + г) = аи. так что и = -.а — о

Уравнение (4.2) следует из того, что точка Р имеет координаты

{(а - Ь) СОЙ и,(а - b) sin и) + d(cos t, - sin t);

последний знак минус получается из-за того, что t измеряется про-тив часовой стрелки.

Page 75: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Представление данных

Как следствие технологического прогресса, быстро возрастает объ-ем данных во всех областях практических приложений. Целью пред-ставления данных в другой форме является желание помочь в ис-пользовании этой массы данных и в извлечении из них дополни-тельной информации удобным образом.

В этой главе мы обсудим основы анализа данных, используя не-которые средства элементарного статистического инструментарияMATLAB'a. Мы рассмотрим характеристики последовательностиданных, соотношения между такими последовательностями и из-влечение специфической информации из них. Таким образом, кругтем, рассматриваемых нами, совпадает с элементарными функци-ями многих современных пакетов по статистике, электронным та-блицам и базам данных.

5.1. Анализ данных

Для заданной последовательности данных D = [d\, d2, •. • , dn\ мож-но вычислить такие простые статистические характеристики (ста-тистики), как максимум, минимум, среднее и медиану (величину,превосходящую половину данных и меньшую другой их половины).Им соответствуют команды MATLAB'a max, min, mean, median.В качестве D здесь может быть и вектор-столбец, и матрица.

Чтобы понять работу некоторых наиболее используемых команд,возьмем, например,

» D - [2 1 3 4 7]

Page 76: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

5.1. Анализ данных 75

Таблица 5.1. Вычисление; статистик набора данных (вектора D)

ОписаниеМинимумМаксимумСреднееМедианаПроизведение элементов DСумма, элементов DКумулятивная суммаСтандартное отклонениеУпорядочивание D

Строка MATLAB'am = min(D)М = max(D)р = mean(D)Р = raedian(D)

pr = prod(D)dsum = sum(D)csum = curasum(D)

s - std(D)so = sort(D)

Результат17

3.43

16817

[2 3 6 10 17]2.3022

[12 3 4 7]

В таблице 5.1 показаны статистики1' этого набора данных, вычи-сленные с помощью MATLAB'a. Отметим, что упорядочивание де-лается только в порядке возрастания; каков поэтому будет резуль-тат следующего выражения?

>> D1 = - sort(-D)

Полезной формой представления данных является гистограм-ма. Команда MATLAB'a для этого есть просто hist: например.hist(D) выведет на график гистограмму набора данных D. Поумолчанию отрезок min(D) < х < rnax(D) разбивается на 10 рав-ных частей, и высота прямоугольников соответствует числу элемен-тов набора в каждой из них. Можно взять другое разбиение: чтобыоно состояло из трех частей, наберите

>> histCD, 3)

Таким образом, здесь интервалы суть 1 < х < 3, 3 < х < о, 5 <х < 7 и центры оснований прямоугольников расположены соответ-ственно в точках 2, 4, 6. Чтобы найти размеры (у) групп, наберите

>> у = hist(D, 3)

а чтобы найти размеры (у) групп и положения (х) середин интер-валов, наберите

» [у х] = hist(D, 3)1* Если мы обозначим среднее последовательности D через d, то мера разброса

(дисперсии) или изменчивости (вариативности) дается стандартным отклоне-нием s, таким, что

nd~

Page 77: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

76 Глава 5. Представление данных

В нашем случае результат равен у = [3 1 1] ! ' и х — [2 4 6].Имеется с:вязь с прямоугольными диаграммами: наберите help

bar, чтобы узнать особенное™ применения bar. и вы увидите, чтоbarfx, у) создаст график, подобный h i s t ( D , 3).

5.1.1. Сортировка

Часто бывает необходимо упорядочить несколько последовательно-стей данных либо по возрастанию, либо по убыванию. Например,для двух связанных между собой последовательностей данных мо-жет потребоваться упорядочить вторую в соответствии с первой.

Пример такого упорядочивания приведен а М-файле tomato.m,который сопоставляет количество х удобрений с весом у вырашен-ных плодов томата.

Набрав tomato, получим два вектора х и у. но элементы х неупорядочены по возрастанию. (Вы. конечно, можете увидеть эле-менты х. набрав х.) С помощью команды plot (х,у, ' g * ' ) нарисуемграфик распределения (разброса, рассеяния) данных (зависимостьмежду х и у) с помощью символов «*» зеленого цвета.

Набрав p l o t ( х , у ) , получим график некоторой линии, но таккак данные не упорядочены, он напоминает скорее каракули, чемкривую. Один из способов исправить это дают следующие команды:

>> [sx k] = s o r t ( x ) ;» sy = yCk);>> p l o t ( s x , sy)

В первой строке х упорядочивается по возрастанию, при этом пер-воначальное положение его элементов записывается в вектор к.Упорядоченный х запоминается как sx. Во второй строке у пе-реупорядочивается так, чтобы его компоненты соответствовали х.Набрав [х у sx sy]. вы увидите четыре столбца цифр одновременно.

Теперь график линии больше напоминает кривую. Наконец, какмы уже говорили выше в этой главе, данные легко упорядочить спомощью s o r t в убывающем порядке, изменив у них знак на про-тивоположный.

11 Элемент 3 из D попал в первую группу и поэтому не повторился во ито-рой. R командах MATLAB'a много таких специфических ситуации. Они частоне отражены в описаниях команд, но обычно реализованы в соотвеггтпии со"здравым смыслом.— Прим. персе.

Page 78: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

5.1. Анализ данных 77

5.1.2. Создание запросов

Средства создания запросов на выборку или выборки данных, ле->1сащих в недрах базы данных, исе больше используются сейчас вразличных управленческих информационных системах. Здесь мыпроиллюстрируем сказанное двумя простыми примерами. Важнуюроль и создании запросов па выборку играют условия отбора запи-сей, часто называемые критериями. В MATLAB'e эти условия могутбыть представлены в виде вектора (или матрицы) из элементов 0 и1. означающих соответственно «не удовлетворяет» и «удовлетворя-ет».

В качестве первого примера, рассмотрим те томатные растения,которые дают больше плодов. Задача состоит в том, чтобы постро-ить график зависимости между удобрениями и весом растений сурожаем больше 5 кг. Чтобы выделить эти случаи из всего мно-жества данных, построим нужный вектор d из единиц и нулей,подсчитаем общее число t единиц и из случаев, соответствующихтребованиям, построим векторы x l и y l (оба длины t):

» tomato;>> d = Су>=5) ; У, Условия отбора записей ! ! ! !

>> t = sum(d) 7, Число <<удовлетворяющих>> условиям

>> [v k]=sort(-d); У, Перенос <<удовлетворяющих>> объек-

У, тов в начало

>> k = k(l:t) */, Ограничение изменения индекса

У, величиной 't! (запрос)

>> xl=x(k); yl=y(k); '/, Извлечение результатов запроса

'/, из х и у

Если мы теперь пожелаем построить график xl как функции отy l . то сначала необходимо упорядочить yl соответственно x l . какэто сделано выше. Здесь t = 7.

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

>> format compact; t=0: 0.15: 2*pi; n_count=length(t)>> x=cos( t ) ; y = s i n ( t ) ; %— заданное множество данных—>> d = (y>=0) & (x<=0); 7, Условия отбора записей!>> t = sum(d) 7« Число <<удовлетворяющих>>

'/, условиям>> [v i ] = s o r t ( - d ) ; 7. Перенос индексов <<удовлет-

'/, воряющих>> объектов в начало

Page 79: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

78 Глава 5. Представление данных

» xl=x(i); yl=y(i)» plotCxl.yl)

7, Ограничение изменения индек-7. са величиной ' t ' (запрос)7с Извлечение результатов запроса.7, вывод их на график

Попробуйте это. Получится ли t — 10?

5.2. Приближение по методу наименьших квадратов

Если даны две последовательности данных (скажем, х и у из приве-денного выше примера, о томатах), то, рассмотрев графики их рас-положения, мы можем сделать некоторые выводы о соотношенииили связи между ними. Мы хотим найти функцию, которая при-ближенно описывает такую связь. Конечно, для этой цели функцииможно выбирать различными способами, исходя из внешнего видаграфиков расположения. Предположим, что такая пара множествданных задана как (xi.iji) для i ~ 1, 2,... , п. Удобно записать их ввиде двух векторов:

х = [хих2,.-. ,хп]т,

У = Ьъ2/2,--- ,УпГ•

Здесь мы их взяли как векторы-столбцы.

5.2.1. Приближение прямой линией(по методу наименьших квадратов)

Вероятно, простейшая функция, которую стоит проверить, —этолинейная,

У = а + /Зх,

когда мы пытаемся найти два скаляра а и в, такие, что линейныесоотношения

Yx = аУ2 =а

Yn = а + 0хп,

\ ( 11

\

\ 1 .Г,

дают Y{ = г/i ДЛЯ всех i. Обозначим эту линейную систему черезАс = Y, где с т = (о в). Существуют ли такие скаляры? Это пере-определенная система линейных уравнений с неизвестными вели-

Page 80: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

5.2. Приближение по методу наименьших квадратов 79

чинами а и /3, а это означает, что в обшем случае ее нельзя удовле-творить точно1', каковы бы ни были а и j3.

Произвольный выбор а и Q даст ошибку величины \у\ — Fjj длякаждого i, и попытка найти приемлемое решение системы приво-дит к необходимости выработать какое-то соглашение относительноэтих невязок. В методе наименьших квадратов Гаусса предлагает-ся2' находить такое единственное решение а и 3, которое миними-зирует сумму квадратов невязок

R2 = | > , - Y'12-

где для всех г,

у . — cv 4- Яг •

5.2-1.1. Первый метод: применение оператора \

В МАТЪАВ'е для заданных х и у можно легко найти наилучшеерешение а и Д выполнив

>> А=[ones(size(x)) x]» с=А\у

Здесь А — матрица, приведенная выше, с единицами в первом столб-це и вектором х в качестве второго столбца. Вторая строка находитнаилучшее приближение с решения уравнений Ас = у. Как былоопределено выше, с(1) = а и с{2) — 0.

Поскольку Q и /3 теперь известны, мы можем воспользоватьсясоотношением

Y = Q + вХ,чтобы найти любую точку на кривой наилучшего приближения:например, после

» Y = с(1) + с(2)*х;» plot(x.Y)

будет получен график кривой наилучшего приближения (по методунаименьших квадратов).

^ Математически разрешимость зависит от того, принадлежит ли Y линей-ной оболочке двух векторов-столбцов из А. Так как rank(A) < 2, а на практикеча>:то п > 2, то система скорее всего несовместна, т.е. не имеет решения!

25 Дальнейшие подробности вы найдете в приложении к этой главе.

Page 81: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

SO Глава 5. Представление данных

Чтобы найти невязку Я2 приближения по методу наименьшихквадратов, наберите (обратите внимание, что у, Y, г являютсявекторами-столбцами)

» Y = А*с ;» г = у - Y ;» R2 = г '*г

5.2.1.2. Второй метод: применение polyf it

Для приведенных выше данных наберите

» С = polyfit(x, у, 1),

чтобы найти наилучшее приближение полиномом порядка 1 (т. е.прямой). Это даст С(2) = а и С(1) — ,8. Заметьте, что с былвектором-столбцом, а С является вектором-строкой! Чтобы най-ти невязку приближения по методу наименьших квадратов, исполь-зуя вектор-строку С, наберите

>> Y = polyval(C,x);» г = у - Y;>> R2 = г '*г

Вспомните § 4.1, что команда polyval вычисляет значения поли-нома С для значений х из вектора х. Таким образом, она находитточки кривой наилучшего приближения. Поскольку х и у являютсявекторами-столбцами, таковы же Y и г.

5.2.1.3. Пример данных: снова толшты

Эти данные были описаны в § 5.1.1. Некоторую информацию о нихможно получить, набрав help tomato. Используя метод наимень-ших квадратов, вы должны получить а — 4.3985 и [3 = 0.0966, аневязка будет равна Я2 — 0.388.

Вы можете выполнить приближение и нарисовать потом графикполученной прямой без предварительного упорядочивания данных.Но если вы захотите аппроксимировать их другой кривой (см. § 5.2.2)и нарисовать затем ее график, данные придется, переупорядочить.

5.2.2. Приближение полиномами

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

Y = в2х2 + (Зух + а.

Page 82: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

5.2. Приближение по методу наименьших квадратов 81

Как и прежде, мы хотим найти коэффициенты 02, А и а так, чтобыминимизировать невязку

где для всех i

Yi = /32х? + /Згж̂ + Q.

В MATLAB'e надо просто набрать

» С = polyfitCx, у, 2)

чтобы получить коэффициенты С(1) = /Зг, С(2) = 0i и С(3) =(>. Для нахождения с помощью вектора-строки С невязки методанаименьших квадратов наберите

>> Y = polyval(C,x);» г = у - Y ;» R2 = г'*г

Набрав help polyf i t , вы найдете, что polyf it может прибли-зить множества данных х и у полиномом любой степени к. В общемслучае функция имеет вид

Y = $кхк + •••+ (32х

2 + 0lX + a

и команда MATLAB'a С = polyf i t (х, у, к) дает требуемые ко-эффициенты в виде вектора-строки

С = [&, . . . , /?2, Pi, a].

Теперь оцениваемые величины для всех Х{ могут быть найдены как

>> Y = polyval(C,x);

Итак, с помощью polyf it легко могут быть найдены полиномы вы-соких порядков. Но это неприменимо в случае многих переменных,что обсуждается в § 5.2.3.

Тем, кто получил удовольствие от использования метода \, бу-дет приятно узнать, что он применим и здесь. Воспользовавшисьподсказкой при формировании множества А, вы получите то жерешение, что и при использовании polyf it

>> A=[ones(size(x)) х х ."2]; °/, операция ." выполня-'/, ется покомпонентно

6-4196

Page 83: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

82 Глава 5. Представление данных

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

Y = foe-* + faex + aили

Y = 02 sin х 4- 0\ cos x -г а.

5.2.2-1. Пример данных: опять томаты

Приблизим данные из tomato.m квадратичной функцией, восполь-зовавшись командой polyf it (x, у, 2). Должны получиться коэф-фициенты

[02 01 а] = [-0.0045 0.1776 4.1826]

и невязка R2 =0.217. В заключение используем polyfit(x, у, 3)для приближения кубической функцией. Коэффициенты будутравны

[/33 /?2 01 а] = [0.0004 -0.0144 0.2451 4.1088],

а невязка R2 —0.1905.Набрав toms, построим график линейного приближения, затем

квадратичного без упорядочивания и, наконец, квадратичного супорядочиванием. {Нажимайте <Enter> между графиками, что-бы прервать pause.) Ясно, что упорядочивание принципиально длявычерчивания графика квадратичного приближения! Загляните вМ-файл toms .m, чтобы посмотреть, как это сделано с помощью сор-тировки из §5-1.1. Приведем его существенную1' часть:

» [sx о] = sort(x);» sy = у(о);>> С = polyfit(sx,sy,2);

>> Y = p o l y v a l ( C , s x ) ;>> p l o t ( s x , s y , ' * W ' , s x , Y , J w ' )

5.2.3. Приближение данных функциями многихпеременных

В обсуждавшихся выше методах предполагалось, что мы имеем не-которую «выходную» зависимую переменную у, которая является

J) Отсылаем читателя к гл.17, где рассматривается построение кривых с до-статочным числом точек.

Page 84: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

5.2. Приближение по методу наименьших квадратов 83

функцией одной «входной* независимой переменной х. В примерео томатах вес плодов у по предположению зависит лишь от коли-чества удобрений х — мы не учитываем влияния солнечного осве-щения и влажности среди других возможных факторов! Но частореалистичнее предположить, что «выходные» данные у зависят отнескольких независимых «входных» переменных; и здесь мы пока-жем, как поступать в этом случае в предположении, что соотноше-ния являются линейнъши для всех входных переменных. Это пред-положение сделано лишь для того, чтобы упростить объяснения;многочленные соотношения высоких порядков могут быть рассмо-трены подобным же образом. Итак, обозначая «входные» перемен-ные через х{1*,... ,х^, попытаемся найти соотношение вида

у = а + в1х{1) + • • • + , в р х { р \

в которое х'1' входят лишь в степени 1. В примере, приведенномниже, отклик (ответная реакция) у на лечение диабетиков по пред-положению зависит от трех факторов: а:'1' — возраст, х1-2' ~ вес иж'3* = диета (преобразованных в числовые значения в соответствиис некоторой схемой).

Мы часто имеем дело с дискретными множествами данных ипоэтому предположим наличие р переменных («входных» факто-ров) и п значений («выходных» измерений) для этих переменных,которые представлены в виде векторов

У = [У\ № ••• Уп]Т

x ( i ) . r T ( D T ( i ) . . . XW]T

х ( 2 ) . Г т(2) (2) . _ . (2)-|ТX v LC, Xo Xn

(P) . rjp) (P) . . . fp)lTл. ' L 1 2 n 1

Как и выше для р ~ 1, предположим, что соотношение между у инезависимыми переменными х^1' ,х^2',... ,х' р ' имеет вид

Рассмотрим случай р = 3 (или трех «входных» факторов). Надонайти

Page 85: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

84 Глава 5. Представление данных

(т.е. частный случай вектора коэффициентов с), минимизирующий

где с = (a Pi ,3o

У =?У2

Уп

Y =

Yi \

Уп

А —

х{2)

"(2J

,(3) \• 1

.(3)

VЭта задача приближения по методу наименьших квадратов можетбыть записана в эквивалентной форме (удобной для MATLAB'a)

Ас = у.

Вы, конечно, узнали метод \! Эту же идею можно применить и вслучае многих переменных к приближению полиномами более вы-соких порядков (или другими нелинейными функциями). Как ужеотмечалось выше, команда p o l y f i t здесь уже не может помочь.В том виде, как она есть, p o l y f i t может быть применена лишьв случае одной переменной. В гл. 17 будет представлена командаpolyf it2.m, применимая Б случае р = 2.

Чтобы найти вектор-столбец коэффициентов с — [а 8\ 62 рз]т

и невязку В2 — Я 3 , должны быть выполнены команды MATLAB'a(используя обозначения x l для х ^ , х2 для х ' 2 ' и т.д.)

>> A=[ones(s ize(xl)) xl x2 хЗ];» с=А\у; Y=A*c; r=y-Y;>> R2 = r ; * r

5.2.3.1. Пример данных: d iabet ic .m

М-файл diabet ic .m содержит данные и их краткое описание, такчто наберите

>> help diabetic

>> diabetic

Эти множества данных сохраняются как у, x l , х2, хЗ. Вы увидите,что коэффициенты равны с т = [36,9601 -0.1137 -0.2280 1.9577],a R2 = R2 = 567.6629.

Page 86: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Упражнения 85

Теперь можно заключить, что реакцию на лечение описываетследующая функция (т.е. решение по методу наименьших квадра-тов):

У = У(х{1\х{2\/х(г}) = 36.9601-0.1137ж ( 1 )-0.2280х< 2Ч1.9577х ( 3 ),

где х^1) = возраст, х^ — вес и х^ = диета.

Упражнения

5.1 М-файл marks.m содержит отметки, полученные студентамиинженерного профиля по курсу дифференциальных уравне-ний за контрольную работу и предшествовавшее ей домашнеезадание. Если вы выполните М-файл, набрав marks, то полу-чите дубликат отметок в виде матрицы m k d a t a . Выполнив

>> x=mkdata( : ,1) ;>> y=mkdata( : ,2) ;

мы выделим первый и второй столбцы матрицы данных и при-своим им имена х (отметки за контрольную) и у (отметки задомашнее задание) соответственно. Теперь сделайте следую-щее:

(a) Вычислите по методу наименьших квадратов прямую (см.§5.2)

У — rv 4- >3т

и прямуюА' — 7 + &У-

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

(b) Выведите данные в виде графика и наложите на него гра-фик двух прямых. Вычислите значение угла между ни-ми1). И опять, опишите метод, использованный вами приполучении ответа.

1 ; Соотношение между множествами данных известно как корреляция. Здесьэтот угол является показателем того, как коррелированы эти множества дан-

Page 87: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

86 Глава 5- Представление данных

Подсказка: вы можете воспользоваться формулой

tan0i - t a n 0 2tan(0! - 02) = -——-~ji —.v 1 + tan 0i tan 02

5.2 М-файл mannheim.m дает зависимость между некоторыми про-изводственными показателями изготовления механизмов руле-вого управления автомобилем с усилителем и стоимостью про-дукции. В результате выполнения mannheim мы получим дан-ные в виде матрицы mdata размера 22 х 3. Обозначим первыйстолбец mdata через х, а второй — через у. Теперь попытай-тесь выполнить следующее:

(a) Сначала упорядочите данные по возрастанию х, обозначиврезультат через sx и sy.

(b) Пусть у—стоимость продукции и х — число произведен-ных изделий. Найдите линейное приближение у = а + ,3хдля этого множества данных.

(c) Определите две новые независимые переменные хМ> и х- )следующим образом (мы не приводим объяснения их прак-тического смысла):

м) _ Г х. х < 7, (2) _ / 0. х < 7,[ 7> ж > 7 [ х — 7, х > 7

для 7 = 3000.Во-первых, получите новые множества данных x l = x | : l '

и х2 = х ' 2 ' . Во-вторых, воспользуйтесь методом из § 5.2.3для случая упорядоченных данных и р = 2, чтобы по ме-тоду наименьших квадратов вычислить приближение вида

и найдите для него невязку. Наконец, нарисуйте графикнелинейного приближения, воспользовавшись командойp l o t ( s x , s y , ' * ' ,sx,Y), где Y, как обычно, содержит точ-ки нелинейного приближения, как в § 5.2.3. Не кажется ливам, что кривая приближает данные существенно лучшепрямой? Назовите возможную (из реальной жизни) при-чину, почему приближение, использующее две прямые ли-нии, намного лучше использующего одну.

Подсказка: Что произойдет, как только количествовыпущенных устройств превысит некоторое число? Кро-ме того, выполните help mannheim. Заметьте, что х^ —min(7,а;) и х = з;'1 ' + х^ для всех значений х.

Page 88: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

5.3. Приложение 87

Дополнительно рассмотрите приближение вида

и вместе с ним

5.3. Приложение

Здесь мы рассмотрим минимизацию невязки R2 подборкой а и в:(см. §5.2.1). Прежде чем продолжить, докажем известное неравен-ство Коши—Шварца.

Теорема 5.1 {неравенство Коши—Шварца.) Для любыхх, у 6 R." справедливо неравенство:

п

. (5.1)

Доказательство, (i) Достаточно рассмотреть лишь случай х ф Ои у ф 0, так как иначе результат тривиален: 0 = 0.(ii) Более того, достаточно доказать, что

п

Y^XjVj < ||x|j2||v||2 (5.2)

i=i

для ненулевых векторов х, v € Rn . Ибо, если это верно, мы можемпостроить v как Vj = sign(xj)sign(yj)yj для любого у 6 R71 и j =1,... ,7i, так что (5.1) выполняется,(ш) Чтобы доказать (5.2), заметим, что для любого А € R

так что

j=i

Теперь, выбрав А = ||х||2/|М}2, упростим это неравенство:

что и доказывает (5.2). Тем самым доказано и неравенство (5.1).

Page 89: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

88 Глава 5. Представление данных

5.3.1. Обоснование метода наименьших квадратов

Так как R2 квадратично зависит от а и 0, значение минимума мож-но найти, решая систему

д_да

R2 = 0 и - ^ R2 = 0.

Поэтому уравнения метода наименьших квадратов можно записатькак

т.е.

Используя обычные матричные обозначения, с т — (а /3),

\ ( Хх \ / 3/1 \

А ~

\ \

у —У2

\ Уп

мы можем написать (и определить)

Ф(с) = Я 2( с) = (у " -4с)т(у - Ас).

Тогда уравнения метода наименьших квадратов сведутся кТ т

АТАс = Ату. [5.3)

Чтобы решить эту линейную систему размера 2x2, мы должнысначала проверить, что

но это верно, если хотя бы два Xi не равны! Тогда мы можем легко

Page 90: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

о.З. Приложение

найти единственное решение с = (а ,3)т:п.

^2(xi -x){yt -у)

Й - ' = 1

а — у — /Зж,

где х ту средние множеств данных х и у соответственно.Чтобы убедиться, что найденное решение является минимумом,

а не седловой точкой, надо вычислить все вторые производные (ко-торые в квадратичном случае являются константами). Можно про-верить, что

д'Ч _ д'2Ф д2Фп

2 "" '—.

дад(3 ~ д,3дадЧх.

Тогда из неравенства Коши-Шварца следует, что дискриминант от-рицателен, так как

2

А\дЗда) \да2 ) \д32 = 4 < 0

всякий раз. когда det(.4TA) / 0 и одновременно | ^ | > 0 и ^ ^ > 0.так как по крайней мере два х,- не равны (т.е. эти производные нумогут одновременно равняться нулю). Это доказывает, что экстре-мальная точка, действительно является минимумом.

Альтернативное и более простое доказательство состоит в следу-ющем. Рассмотрим следующий функционал для всех w — с 4- h 6R2 (здесь R2 — пространство):

$(w) = (у - Aw)T(y - Aw) = w T .4 T .4w - 2yT.4w + y T y .

Сначала проверим, что

Ф(с + h) = Ф(с) + (Ah)rAh + 2h T ( .4 T Ac - Ату).

Тогда, предполагая, что АтАс — А г у , будем иметь

Я 2 (с + Ь) = Ф ( с + Ь) - Ф ( с ) + ||.4Ь||2 > Ф(с)=Я2(с).

Следовательно, решение уравнения (5.3) есть единственный мини-мум метода наименьших квадратов.

Page 91: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

6

Вероятность и случайные числа

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

В этой главе мы вводим элементарные вероятностные распре-деления и имитируем их, генерируя соответствующие случайныечисла с помощью MATLAB'a.

6.1. Генерирование случайных чисел

Функция MATLAB'a rand генерирует псевдослучайные числа изинтервала (0, 1). Эти числа называются псевдослучайными пото-му, что они выглядят случайными последовательностями, но суще-ствует метод их воспроизводства! Последовательности генерируют-ся детерминированным алгоритмом, но ему можно дать «затравку»,которая позволит породить конкретную последовательность1'.

Чтобы понять, как работает команда, выполним следующее:

» rand У, Генерирует случайное число из (0,1)» randC 'seed' , 13) У. Устанавливает в качестве

У, «затравки>> 13-е число

1 ' В основе алгоритма лежит мультипликативный конгруэнтный метод. Дета-ли см. в приложении к этой главе.

Page 92: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

6.1. Генерирование случайных чисел 91

» Ъ1 = rand(25, l ) У, Случайный вектор-столбец из (0,1)>> rand( ' seed ' ,0) У, Устанавливает <<затравку>>

У, по умолчанию.>> А = rand(3,4) У, Случайная матрица размера 3x4

У. из (ОД)>> rand( ' seed ' , 13) У, Опять устанавливает в качестве

У, <<затравки>> 13-е число» Ъ2 - rand(25, l ) У, Воспроизводит Ы !

Можно «усилить» случайность, выбирая начало последовательно-сти «случайным образом*, например, связав seed с встроеннымичасами компьютера. Текущее время равно

>> time=round(clock) У, вместо round могут быть f ix ,7, c e i l или f loor

и этот вектор представляет time=[Fofl Месяц День Час МинутаСекунда], так что мы можем использовать

>> randC s e e d ' , t i m e ( 6 ) ) '/.или rand( ' seed ' , t ime(5)*t ime(6))

чтобы подсоединиться к ближайшей секунде, хотя, кажется, это невсегда работает: иногда лучше самому задать значение seed, пред-почтительно нечетным числом. Хороший результат дают числа вдиапазоне 10 000-20000 (или значение 0, присваиваемое по умолча-нию).

Простая MATLAB-функция rand порождает столбец из п равно-мерно распределенных на интервале (0, 1) чисел командойx=rand(n,l) или строку — командой x=rand( l ,n) . Аналогично,rand(n) порождает случайную матрицу размера п х п, тогда какrand(m,n) дает т х n-матрицу с элементами из (0,1).

Чтобы породить случайные числа из произвольного интервала(a,b), воспользуйтесь линейным преобразованием (х -> у), напри-мер,

>> х = r a n d ( l , 3 0 ) ; '/, 30 случайных чисел из интер-У. вала (0,1)

>> а = 12; Ъ = 99; '/, задаем границы интервала

>> у = а + (Ъ-а) * х; '/, 30 случайных чисел, из интер-

'/, вала (а,Ь)

Обратите внимание, что элементы вектора у теперь принадлежатинтервалу (а, Ь).

Page 93: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

92 Глава 6. Вероятность и случайные числа,

6.2. Случайные целые числа

Функции MATLAB'a ceil, fix, floor и round, вместе с rand по-рождают случайные целые числа. Здесь ceil(x) есть наименьшеецелое > х, floor(x)—это наибольшее целое < х и round(x) бли-жайшее к х целое11. Команда fix совпадает либо с ceil, либо сfloor в зависимости от знака числа, поскольку она округляет чис-ла до целого, ближайшего к нулю. В качестве примера проверьтеследующее:

ceil(1.2)=2, ceil(3)=3, ceil С 1.9)=2, ceil С 1.5)=2,

fix(1.9)=l, fix(2)=2, fix(-1.6)=-l, fix(-2)=-2,

floor(1.2)=l, floor(3)=3, floor(1.9)=l, floor(1.5)=l,

round(1.2)=l, round(3)=3, round(l.9)=2,round(-l.5)=-2.

Можно получить столбец из п чисел, принимающих с равной ве-роятностью целые значения 0 , 1 . . . . ,к (т.е. целые значения из зам-кнутого интервала [О, А;]), выполнив

>> х = r a n d ( n , l ) ; floorС(k+1)*х)

Но мы можем получить и столбец из п чисел, принимающих с рав-ной вероятностью целые значения 1,... ,к (т.е. целые значения иззамкнутого интервала [1.&]), выполнив

» ce i l (k*x)

Команда round используется немного по-другому. Например.

» round(10*х)

порождает п чисел, которые принимают значения 0 , 1 , . . . . 10 с не-равными вероятностями. (Вы понимаете, почему? Сравните значе-ния х, округленные до 0, со значениями, округленными до 1, и рас-смотрите также результат round С 9.99 х + 0.5 ).)

Если нужно произвести случайную перестановку из к целыхчисел 1,2,... , к, следует воспользоваться командой randperm. На-пример, переставим строки матрицы случайным образом:

>> г = randperm(9)>> А = ceilC rand(9)*5 ) У, генерирует матрицу с

7, элементами из (1,5)

>> В = А(г,:) '/ переставляет строки по "г"

1 Для полуцелых .г берется наибольшее по модулю. — Прим. перев.

Page 94: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

6.2. Случайные целые числа 93

Вот простой способ получить вектор-столбец из 0 и 1, где U по-является с «вероятностью | » . Это значит, что для очень длинноговектора треть его элементов скорее всего будет равна 0, а осталь-ные — 1. Наберите

» r a n d ( ' s e e d ) ,0) ; x=rand(100,1); У. Внимание: х из(ОД)>> с=х>1/3

Здесь вторая строка предписывает выдать 0 для тех Г, где х(г) «непроходит» проверку условия х > | и 1, если х(г) «проходит» ее.Предполагая, что элементы х равномерно распределены на [0,1],вы получите 0s приблизительно в \ случаев. Можете проверить это.выполнив sum(c)/100 и сравнив ответ с |.

Однако можно ожидать большего, чем с=х>1/3, выполнив

>> randC'seed ' ,0) ; x=rand(100,1) ; % Внимание: х из (0,1)» c=round(x + 1/6)

Это связано с тем. что после сдвига на ~t только числа из х, мень-шие тг — | = ~, округляются до нуля! Можете нарисовать картинку,иллюстрирующую эту идею? Подобным образом вы можете посту-пить с любой вероятностью р. Можете предложить формулу длявеличины сдвига?1*

П р и м е р . Взяв seed=121, получим две случайные целочисленныематрицы размера 2x6 с элементами из [1,4] и [0,3] соответственно,после выполнения

» randOseed' ,121) ;>> у = ceilC 4*x>> z =floor( 4*x

Результатом будут

У =

z =

)

)

13

02

x =

231

2

randC2,6)У, СлучайУ, Случай

24

13

CD(2)

12

01

с [1с [0

312

0

,4],3]

21

г0

^ Оба эти способа практически всегда дают один и тот же ответ (здесь это0.6900). — Прим перев.

Page 95: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

94 Глава 6. Вероятность и случайные числа,

6.3. Моделирование равномерных распределений

Мы обсудили, как функция MATLAB'a rand моделирует числа, сравномерным распределением U(0,l) l\ Кроме того, отмечалось,что можно использовать случайные числа, чтобы промоделироватьравномерное распределение в любом интервале, сочетая 11(0.1) с ли-нейным преобразованием. Для вашего удобства мы создали М-файлс названием unirand.m.

Пример. Чтобы смоделировать 5000 бросаний трех костей, выпол-ним

» rand ('seed', 19) '/, Установим 'seed'7, равным 19

>> z=unirand(0.5,6.499,5000,3) ;*/, Случайные числа из

7. (0.5, 6.499)>> г = round(z) ; 7. Случайные числа из [1,6]>> [х y]=hist(r,6) '/, Подсчитываем число

7, выпадений в матрице х

6.4. Моделирование нормальных распределений

Чтобы получить столбец из 1000 случайных чисел с нормальнымраспределением, у которого среднее 0 и стандартное отклонение 1,наберем

» randnC'seed',12); x=randn(1000);

где параметр seed схож; по смыслу с используемым в rand, но учи-тывает особенности randn! Снова используя линейное преобразова-ние, чтобы получить числа со средним m и стандартным отклоне-нием s, наберем

>> у = m + s*x;

Для вашего удобства мы создали М-файл с названием normrand.m.

Пример. Чтобы смоделировать рост жителей в двух различныхрегионах, в обоих случаях со средним m — 3 и стандартным от-клонением s = 5, возьмем выборки по 2000 человек в каждом изрегионов и выполним

>> randnf 'seed', 11) 7. Установим 'seed' равным 11

г) См. приложение к этой главе, где описываются равномерные распределе-ния.

Page 96: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

6.5. Моделирование экспоненциальных распределений 95

» у = normrand(3,5,2000,2);'/, N(3,5) с mean=3 & Std=5>> h i s t Су) 7, График смоделированных

7. данных у

или без normrand.m

>> randn( ' s e e d ' , 11) '/, Установим ' seed ' равным 11» х = randn(2000,2) ; . '/, N(0,1) с mean=0 к Std=l>> у = 3 + 5*х; 7. Преобразование>> h i s t (у) 7. График смоделированных

7. данных у

и вы увидите, что mean(x) = [0.0318 - 0.0346], mean(y) = [3.15912.8270] и std(y) = [4.9989 5.0467].

И опять, как и с rand, получим случайные целые числа, сочетаяrandn с любой из функций c e i l , fix, f loor и round. Например, что-бы получить семь столбцов из девяти целых чисел с нормальнымраспределением, у которого среднее т = 3 и стандартное отклоне-ние s — 4, наберите

» nl = 9; п2 = 7; х = r a n d n ( n l , n 2 ) ; m=3; s=4;>> у = round(m + s*x);

Замечание. Под именами rand и randn известны два различных рас-пределения. По умолчанию rand вырабатывает равномерное рас-пределение. Однако команды r a n d ( ' n o r m a l ' ) и rand( 'uni form')заставят rand переключиться от одного распределения к другому!Мы не советуем этим пользоваться, так как легко потерять следэтих переключений, если, конечно, не делать таких установок пе-ред каждым использованием rand!

6.5. Моделирование экспоненциальныхр аспр е де л ений

Так как экспоненциальное распределение связано с равномерным1',его легко промоделировать, используя генератор случайных чиселMATLAB'a rand. Чтобы промоделировать экспоненциальное рас-пределение, у которого и среднее, и стандартное отклонение рав-ны L мы можем использовать следующее соотношение:

См. приложение к этой главе.

Page 97: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

96 Глава б. Вероятность и случайные числя

предполагая, что х имеет равномерное распределение U(0.1). Длявашего удобства мы создали М-файл exprand.m, порождающий этораспределение.

Для иллюстрации мы можем промоделировать и сравнить вы-борки п — 20 000 чисел, имеющих

• равномерное распределение на (0,2.4) со средним m — 1.2;• нормальное распределение со средним m — 1.2 и стандартным

отклонением s = m — 1.2;• экспоненциальное распределение со средним i = 1.2:1'

>> randC' seed 1 ,0) ; n=20000; 7, Восстановить значение7. ' seed '

>> m=1.2; s=1.2; '/, Среднее и стандартное7, отклонение

>> х = i m i r a n d ( 0 , 2 . 4 , n , l ) ; '/, Равномерное на (0,2.4)>> randnC' seed 5 ,0) ; '/, Восстановить значение

'/, ' seed '>> у = normrand(m,s,п,1); '/, Нормальное (m,s)=(l • 2,1.2)

>> rand С'seed',0) ; У, Восстановить значение

У, ' seed'

>> z = exprand(m, n , l ) ; У, Экспоненц. (среднее т)» subplot(131) ; h i s t ( x , 9 0 ) У, График х» subplot(132) ; h i s t ( y , 2 0 ) У. График у>> subplot(133) ; h i s t ( z , 4 0 ) '/, График г

ЭТОТ пример можно реализовать через М-файл сбехр.т. Результа-ты приведены на рис. 6.1, где последний график показывает экспо-ненциальное распределение. У него и среднее, и стандартное откло-нения оба равны t — m, и вы можете легко проверить с помощьюкоманд MATLAB'a mean и std, что для z эти две величины дей-ствительно близки.

Как обсуждается в §6.6, на практике времена между наступле-ниями событий имеют экспоненциальное распределение. Например,пусть времена наступления пяти событий заданы в видеагг — [1.3 2.4 5.1 6 8.3]. Тогда интервалы между событиями бу-дут in t_arr — [1.3 1.1 2.7 0.9 2.3]. считая от t = 0.

Таким образом, молено моделировать интервалы между насту-плениями событий с помощью exprand.m, но тогда как же вычи-слять времена наступления событий? Каждый момент наступления

1> Для версий старше 4.0 следует писать subplot(3,1,1) , т.е. разделять аргу-менты запятыми. — Прим перев.

Page 98: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

6.5. Моделирование экспоненциальных распределений 97

200 1

100

4000

2000

0.5 1—i 1 1—

1.5 2

-i 1 1

-4 -3 -2 -1

0 1 2 3 4 5 6 7

Рис. 6.1. Пример трех вероятностных распределений.

10

события есть кумулятивная (накопленная) сумма времен между со-бытиями: для заданного выше int_arr найдем агг как

arr( l) = int_arr(l) = 1.3;arr(2) = int_arr(l) + int_arr(2) = 2.4;arr(3) = int_arr(l) + int_arr(2) + int_arr(3) = 5.1;arr(4) = int_arr(l) +...+ int_arr(4) = 6;arr(5) = int_arr(l) +...+ int_arr(5) = 8.3.

В MATLAB'e команда вычисления кумулятивной суммы есть про-сто

>> t = cumsum(z) ;

Для приведенного выше примера на рис. 6.1 кумулятивная суммадля z может быть записана как

кtk = V 2 i , к = 1,2,--- ,20000.

7-4196

Page 99: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

98 Глала 6. Вероятность и случайные числа

Здесь t ( l ) = 0.2966 и t{20000) = 24036.2043.

Пример, Вызывают беспокойство очереди в банках к кассовымавтоматам (банкоматам), и нас попросили промоделировать очере-ди в часы пик. Из компьютерных записей известно, что (в среднем)бывает приблизительно 131 клиентов между 9 часами утра и полу-днем. Чтобы смоделировать приход первых 50 клиентов, сначалаопределим среднее I — у|^ поскольку среднее время между прихо-дом клиентов равно ™ минут. Следовательно, выполним

» m = 180 / 131; r a n d ( ' s e e d ' , 0 ) ;>> z = exprand(m,50,1) ; h. ist(z)

Так как z есть время между приходами, то время приходов естьпросто t

>> t=cumsum(z)

причем t(l) = 0.3396 и £(50) = 69.3055 минут.

Упражнения

6.1 По оценкам розничного торговца электротоварами в течениенедели перед Рождеством электронные игры приобретают всреднем 140 покупателей в день с интервалами между покуп-ками, распределенными по экспоненциальному закону. (Тор-говля происходит с 9 часов утра до 5 вечера.) В среднем |покупателей платят наличными, а остальные пользуются кре-дитными карточками; в 50% случаев покупают Nintendo (SuperMario) и в 50% покупают Sega (Sonic the Hedgehog). Требуетсяпромоделировать первые 30 покупок после открытия в пред-положении, что каждый посетитель делает покупку.

(a) Определите времена между приходами и времена прихо-да первых 30 клиентов, в течение дня. Найдите среднее истандартное отклонения времен между приходами.

(b) Выведите таблицу первых 30 посещений в виде Время по-сещения, в минутах (один десятичный разряд после пла-вающей точки), Способ оплаты (наличные обозначим как+ 1, кредитной карточкой как —1) и Купленный товар(Nintendo как +1 и Sega как -1).

Page 100: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Упражнения 99

Подсказка.

• Ваш ответ на вопрос (Ь) будет иметь три столбца (каж-дый длины 30):времена прихода.выбор оплаты наличными или кредитной карточкой ипокупка Nintendo или Sega.

• Загляните в § 6.2. чюбы вспомнить, как получить числа,принимающие значения 0 или 1 с вероятностями | , | -или каждое из них с вероятностью | . Как вы преобра-зуете этот вектор из 0 и I в вектор из —1 и +1?

• MATLAB не может напечатать разные столбцы однойматрицы в разных форматах; они все должны бытьцелыми, либо все десятичными дробями. Чтобы изба-виться от этого, вам нужно воспользоваться командамиfpr int f или spr int f . Например, сделайте так

>> а = p i , Ъ = 35Л с = 15» с_1 = [ а Ъ с ]» f p r i n t f ( ' с _ 2 = '/.5.3f '/.5d f/,d\n' , a , b , c )» с„3 = spr in t f (''/,5.3f '/.5d '/,d\nJ , a ,b ,c)

где "т?.5.3Г означает печать вещественного числа пятьюсимволами с тремя десятичными цифрами после пла-вающей точки, L%5d: означает печать целого из пятицифр, тогда как 1%сГ выводит принятое по умолчаниючисло цифр. Чтобы напечатать Время посещения, вамнужен формат '%6.1Г.

0.2 Установлено, что в среднем 15 поездов в час прибывают наливерпульскую станцию Лайм Стрит с временами между при-бытиями, имеющими экспоненциальное распределение. К томуже известно, что 75% составов являются небольшими местны-ми дизельными поездами, число пассажиров в которых рав-номерно распределено на [0,80]. Остальные 25% являются ме-ждугородными поездами, число пассажиров в которых пред-полагается нормально распределенным со средним 90 и стан-дартным отклонением 20.

(a) Постройте 15 х 5-матрицу, содержащую типы (0 — между-городный, 1 = дизельный) первых 15 поездов за 5 дней.(Посмотрите опять §6.2, где описано, как получить стол-беи чисел, принимающих значение 0 с вероятностью | и 1с вероятностью jj.)

(b) Используйте данные распределения при оценке числа пас-

Page 101: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

100 Глава 6. Вероятность и случайные числа

сажиров на 15 дизельных поездах и 15 междугородных втечении 5 дней. (Таким образом, вашим ответом будут двематрицы, каждая размера 15 х 5. одна матрица для каж-дого типа поездов.)

(c) Соедините (а) и (Ь), чтобы оцепить общее число пассажи-ров на первых 15 поездах, прибывающих на Лайм Стритв течение 5 дней.

(d) Определите времена прибытия первых 15 поездов в тече-ние 5 дней и воспользуйтесь этой информацией и заданием(с), чтобы оценить общее число пассажиров, прибывающихв первые полчаса каждый день.

(e) Постройте зависимости общего числа прибывших пасса-жиров как функции от времени прибытия для 5 дней наодном и том же графике.Подсказка. Если времена прибытии записаны в 15 х 5-мат-рипе агг. а текущее число всех прибывших пассажиров на-ходится в 15 х 5-матрице cumpass, то p lot(arr ,cumpass)нарисует все 5 графиков вместе. Сможете ли вы разли-чить кривые, используя help p lot или a r r (15, :)и cumpass(15,:)?

6.6. Приложение

6.6.1. Генерирование случайных чисел

Известным подходом к генерированию случайных чисел являетсятак называемый мультипликативный конгруэнтный метод. Оииспользует формулу

Uj+i — Kui(Mod M), г — 1, 2, 3 , . . . ,

где «.Mod M» означает, что мы вычитаем столько кратных М. сколь-ко возможно, и берем остаток в качестве ответа. Для любого iзначение щ есть такое случайное число, что 0 < iti < М. Следо-вательно, т соответствует случайному числу Т{ = щ(М £ [0,1).Чтобы воспользоваться этим методом, когда подходящие констан-ты К, М (обычно целые) уже выбраны, нам нужно только подста-вить начальное значение и\. которое обычно называется «затрав-кой» ('seed'). Обычно К приблизительно равно величине квадрат-ного корня из М, но М, хотя и довольно большое, не должно бытькратным К.

Page 102: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

G.6. Приложение 101

С помощью MATLAB'a очередной шаг метода может быть реа-лпзонан как

>> unew - rem (К * uold, M )

>> rand^num = unew / М

Задав и \ = seed . можно выполнить п шагов конгруэнтного .метода.следующим образом:

>> for j = 1:п

>> seed = rem (К * seed + shift, M )

>> rand_num = seed / M

>> end

где sh i f t в стандартном методе равен нулю, но .может быть и неi улсмы.м.

Ради "заинтересованного читателя мы создали М-файл randme .m,реализующий этот метод. Выполните randme. чтобы увидеть, что(.и делает. Для примера мы использовали a-randme(4) с seed=2 пshift=O, взяв Л' == 32 и Л/ = 5, чтобы получить следующие четыреслучайных числа «домашнего изготовления»:

K*seed = 64, seed = 4, rand = 0.8

K*seed =128, seed = 3, rand = 0.6

K*seed = 96, seed = 1, rand =0.2

K*seed = 32, seed = 2, rand = 0.4

Генератор случайных чисел rand, принятый в МАТЪАВ'е. такжеиспользует прицеленный выше метод. Чтобы узнать текущее значе-ние seed, выполните s = rand С' s e e d ' ) , а команда rand С ' seed ' ,45)изменит значение seed на 45. Следовательно, чтобы проследить по-следовательность изменений seed в MATLAB'е. наберите

>> rand( 'seed' ,0) ; У, seed = значение по умолчанию

>> s = rand('seed') У, В s засылается это значение

>> rand(' seed' , 1) ; 7, seed = 1

>> s = rand(' seed' ) ; '/, Проверяется, что это так

» fprintf ('MATLAB Seed = 7.12.Of (initially set)\n',s)

>> for j = 1:5, r=rand; s=rand('seed');

>> f p r i n t f ('MATLAB Seed = '/„12.Of r a n d = */,d',s , r ) ;end

Одно из руководств по MATLABV, кажется, советует взять К = 7°п М — 2'i] - 1, но, экспериментируя с randme.m и этими двумя па-раметрами, можно прийти к заключению, что в r a n d используется

Page 103: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

102 Глава 6. Вероятность и случайные числя

неопубликованное целое знамение shift! Для наших целей нам до-линь основной алгоритм1'

seed = (A'seed-i- shift) (Mod M).

статочно знать лишь основной алгоритм1^

6.6.2. Функции распределений

Распределение псевдослучайных чисел является непрерывным (смашинной точностью) и равномерным (равно вероятным в интер-вале (0,1)). Для любого распределения случайных чисел вероят-ность выбора, частного значения определяется функцией плотно-сти вероятностей (фпв) /. так что если мы обозначим через Л'случайную переменную, то для любых значений xj и х->, таких,что Т\ < л'2, имеем

V(X! < X < Х2) = I ' f(t)dt.J .ci

Другим способом распределение можно определить в терминахфункции распределения (фр) F, i;лс

F{x)=V(X<:v):

обе функции связаны соотношениемГ1' [х

F(x) = / f(t)dt с нормировкой / f(t)dt — 1.J — ж; J -ex.-

Равномерное распределение. Для равномерного распределенияна интервале [0.1]. известного как нормированное равномерное рас-пределение U(0.1). фпв равна

а фр

Г(), х < 0 :

Fix) - } х . хе [0.1),

[ l . 2 : > 1 .

Нормальное распределение. Для него фпв

2,т2

х- В версиях 5.0 и выше для rand используется другой алгоритм (внем параметр seed заменен на s t a t e ) , но ес/ш предварительно выполнитьrand( ' seed ' ,Ю, то программа rand настроится ira старый алгоритм. — Прим.перев.

Page 104: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

6.6. Приложение 103

а фр

Это распределение имеет среднее // и стандартное отклонение <т иобозначается через N(/J.CT2).

Если f.i = 0 и а — 1, то N(0.1) называется стандартным нормаль-ным распределением, которое в MATLAB'e рассчитывается с по-мощью randn. Распределение Х(/л.ст2) молено получить с помощьюпреобразования z — их -f- /;,, если ж есть переменная со стандартнымнормальным распределением N(0.1).

Экспоненциальное распределение. Оно описывает процессПуассона. Напомним, что последовательность событий (обозначимих случайной переменной X) является процессом Пуассона, если

• число исходов в каждый период иезанисимо:• вероятность наступления более одного события в течении малого

интервала пренебрежима;• вероятность одиночного события и течение (очень короткого)

интервала пропорциональна длине этого интервала, т.е.

V {событие произошло в интервале времспи(£.£ + /г))11Ш - — - — _ _ — _ _ _ — — — А./i—>0 П.

где V обозначает вероятность и А постоянно.

Это распределение определяется через фпв

^Z) = \0, г < 0 ,

или, эквивалентно, через фр

F(z) =0, г < 0 .

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

1 - е " Л г = х,

что дает (£ = А"1)z = — /iog(l - .т).

Page 105: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

104 Глава 6. Вероятность и случайные числа

Это как раз то, что делает М-файл exprand.m does. Для банков-ского примера из §6.5, где имеется 131 клиент (события) в течение180 минут, среднее время между событиями равно £ — h0 = ~минут. Следовательно, вероятность наступления события в любойкороткий интервал (t.t + h0) есть V = 1. так что

V{(U + h)} П ( М + /,)} = 1 3 1 / 1 8 0 = Л.h->ho h h0

Конечно, I = 1/А, как и ожидалось.

Page 106: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

7

Дифференциальные и разностныеуравнения

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

7.1. Обыкновенные дифференциальные уравнения(ОДУ)

Вы, вероятно, встречались с дифференциальным уравнением

dx- = -А*, (7.1)

которое легко решить, записав в виде

dx . ,— = -Xdtх

и проинтегрировав обе части. Это дает

lnx = — Xt + с,

т. е.

x{t) = xoe-xt, где х0 = х(0). (7.2)

Так описывается, например, радиоактивный распад (с положитель-ным Л) или экспоненциальный рост (с отрицательным Л).

Часто используется обозначение дифференцирования точкой,когда независимой переменной является время (, как в данном слу-чае. Тогда уравнение (7.1) записывается в компактной форме

х — -Хх.

Другим интересным примером, решить который немного труд-нее, служит логистическое уравнение

) (7.3)

Page 107: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

106 Глава 7. Дифференциальные и разностные уравнении

2 2 0 4 0.6 0 8 1 12 14 1.6 1.8 2

Рис- 7.1. График ноля направлений для ОДУ dx/dt — —x. Кривая явля-ется частный численным решением.

описывающее, например, скорость распространения инфекции в по-пуляции. Его решением будет

xit) =- ( 1 -

(7.4)

MATLAB можно испо;п>:зовя гь при решении этого и других, болеесложных ОДУ с помощью процедуры численного интегрирования.Ее графические возможности позволяют исследовать поведение ре-шений визуально. М-файл f odesol .m предназначен для демонстра-ции сказанного. Как обычно, команда

>> help fodesolвыдает некоторую информацию по использованию этого файла.

Можно считать, что дифференциальное уравнение первого по-рядка dx/dt — /(ж, t) определяет некую «структуру» — поле направ-лений--на плоскости t.x, подобную структуре деревянной доскиили структуре силовых линий поля намагниченного стержня. В ка-честве примера см. рис. 7.1.

Направление поля в точке (t.x) определяется функцией f(t,x),которая, будучи равной dx/dt, даст тангенс угла между направ-

Page 108: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

7.1. Обыкновенные дифференциальные уравнении (ОДУ) 107

лением поля и осью t, т.е. угловой коэффициент. Из дифференци-ального уравнения следует, что решение, пройдя через точку (t,x),движется далее в направлении, определенном f(t,x). Кривые реше-нии следуют в направлении структуры. Решение дифференциаль-ного уравнения есть процесс вычерчивания линий, следующих этимнаправлениям в каждой точке их траектории. Каждому выбору на-чального условия (х = XQ при t ~ to) соответствует своя траектория(j.e. решение). Вы можете1 рассмотреть приведенные выше примеры(7.1) и (7.3) с: помощью f odesol.

Вначале набери1] с

» f o d e s o K ' f n x t ' ,0,2.5,-3,3)где fnxt.m есть простой пример М-файла, содержащего правуючасть ОДУ. рассматриваемого нами (заранее подготовленного длявас). В нашем случае f(t,x) ~- —х. т.е. это правая часть уравне-ния (7.1) при А — 1. Четыре числа, передаваемые программе, £ТщП,imax-

x

min и хтпх- соответственно задаю! границы изменения пе-ременных на графике. Сначала fodesol рисует соответствующуюструктурную диаграмму, или «поле направлений», на которой высможете увидеть поведение решения. Потом вычерчивается криваярешения, начинающаяся в точке (fn,.xo). которую вы должны за-дать. Программа напомнит вам об этом в нужный момент. Если вызахотите построить еще одну кривую, исходящую из другой точки,ответьте программе символом у и задайте новую начальную точку.

Когда вы освоитесь со всем этим, создайте другую версию fnxt .m,скажем myfnxt.m. которая содержит правую часть логистическогоуравнения (7.3), где

К = г = 1.

Конечно вы можете использовать fodesol при исследовании любо-го уравнения первого порядка безотносительно к первоначальномувыбору имен независимой и зависимой переменных (у нас t и х со-ответственно).

Рассмотрите решение x(t) для XQ — x(t0) < 1 и для z-0 > 1.Другое ОДУ, которое интересно рассмотреть, это

например, в области

- 3 < t < 4, - 3 < х < 4.

Page 109: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

108 Глава 7. Дифференциальные и разностные уравнения

Чтобы получить решения этой задачи, вам придется сделать дру-гую версию fnxt.m.

7.2. Системы дифференциальных уравнений

MATLAB может численно решать и системы из связанных междусобой дифференииальных уравнений первого порядка. Например,уравнения

dx/dt = f(x.y). dyfdt — д{х,у) (7-6)

первого порядка и связаны между собой, поскольку, скажем, про-изводная функции x(t) зависит как от у, так и от х. Кроме того,небольшая особенность заключается в том. что правая часть не за-висит явно от t. Такие дифференциальные уравнения поэтому на-зываются автпопомнъши. Эти уравнения широко используются приописании взаимодействия конкурирующих видов, как показано ни-же на примере уравнения (7-7). Но сначала немного теории.

7.2.1. Фазовая плоскость

Система (7.6) описывает движение точки с координатами (з\;/) вху~плоскости, которая в этом случае называется фазовой плоско-стью. В качестве примера взгляните на рис. 7.2. По мере изменениявремени точка (х,у) будет перемещаться, пока, конечно, не будутвыполняться оба равенства f(x.y) = 0 и д(х,у) = 0. Если же этопроизойдет, то точка (х,у) не будет менять положения. Такие точ-ки называются неподвижными точками системы дифференциаль-ных уравнений. Таким образом, неподвижные точки можно най-ти, решая уравнения /(х,у) — 0 и д(х,у) = 0. Если это нелегкосделать, то эксперименты с различными начальными значениямих и у могут указать, где расположены возможные неподвижныеточки.

Вблизи неподвижной точки имеется несколько возможностей-

(i) Траектория решения может постоянно все больше приближать-ся к неподвижной точке. Такая точка называется устойчивой.

(и) Траектория может сначала приближаться к точке, а затем уда-ляться от нее. В этом случае точка называется седловой и явля-ется неустойчивой.

(iii) Траектория может постоянно все больше удаляться от непо-движной точки. Такая точка называется неустойчивой.

Page 110: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

7.2. Системы дифференциальных уравнений 109

о 1 9 10

Рис. 7.2. Фазовая плоскость системы уравнений (7.7) для некото-рых значений параметров. Кривые являются частными численнымирешениями.

(iv) Траектория может просто двигаться вокруг точки по некото-рой орбите.

Попробуйте распознать эти виды поведения в следующем примере.

7.2.2. Конкурирующие виды

М-файл species.m моделирует поведение двух разных животныхвидов, которые борются за один и morn же источник пищи. Оносписывается уравнениями

х = х(а ~Ьх - су), у = y(d- ex ~ fy), (7.7)

где х и у--численность представителей двух различных видов.Параметры а, Ь,с и d определяют поведение системы. Для неко-

торых значений вы увидите, что один вид всегда уничтожает дру-гой. Для других значений виды могут сосуществовать, хотя даль-нейшее развитие побеждающего вида зависит от исходных размеровПОПУЛЯЦИЙ и т.д.

Page 111: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

110 Глава 7. Дифференциальные и разностные уравнения

Четыре типа поведения неподвижной точки, описанные выше,иллюстрируются следующими наборами параметров:

(i) о = 24. b = 6. г = 8, (1 = 2-1, с = 8. / = 6,(ii) a = 24. & = 4, г = 6. <! = 24, е = G. / = 8.(iii) a = G; b = 0, с = "1. (/ - - 4 . б = - 1 . / = 0

Постарайтесь выделить примеры каждого типа неподвижныхточек. Первый важный шаг состоит в определении неподвижныхточек (х.у): для них, согласно (7.7).

х = у = 0.

Это означает, что вам нужно решить систему

.г (а — Ь.г — су) =• 0.

y(d — cr — j у) = 0,

чтобы найти неподвижные точки (,г, у) в зависимости от а. 6, с , . . . . / .Тогда вам останется лишь подставить значения а, Ь и т.д.. что-бы получить неподвижные ючкп. число которых самое большее4 для каждого случая. Это поможет вам начать ваше исследова-ние. Сколько различных решений (неподвижных точек), таких чтох > 0 и у > 0. вы найдете в каждом случае? (Вам ведь нужнылишь неотрицательные решения для каждого вида.) Дифференци-альные уравнения вполне могут иметь решения, не относящиеся крассматриваемому физическому приложению.

Теперь наберите species и, следуя указаниям этой программы,используйте ее при исследовании поведения траекторий в окрестно-сти каждой неподвижной точки. Устойчивые точки легко опреде-лить, но неустойчивые точки найти труднее. Заметьте, что по мереприближения к неподвижной точке движение замедляется, а. ког-да вы удаляетесь от нее, скорость возрастает. Вместе с графикомМ-файл выводит и координаты в конце каждого временного шага.

7.2.3. Уравнения высшего порядка

Уравнения высшего порядка могут быть записаны как системы ОДУпервого порядка путем интерпретации производных как дополни-тельных функций. Тогда при нахождении численного решения мож-но снова использовать программу MATLAB'a для интегрированияОДУ. Рассмотрим следующее уравнение второго порядка по t:

^£_Ш-Л—+u' = 0 (78^dt2 v ' dt : к ' }

Page 112: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

7.3. Разностные уравнения 111

называемое уравнением Ван-дер-Поля, где к — некоторая положи-тельная константа. Уравнение описывает колебания в некоторыхцементах электрооборудования. Его можно преобразовать в авто-номную систему с переменными v и w подстановкой v = chv/dt.Таким образом, получится пара уравнений первого порядка

dw

^ = k(l-u?)v-w. (7.9)

Решение этого уравнения иллюстрирует М-фанл vderpol .m, Вы-полните его для различных значений параметра к (просто наберитеvderpol и следуйте указаниям). Для очень малого к, скажем, око-ло 0.1, вы обнаружите предельный цикл в виде почти правильнойокружности. В этом предельном цикле траектория решения стяги-вается в замкнутую петлю определенной формы, не зависящей отвыбора начальной точки. Обратите внимание, что это отличаетсяот орбиты., описанной в § 7.2.1, когда кривая решения всегда замы-кается па себя. Для больших значений к предельный цикл имеетсущественно другую форму.

Взгляните на М-файлы vderpol .m и vdplfn.m. Последний файлсодержит правую часть системы уравнений (7.9). Вы можете пере-делать его так. чтобы решить ваши собственные дифференциаль-ные уравнения высших порядков, например, уравнение затухающе-го гармонического осциллятора или движения снаряда с учетом со-противления среды. Одна из гем третьей части нашей книги (гл. 22)среди прочего связана и с этими уравнениями. Внося необходимыевам изменения в файлы vderpol. m и vdplfn.m, не забудьте скопиро-вать их и изменить их имена, например, на my solver . т и myslvfn.m.Э ю поможет избежать недоразумений с исходными М-файлами идаст вам уверенность в том. что вы решаете то, что хотели.

7.3. Разностные уравнения

Уравнение радиоактивного распада (7.1) отражает тот факт, что вединицу времени вероятно распадется постоянная часть А общегочисла атомов (х). имеющихся на .данный момент. Вычислительныйалгоритм позволяет нам считать это утверждение точным для про-извольно малого интервала времени.

Во многих приложениях удобно придерживаться определенно-го интервала времени и рассматривать разности x(t + 1) -- x(i), a

Page 113: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

112 Глава 7. Дифференциальные и разностные уравнения

не производные, которые описывают мгновенные скорости измене-ния. В случае радиоактивного распада, мы можем написать (почти)эквивалентное разностное уравнение

.г„+1 - хп = -Л.т„ . (7.10)

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

x(t) -— х„. t = п х 1 сек .

Нетрудно проверить, что

xn = xQ(l-\r (7.11)

является решением разностного уравнения (7.10). так как последнееможно записать в виде

• — 1 — л .

Вы также можете проверить, что для малых значений Л это ре-шение эквивалентно решению дифференциального уравнения (7.2),поскольку в этом случае

е " п Л a l - n A « ( l - A ) n .

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

Классификация разностных уравнений сходна с классификаци-ей, используемой ъ дифференциальных уравнениях. В частности,трактовка общего решения неоднородных разностных уравненийтакая же: оно получается добавлением частного решения («част-ного интеграла») к общему решению однородного уравнения.

Рассмотрим типичный пример однородного линейного разност-ного уравнения, которое легко решить методом проб, сходным с ис-пользуемым при решении соответствующего ОДУ с постояннымикоэффициентами:

хп+2 - 5х п + 1 + 6хп - 0. (7.12)

Это уравнение второго порядка, поскольку оно содержит две раз-ности хп+2 ~ %n+i и x,1+i - хп. (Попробуйте выразить (7.12) черезних). Будем искать решение, подобное (7.11)

xn = zn. (7.13)

Page 114: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Упражнения 113

Подстановкой в (7.12) получаем

Z —7)4. -г О.? — U

ИЛИ

г " ( ; 2 - 5 г + 6) = 0.

Пренебрегая тривиальным решением z = 0, решаем квадратноеуравнение и находим

z = 2 пли г — 3 .

Так мы получаем два решения вида (7.13). которые надо объеди-нит}) обычным образом, что дает

хп = А2П + В3 ' г

как общее решение. Обратите внимание, что здесь имеются две.произвольные константы, так как это разностное уравнение вто-рого порядка. Как и для дифференциальных уравнений, аналити-ческое решение, подобное только что полученному, не всегда легконайти. Однако, часто достаточно просто взять компьютер (напри-мер, снабженный M A T L A B ' O M ) , чтобы выполнит], последователь-ные вычисления, прямо предписанные этими уравнениями. М-файлdiffeqn.m дает возможность решить приведенный выше примерследующим образом. Вначале наберите

>> diffeqn

и следуйте его указаниям. Вам нужно заглянуть внутрь этогоМ-файл а и dfeqfn.m, чтобы понять, как использовать или изме-нить их, чтобы решать другие подобные однородные уравнения илидаже общие неоднородные уравнения.

Попробуйте различные начальные условия, включая [.i'o,xi] =[1.0,2.0], [1.0,1.8] и т.д.

Упражнения

7.1 Воспользуйтесь f odesol .m и модифицированной версиейmyfunxt.m, чтобы исследовать решение следующего уравне-ния:

7.14)

В частности:(а) Найдите х(2), задав начальное условие з;(0) = 1.5.

-4196

Page 115: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

114 Глава 7. Дифференциальные и разностные уравнения

(b) Найдите х(3), задан начальное условие х(0) = 0.055.(c) Кратко опишите общее поведение всех различных типов

решений, изучив «поле направлений» пли «структурнуюдиаграмму».

7.2 В примере о конкурирующих видах в § 7.2.2 найдите такие слу-чаи:

(a) неподвижную точку, окруженную орбитой;(b) устойчивую неподвижную точку:(c) седловую точку.В каждом случае сделайте грубый набросок поведения траек-торий (решений) в окрестности неподвижной точки, т.е. пока-зывающий направление движения траекторий.

7.3 Измените М-файлы vderpol .m и vdplfn.m. чтобы изучить (не-автономное) дифференциальное уравнение второго порядка

где а — некоторый параметр. (Оно «неавтономно», потому чтосодержит член, который является янной функцией t, по урав-нение можно решить тем же способом.) Для случая а -•• 3найдите значение к:(4) и сделайте грубый набросок w(t) длякаждого решения, удовлетворяющего условиям:

(a) и;(0) = 0 , й'(0) = 1:(b) w(0) = - 1 : ?/:(()) = 1:(c) ш(0) - 0 . w(0) = - 1 .

Предложите начальные условия, для которых решение w(t)монотонно возрастает.

7.4 Воспользуйтесь diffeqn.m, чтобы решить разностное уравне-ние

6х?1+2 — :г,-, _|-1 + 2хп = п2 + Зл + 2

при условии, что .то = 1 и ху — 2. и, в частности, найдитеxiQ. Прооерьтк ваше решение, сравнив левую и правую частиуравнения при п ~ 8.

Page 116: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Часть II

Исследования

8. Магические квадраты 1178.1. Введение 1188.2. Магические квадраты размера 3 х 3 1188.3. Магические квадраты размера 4 x 4 1218.4. Магические квадраты размера 5 x 5

(факультативно) 123

9. НОД, псевдопростые числа и тест Миллера 124A. НОЛ случайных пар п троек чисел 124B. Псевдопростые числа и тест Миллера 128

10. Графики: кривые и огибающие 133A. Лепестки розы и эпициклоиды 133B. Огибающие 136C. Кривые постоянной ширины 139

11. Ломаные и кривые наискорейшего спуска 147A. Спирографы и ломаные 147B. Кривые наискорейшего спуска 156

12. Последовательности вещественных чисел 16612.1. Последовательности Мёбиуса 16612.2. Паутинообразные диаграммы 16812.3. Функции Мёбиуса, и степени матриц 171A. Исследование последовательностей Мёбиуса 174B. Притягивающие циклы 177C. Квадратичные и экспоненциальные последовательности:

неподвижные точки 181

13. Итерации Ньютона-Рафсона и фракталы 18613.1. Введение 18613.2. Уравнение z2 + 1 ^ 0 18713.3. Общие квадратные уравнения 18813.4. Кубическое уравнение z 3 — z = 0 191

Page 117: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

116

14. Перестановки 194A. Разложение на циклы 194B. Тасование карт 20014.1. Введение 20114.2. Тасования miyipi. и поверхпе!'-J-footnoteiiiark 20.314.3. Циклы 20914.4. Грубые гасоиания внахлест (быстрые тасования) 20914.5. Приложение 213

15. Итерационные методы решения нелинейных уравнений 21415.1. ID: Метод 1 — метод Ньютона— Рафсопа 21515.2. ID: Метод 2 •• метод Гаусса—-Якоби 21615.3. ID: Аналгп сходимости 21715.4. 2D: Итерации для нелинейных систем 22115.5. 2D: Графики линии уровни и отображение

сходимости 225Упражнения 229

16. Матрицы и решение линейных систем 23316.1. Подсчет числа операций 23416.2. Плотные линейные системы 2351G.3. Алгоритм итерационного уточнения 23916.4. Анализ возмущений системы _4х = b 24016.5. Разреженные матрицы, упорядочении графа и

перестановки 241Упражнения 245

17. Интерполяция и приближение функций 24917.1. Ш: Введение 25017.2. ID-пример: М-файл intdemol.m 25217.3. ID-подгонка данных 25217.4. Насколько точно мое приближение? 25617.5. Введение в многомерные приближения 25717.6. 2D М-файл intdemo2.m 25817.7. Графики линий уровня, ЗВ-графики и графики

сечений 25817.8. Глобальный '\'-метод 26317.9. Кусочный метод 26417.10. Сравнение приближений 264Упражнения 266

18. Обыкновенные дифференциальные уравнения 27018.1. Стратегия 270Упражнения 271

Page 118: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

8Магические квадраты

Цель работыМагические квадраты известны сотни лет. Эта работа, посвяще-на исследованию их свойств с точки зрения матричной алгебры,г. е. с помощью сложения и умножения магрип. Она не касаетсятеоретико-числовой залами нахождения магических квадратов, со-держащих последовательные целые числа. Работа самодостаточна.по может оказав ься интересным узнать, что некоторые математиче-ские результаты вышли ш статьи [16]. В статье содержатся и другиерезультаты па эту же тему.

Используемые математические понятияИспользуются матричное умножение, приведение матриц к верх-ней треугольной форме и методы решения линейных уравнений.Например, мы считаем 3 х 3-'Матрицу точкой девяти мерного про-странства R 9 и рассматриваем подпространства из R 9 . (Нет необхо-димости знать определение абстрактного векторного пространства:все пространства содержатся в некотором R".) Используются по-нятия линейной независимости и базиса. Необходимо также знать,что в подпространстве А" размерности г в R" множество г векто-uoii из X, которые линейно независимы, автоматически порождаютX и тем самым образуют в нем базис. Необходимо знать определе-ния собственных значений и собственных векторов и уметь пользо-ваться ими в простейших действиях, включая возведение матриц встепень.

Используемые возможности MATLAB'aВ работе обсуждаются матрицы, так что вам потребуются приемы,^писанные в гл. 2. По ходу работы встретится М-файл с нескольки-ми циклами :for' и операторами 'if', так что вы должны быть знако-мы п с этими понятиями (см. гл. 3). Обратите внимание, что окон-чание работы в некотором смысле «не зафиксировано»: студенты,работающие быстро, захотят проработать и заключительный раз-

Page 119: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

118 Глава 8. Мпгическио квадраты

дел о магических квадратах 5 x 5 - который можно рассматривать

как нсобяча гельный.

8.1. Введение

Магический квадрат п х п есть п х //-матрица вещественных чиселсо следующим свойством:

Просуммировав все элементы любой строки, любого столб-ца или любой из двух «главных» Ova го нал ей матрицы, мыполучим одно и то 'лее. число, скалсем, г. которое называ-ется магической константой.

Например, магический квадрат

обладает этим свойством с г = 6. Две главные диагонали в этомслучае дают 3 + 2 + 1 (от верхнего левого элемента к правому ниж-нему) и 2 + 2 + 2 (от верхнего правого к левому нижнему).

Существует много алгоритмов получения магических квадра-тов с дополнительным свойством, что элементы матрицы являютсяцелыми числами 1.2 ,/г в некотором порядке. Например, для71 — 3 .

(8.1)

Функция MATLAB'a. magic делает это (попробуйте набратьmagic (3)). Здесь мы не будем детально анализировать такие ал-горитмы, з вместо этого рассмотрим алгебру, лежащую Б основемагических квадратов, используя ваши знания о матрицах и реше-нии систем линейных уравнений.

8 . 2 . М а г и ч е с к и е к в а д р а т ы р а з м е р а 3 x 3

(i) Рассмотрим общую 3 х 3-матрицу

/ аи tt,2 a i 3 \

.-4 = {a,j) — «2i 022 ^23

\ «31 "32 «33 /

Page 120: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

8.2. Магические размера 3x3 119

Таким образом, в ней девять элементов йц я^з- Объясните, по-чему, выписав условия для всех строк, всех столбцов и двух глав-ных диагоналей с одной и той же суммой г. мы получим систем)"линейных уравнений AIv — 0. где М есть 8 х 10-матрлна

- 1 1 1 1 0 0 0 0 0 0

- 1 0 0 0 1 1 1 0 О О- 1 0 0 0 0 0 0 1 1 1- 1 1 0 0 1 0 0 1 0 0-] 0 1 0 0 1 0 0 1 0- 1 0 0 1 0 0 1 0 0 1- 1 1 0 0 0 1 0 0 0 1

V -1 0 0 1 0 1 0 1 0 0 /

\. v есть вектор-столоец

(г Ci,i2 <"'22

(На самом деле это — просто вопрос формального применения опре-деления.)

(ii) Воспользуйтесь функцией MATLAB'a rref. чтобы привестиматрицу А/ к ступенчатой верхней треугольной форме 1^. Почемуиз этого следует, что. если Л является магической, то т р и элемента:-'ТОй матрицы, скажем, в нижней строке, могут быть выбраны про-извольно, а остальные при этом определяются однозначно? (Обра-тите внимание, что после приведения по строкам матрицы М, верх-няя строка приведенной матрицы мол-сет не приниматься во внима-ние, поскольку она как раз дает уравнение

г — сумма элементов нижней строки матрицы .4,

теперь — единственное уравнение, содержащее г.)

Другой способ выразить это состоит в том. что последователь-ная запись строк 3 х 3-матрины дает вектор

ai2 а-1з «21 «22 «23 o,3i «З-J «из) € R 9 ,

и подпространство магических квадратов имеет размерность 3.

l j В ней нули получаются но только под элементами главной диагонали ре-зультата. но и нал каждым ее ненулевым элементом. — Прим. пере в.

Page 121: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

120 Глава 8. Магические квадраты

(iii) Проверьте, что матрицы

/О 1 -1Ei = - 1 0 1

\ 1 - 1 О

являются магическими квадратами. Покажите, как из (ii) следует,что каждый 3 х 3-ыагический квадрат Л может быть единственнымобразом записан в виде линейной комбинации

А = Х1Е] + Х2Е2 + X-AE?J

для Ai, Ао, A3 G R (Подсказка: Нужно показать, что Е-±, Е-->, Е-$ обра-зуют базис трехмерного подпространства магических квадратов.Так как имеются три матрицы £\. достаточно показать, что онилинейно 'независимы как векторы из R 9 .) Чему равны А,-, если Азадан матрицей (8.1), приведенной выше?

(iv) 3 х 3-матрица вдобавок к двум «главным» диагоналям имеетчетыре «ломаные» диагонали с суммами

«11 + «23 + «32- «12 + «21 + «33: «13 + «21 + «32; «1 2 + «23 + «3'-

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

В общем случае, п х n-матрица имеет две главные диагонали и2п — 2 ломаные диагонали. Если суммы элементов по каждой изэтих диагоналей, каждой строке и каждому столбцу равны одномуи тому же т. то матрица называется папдиагопалъпым магическимквадратом.

Расширьте вашу 3 х 3-матрицу Л/, добавив к ней четыре строки,соответствующие четырем ломаным диагоналям, и используйте по-лученную матрицу (скажем, M l ) , чтобы показать, что единствен-ной пандиагонапьной матрицей является АЁз Для А 6 R. (Такимобразом, вы должны показать построчным приведением Л/1 к тре-угольной форме, что лишь один элемент из А выбирается произ-вольно, а все остальные равны ему.)

(v) Теперь рассмотрим произведения магических квадратов 3 x 3 .Из (iii) следует, что произведение двух таких квадратов имеет вид

(XiEi + Х2Е2 + X3E2)(fi1E1 + fj2E, + fi3E3). (8.2)

Page 122: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

8 . 3 . М а г и ч е с к и е квадраты р а з м е р а 4 x 4 1 2 1

ПУСТЬ

Проверьте, что вес произведения E,Ej (включай i ~ у) могут бытьпредставлены как линейные комбинации из I.P.Ei, (I есть единич-ная 3 х 3-матрпца)и. следовательно, (S.2) также является такой ли-нейной комбинацией.

Выведите, что произведение четкого числа магических квадра-•1ов размера. 3 х 3 является линейной комбинацией из 1,Р.Е-Л. Взаключение докажите, что произведение нг.че.гтюио числа магиче-ских квадратов размера 3 x 3 также является магическим. (В «чет-ном» случае вам нужно показать, используя только что доказанныйрезультат, что перемножение линейных комбинаций из 1.Р,Ез сно-ьа. дает линейную комбинацию из этих трех матриц. Это можносформулировать следующим образом: «подпространство R g , натя-нутое па 1,Р.Е% замкнуто относительно матричного умножения».Обратите внимание, что -по не есть подпространство всех маги-ческих квадратов. Произведение пе-четпого числа магических ква-дратов, как вы теперь знаете, может быть записано в виде произве-дения линейной комбинации из 1,Р,Ец и линейной комбинации изEltE2,E3.)

(vi) Объясните, почему условие, что сумма элементов по любойстроке 3 х 3-матрицы Л равна г, эквивалентно условию, что (1.1.1)является собственным вектором матрицы Л с соответствующим соб-ственным значением г. Объясните также, почему из этого послед-него условия следует, что для любого целого к > 0 вектор (1,1,1)является собственным вектором матрицы Лк с соответствующимсобственным значением г'\ (Это стандартное свойство собствен-ных векторов следует из их определения.) Теперь получите из (v).что. если А есть магический квадрат 3 х 3 с магической констан-той г и А1 —нечетно, то Лк есть магический квадрат с магическойконстантой г .

8 . 3 . М а г и ч е с к и е к в а д р а т ы р а з м е р а 4 x 4

(i) Постройте матрицу, соответствующую матрице М, приведеннойвыше, для случая 4 x 4 . Это будет матрица размера 10 х 17. Исполь-зуйте MATLAB, чтобы показать, что ее ранг равен 9. и докажите.

Page 123: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

122 Глапа 8. Магические квадраты

что л R U l магические квадраты размера 4 x 4 образуют подпро-странство размерности 8.

(ii) Пусть р = \р(\) р(2) р(3) р(А)} e r i ь перестановка чисел 1. 2. 3. 4,т.е. числа 1, 2. 3, 4 и некотором порядке. Матраца перестановок Л.соответствующая р, есль 4x4 -матрица, вес элементы которой равнынулю, исключая A(i,p(i)) = 1 для i ~ 1.2,3.4. Так, например, еслир = [3 1 2 4], то

t °10

\ °

00]

(}

1000

0001 )

Обратите внимание, что п действительное!и это магический ква-драт.

Имеется семь перестановок чисел 1. 2. 3. 4. которые таким обра-зом порождают магические квадраты. Найдите их. В качестве под-сказки приводим очень грубый способ непосредственного перебораперестановок в MATLAB'e:

for a=l:4

for b=l:4

if b~=a

for c=l:4

if c~=a k c"=b

for d=l:4

if d~=a & d~=b & d"=c

p=[a b с d] ;

end;

end;

end;

end;

end;

end;

end;1)

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

1 1 Здесь знак ; после end можно не ставить, поскольку роль разделителя игра-ет <Enter>. В версиях ,5.0 и выше для получения всех перестановок из заданныхэлементов есть соответствующая команда. — Прили пере.и.

Page 124: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

a—b—cb + c-

-«. + 2

4- d 4--d + e

2b

e —a

I

+ b + cb 4- с 4-a—2c-

2 c

+ dd—e

h 2 e

8 . 4 . М а г и ч е с к и е к в а д р а т ы размера 5 x 5 ( ф а к у л ь т а т и в н о ) 1 2 3

критерием Л/v — 0. как в задаче (i) из §8.2. Сейчас, однако, Мбудет 10 х 17-матрицей, которую вы только что нашли, a v будет17 х 1- вектором-столбцом вида ( — 1 ац . . . о.ц) ' .

(iii) Добавьте дополнительные строки к нашей матрице М. чтобыпроверить, не может ли она быть пандиагональным магическимквадратом размера 4 x 4 (определение см. в задаче (iv) из §8.2). По-лученную матриц}- назовем Ml. Какова размерность пространстватаких матриц теперь? Порождаются ли некоторые из них матрица-ми перестановок?

(iv) Приведением по строкам вашей матрицы Л/1 к треугольнойформе покажите, что каждый пандиагональный магический ква-драт 4 x 4 имеет вид

a + b — c—d 4- p. —a + b + Зс + d—e— b + c + d + e b — c + d + e-a 4- 2b + 2c a

2d 2e

где п, ft, c. d, e — вещественные числа. Напишите М-файл, порожда-ющий такие матрицы, и воспользуйтесь M A T L A B ' O M . чтобы найтисобственные векторы в нескольких примерах. Имеются ли у васпредположения об общем виде результата? Можете ли вы объяс-нить смысл одного из собственных значений тем же способом, чтои в задаче (vi) из §8.2? (Одно соотношение между собственнымизначениями следует из того факта, что сумма собственных значе-ний любой квадратной матрицы равна следу матрицы, т.е., суммеэлементов ведущей диагонали — из верхнего левого угла в правыйнижний.)

8.4 . М а г и ч е с к и е к в а д р а т ы р а з м е р а 5 x 5( ф а к у л ь т а т и в н о )

Выясните, что сможете, о размерности пространства магическихквадратов размера 5 х 5 и подпространства пан диагональных. При-надлежат ли в этом случае пандиагональные квадраты линейнойоболочке матриц перестановок? Если это так, то найдите базис, со-глоящий из матриц перестановок. (Подробнее вы сможете прочи-тать в работе [16].)

Page 125: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

9НОД, псевдопростые числа и тест

Миллера

Эта глава содержит два исследования ич области теории чисел,основанных на идеях гл. 3. Исследование А касается наибольшихобщих делителей (НОД). а исследование В посвящено псевдопро-стым числам и тесту Миллера па простоту.

А. НОД случайных пар и троек чиселЦель работыМы хотим найти с помощью теоретических и экспериментальныхисследований оценки вероятности юго. что пара случайно выбран-ных положительных целых чисел не имеет общего делителя. Этораспространяется и на случай троек чисел.

Используемые математические понятияИспользуются элементарные сведения из теории вероятностей (на-пример, то, что вероятность двух независимых событий есть про-изведение их вероятностей). Используется несколько математиче-ских положений, которые нуждаются в детальном рассмотрении,так что работа выглядит скорее математической, чем вычислитель-ной. Идея состоит в том, чтобы воспользоваться математическимирассуждениями и экспериментом для определения некоторых веро-ятностей, например, такой: если даны три случайных числа, то чемуравна вероятность того, что числа в каждой из трех возможных парявляются взаимно простыми, т. е. имеют НОД, равный 1?

Используемые возможности MATLAB'aВ работе используется М-файл gcdiv.m из гл. 3, в котором вычисля-ется НОД двух целых чисел. Требуется также написать некоторыеМ-файлы, использующие циклы и условные операторы.

М-фанл gcdran.m принимает п пар «случайных» чисел, каждое< 1000, и находит для каждой из них НОД, а затем выводит про-цент пар с НОД. равным 1.

Page 126: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глава D, НОД, пссвдопростыс числа и тест Миллера 125

(i) Выполните этот М-файл несколько раз. скажем, для ?! — 500, инайдите средний процент пар с НОД. равным 1.

(ii) Измените М-файл gcdranx-ак. чтобы вычислялся процент пар сНОЛ, равным 2. а также процент пар с НОД. равным или 1, или 2.i ли 3. Таким образом, в последнем случае пары (4, 10). (6. 9), (12, 21)у (6.3-5) будут считаться парами с НОД. равным или 1, или 2, или3, в то время как пары (5,10). (7. 35). (30. 50) таковыми считаться небудут.

(iii) С помощью столбцовых диаграмм, гистограмм или других{.редсти отобразите (за один раз обсчитав, скажем. 1000 случайныхгар) число пар, имеющих НОД от 1 до 20. Подсказка: Лучше всегоьоспользоваться вектором, например, v. длины 20, у которого к-йгломепт равен числу пар с НОД, равным к. Начните с задания на-чального состоянияv=zeros(l ,20)и затем, если вычисленный НОД равен /,• < 21. выполните прира-щениеv(k) = v(k) + 1;В заключение команда bar(v) построит столбцовую диаграмму.

fiv) Рассмотрите следующее «утверждение», выписав его для себя(о всеми темп объяснениями, которые пы сможете найти.

Пусть ,т — вероятность т о т , что случайно выбранная пара чиселимеет НОД, равный 1, т.е. это пара взаимно простых чисел. Вспо-мните, что для целых а. Ь, символ а | b означает «п есть делительЬ». другими словами, Ь/а есть целое число. Теперь

НОД(а,Ь) = h&h\n и h \ b и НОД(а/й,Ь/Л) = 1;

таким образом, вероятность того, что НОД (а. Ь) = h. равна[l/li){l/h)x. (Неформально, вероятность того, что h делит случай-ное целое п. равна l/h.) Так как каждая пара имеет какой-то НОД.мы получаем

Но X l ^ i ( l / ^ 2 ) ~ ?i"2/6. (Этот известный и замечательный резуль-тат был получен Л. Эйлером около 1750 г. Доказательство можнонайти в большинстве книг по комплексному анализу или рядам Фу-рье. Здесь мы просто считаем его известным.)

Что это дает для х? Насколько хорошо это согласуется с ваши-ми экспериментальными результатами? В соответствии с этим, как

Page 127: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

126 Глава 9. НОД, псевдопростые числа и гест Миллера

приблизительно будет выглядеть ваша гистограмма для НОД, непревышающих 20?

(у) Расширьте приведенные выше рассуждения (переписав их за-ново) так. чтобы получить вероятность у того, что три случайновыбранных целых числа a.b.c имеют НОД(о,Ь, с) = 1. Изменитеприведенный выше М-файл (или ваш gcdiv3.m из гл. 3). чтобы онмог находить число случайных троек с НОД=1. и сравните най-денное с теоретическим ответом. Если вам нужно знать прибли-женное значение Х^/^О/Л 3); почему бы не найти его с помощьюMATLAB'a, вычислив сумму, скажем. 50 первых членов?

(vi) Рассмотрим теперь «утверждение», альтернативное приведен-ному выше в задаче (iv). Запишите его. уточняя детали там, гдеможете. Пусть р есть простое число. Вероятность того, что данноецелое а делится на р. равна 1/р. Для двух данных целых а и Ь веро-ятность того, что они не делятся па р одновременно, равна 1 — \ . Впредположении, что эти события для разных р являются независи-мыми, вероятность того, что нет такого простого числа, на котороеделятся и а, и Ь, равна произведению

ппо всем простым числам р — 2, 3. 5. 7 .11, . . . . Это и есть вероятностьтого, что а и Ь являются взаимно простыми.

В вашем распоряжении имеется М-файл primes.m. который со-здает вектор р. содержащий простые числа < 5000. (Так р(1) =2,р(2) = 3 и т.д.) Выполните его. набрав, как обычно, primes.Сколько простых чисел он создает? Вычислите приведенное вышепроизведение по всем простым числам < 5000. (Это будет хорошимприближением для произведения по всем простым числам.)

Согласуется ли это с вероятностью х, полученной в задаче (iv)?

(vii) Возьмите случайную выборку троек чисел а, Ь. с и найдите, ка-кой процент их окажется попарно взаимно простыми. Здесь тройкаа, Ь, с является попарно простой, если НОД каждой из пар а, Ь, илиЬ.с. или а, с. равен 1. Простое возведение в куб вероятности х то-го, что два числа взаимно просты, не дает (докажите) вероятноститого, что все эти пары взаимно просты. Как вы думаете, почему?

Page 128: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глава 9. НОЦ. псевдопростые числа и гест Миллера 127

Предупреждемие: Чтобы сообщить MATLAB'y «,r = у = z — 1», непишите.

x==y== z==lпоскольку Э'Ю выражение будет «истинным», т.е. примет значение1, если, например. :г ~ у и z = 1. Вместо этого напишитех==1 к у==1 & z==l

(viii) Приведем набросок «аргументов», позволяющих найти веро-ятность юго. что три числа являются попарно взаимно простыми,как выше. Где сможете. уточните детали. Пусть р — простое число.Вероятность того, что пи одно из трех чисел a.b,c не делится на р.равна

р.Вероятность того, что только одно из чисел а.Ь.с делится на р. а

другие д в а - п е т . раина

1

Следовательно, вероятность того, что не более чем одно из трехчисел делится на р. есть сумма этих двух вероятностей, котораяпосле упрощения даст

(9.1)

Итак. а. Ъ и с являются взаимно простыми тогда п только тогда, ког-ла для всех простых р не более чем одно из данных чисел делится нар. В предположении независимости всех этих событий вероятность2 того, что три числа, являются попарно взаимно простыми, равнапроизведению выражений (9.1) для всех простых р. Вы, конечно,\ знали первый квадратичный множитель, вспомнив приведеннуювыше задачу (vi). Вычислите значение другого множителя, исполь-зуя полученный вами вектор р простых чисел. Теперь выведитезначение z теоретически.

Согласуется ли это с найденным вами экспериментальным зна-•епием?

(ix) Рассмотрите множество всех пар чисел a, ft, где а и Ъ оба >1 и < т. Каков среди них процент взаимно простых чисел дляразличных 7гс? Как близко это к вероятности того, что случайнаяпара является взаимно простой?

Page 129: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

128 Глаиа 9. КОД. псеидопростыо числа и тест Миллера

В. Псевдопростые числа и тест Миллера

Цель работыРабота основана на введенном в гл. 3 понятии псевдопростого чис-•га. Некоторые числа «маскируются под проел ью». и мы рассмот-рим здесь метод, обычно используемый дли «снятия .маски* с такихчисел - показывающий, что на самом деле они вовсе не простые.

Используемые математические понятияИспользуется теорема Ферма из §3.4. а также метод вычисленияостатков rem(a". ш), где и и т могут быть довольно большими чис-лами. Это автоматически делает наша функция MATLAB'a рои.Здесь приводится также сравнительно сложный алюрптм провер-ки, является ли число простым — тест Миллера. Ею можно приме-нять при «снятии маски» с псевдопростых чисел, доказывая, чтоони являются составными, но без разложения на множители.

Используемые возможности M A T L A B ' aДля вас написаны М-файлы к этой работе, но вам придется слегкаизменять один из них, чтобы решать различные задачи. М-файлgcdiv.m для вычисления НОД используется и здесь.

(i) В вашем распоряжении имеется М-файл primes.m . Для каждо-го числа, не превосходящего 5000, он определяет, является .пи онопростым, помещая простые числа в вектор р = [р(1) р(^')]^ ГДе

/г--число найденных простых чисел. Так. р(1) = 2,р(2) — 3 ;р(3) =5.р(4) = 7.р(5) = 11 и т.д. Начните с выполнения primes. Послеэтого наберите р и в очиет получите длинный вектор, содержащийвсе эти простые числа: так, р(5) есть пятое простое число, рав-ное 11.

(и) Вспомните (гл. 3), что псевдопростым по основанию а называ-ется число 71. хотя и tie являющееся простым, но которое тем не ме-нее удовлетворяет соотношению rem(n"~ l,7i) = 1. Важность такихчисел состоит в том, что каждое простое п автоматически удовлет-воряет этом;- соотношению (пока а не является кратным п) по тео-реме Ферма (см. §3-4). Однако имеется небольшое дополнительноемножество не являющихся простыми (составных) чисел, которые«маскируются под простые» в том смысле, что они также удовлет-воряют этому соотношению. Один способ проверить, что число пне является простым, не разлагая его на множители (это безнадеж-но долгая операция для всех очень больших чисел), состоит в том,чтобы показать, что оно не удовлетворяет условию гет(й"~ 7 , п) — 1

Page 130: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глава 9. НОД,, псевдопростые числа и тест Миллера 129

для некоторого а, не кратного п. Псевдопростые числа плохо под-даются такой попытке покачать, что они не являются простыми.Стоит заметить, что ь этой книге мы мол-сем только проиллюстри-ровать наши идеи на сравнительно небольших числах.

М-файл psp2.ra находит числа < т, псевдопростые по основа-нию 2. для тп, заданного пользователем. Заметьте, что мы требуем,чтобы четное число 2п~1 давало остаток 1 при делении на п. дру-гими словами, должно выполняться условие 2п~1 — кп = 1. Еслип было четным, правая часть этого равенства будет четной, чтоприводит к противоречию, так что необходимо, чтобы п было не-четным. Чтобы несколько сократить время выполнения, М-файлпроверяет только нечетные числа п, начиная с п — 3.

Этот М-файл имеет комментарии, поясняющие, как он работа-ет. Возьмите, скажем, m — 2000 и проверьте, что каждое найденноеМ-файлом число п является составным и что 2п~1 = 1 mod n, т.е.I !"" 1 дает остаток 1 при делении па п. Конечно, вам нужно восполь-зоваться

>> pow(2,n-l,n)

чтобы сделать это.Внесите изменения в psp2.m, необходимые, чтобы найти все чис-

ла < 5000, которые

(1) являются псевдопростыми по основанию 2,(2) являются псевдопростыми по основаниям 2 и 3,(3) являются псевдопростыми по основаниям 2, 3 и 5.

Вы обнаружите, что ваш список становится все короче: все меньшеи меньше чисел могут маскироваться под простые, когда использу-ется несколько оснований. Для каждого псевдопростого числа най-дите его разложение на простые множители.

(ш) Как много простых чисел < 5000? (Используйте задачу (i),приведенную выше.) Предположим, вам дано нечетное п, такое, что1 < п < 5000 и

rem{a"~" , п) = 1 для а = 2, 3 и 5.

Чему равна вероятность того, что п не является простым? Поучи-тельно здесь то, что п «очень похоже» на простое.

>iv) Если вы хотите найти числа п, являющиеся псевдопростымитолько по основанию 3, а не по основаниям 2 и 3, то вам потребуетсярассматривать и четные числа. То же будет и для основания 5. А

9-4196

Page 131: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

130 Глава 9. НО,.7. i ices долростыс числа и тост Миллера

п самом деле, существуют ли четные числа п, псевдопростыс пооснованиям 3 пли Ъ п меньшие 10000?

(у) Тест Миллера . Если для числа п справедливо remfa"" 1, n) ф1, (т.е. п"~1 ф 1 mod и) при некоюром п. не делящемся на и, то inicopcMbf Фирма мы тилем, что п иг ян.'шг-шел простым. Имеетсяболее тонкий метод выделения составных (т.е. не являющихся про-стыми1') чисел, называемый тестом Млллс-ра. который был опу-бликован в 197G г. Подробности теории тепа Миллера можно наши,например, в [7]. гл. 5.

Здесь мы приводим '-этот тес:т. Возьмем нечетное п > 1 и чисчоЬ (основание.), взаимно простое с и. 'i.e. такое, ч го ПОД(Ь. ?>) = 1.Затем выполним следующие шаги:

Шаг 1. П у с л ь к — п — 1. г ~ гепц'//'. п). FA:ли г ^ L то п -не про-

ходит тест Миллера по основанию 6, в противном случае пой-дем дальше. (Обратите внимание, что. если л проходит шаг1. то /( либо простое, /moo пеевдопростое по основанию Ь.)

Пока А' четно и г = 1. будем последовательно повторять следующийшаг.

Шаг 2. Заменил: к на к/2. а затем заменим г новым значениемгет(ЬА\п).

Когда к станет нечетным или г ф 1:

если г — 1 или г = /) — 1. то п проходит тест Миллера пооснованию Ь\если г ф 1 и г ф п - 1. то п не проходит тест Миллера, пооснованию Ь.

Важный результат состоит в том, что если п простое, то оновсегда проходит этот тест. Таким образом, если /?. не проходиттест, то это составное число. Заметьте, что не пройти шаг 1 означаетне удовлетворить теореме Ферма.

М-файл mil ler .m выполняет чгот гест. Проверьте, сможете ливы понять, как он это делаег. Воспользуйтесь этим М-файлом. что-бы выполнить следующую задачу.

(vi) Проверьте m i l l e r .га на нескольких простых числах, которыедолжны пройти этот тест. Выпишите полученные остатки. Возьми-те необходимые вам простые числа из задачи (i), приведенной выше.

• По техническим причинам число 1 не рассматривается ни ка.к простое, ликак составное. Это iw. должно беспокоить наг. ни и малейшпй степени!

Page 132: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глава 9. HO_i(, nc.e.n;ioupoci!,n: чист и ТОСТ Миллера 131

(vii) Проверьте, что п = 1373653 проходит тост для Ь = 2 и b = 3.но не проходит при Ь = о: зашшппе резу̂ и.-гач ы ш.пюднення те-ета для этих Ь. Это л является простым или составным? ПУСТЬс ™ reniffj""1. N). (Заметьте?, что это не мо'же.т быть определенос помощью функции MATLABa rem поскольку число 5"~' слиш-ком большое. Но М-фан. i m i l l e r .m скажет вам. каково г!) НайдитеНОД(с — 1.п) и проверьте, что это истинный делитель л. т.е. де-литель, отличный от 1 и v.

(viii) Проверьте, что и = 2532G001 проходит тест Миллера дляоснований 2. 3 и 5. по не проходит при основании 7 (выпишитеостатки, получавшиеся в результате выполнения тестов). Пусть с ~rem(7"~1

1 г»,). Найдите НОД(с— 1, п) и проверьте, что это истинныйлелитель л.

(:х) Найдите первое число > 5 х 107. которое могло бы быть про-стым. Запишите точно, что вы делаете, чтобы найти это число. (Яс-но, что чем меньше раз вы обращаетесь к тесту Миллера, тем луч-ше. Например, нет необходимости проверять, является ли 50000002простым с помощью теста Миллера.)

(<) Какие ич найденных выше псевдопростых чисел (задача (ii))распознаются как составные с помощью тес га Миллера по основа-нию 2?

(xi) Существует составное число между 2000 и 3000, которое про-ходит тест Миллера по основанию 2. Найдите его. Пройдет ли оноLCCT Миллера по основанию 3'.'

(\ii) Немного теории. Запись х = у mod n («х со1шадае1 с у походулю П'>) означает, что п | (х- у) (т.е. а точно делит х — у). Такимобразом, если г = remfo, п), то а = г mod п. Вы можете допуститьвыполнение стандартных свойств, которые легко доказать: если х =у и и = v mod п, то х ± и ~ у ± v и хи Е: yv mod п. В частности.х2 = у2 mod п.

Теперь предположим, что и нечетно и 2Г~1"1 I (и — 1). где г естьиелое > 0, и что НОД(Ь.н) = 1. Предположим, что

,-:= bf"-n'/2"+1 ф ±1 mod ,j. (9.3)

Используя (9.2) и последовательное возиедепие в кна;п,)ат. по-ьажиге. что п является исевдоиростым по основанию Ь. Покажи-

Э'

Page 133: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

132 Глава 9. ИОД. псевдопростые числа и тест Миллера.

те также, что тг не проходит тест Миллера по основанию Ь и чтоп | (с2 — 1), используя (9.3).

Пусть h = НОД(с — 1,п). Тогда h / 1 и h ф п, т.е. что Ь —истинный делитель п. Покажите это следующим образом:

(a) Для h ~ 1 выведите п \ (с + 1). (Вы .можете иоспо;гьзонарп.сястандартным результатом х | yz, НОД(.);. у) = 1,=> х \ z.) В чемздесь противоречие?

(b) Если h = л, то п | (с — 1). В че.м противоречие здесь?Проверьте, что 10004681 является псевдопростым числом по

основанию 2, которое не проходит тест Миллера по этому основа-нию. Разложите его на множители, используя приведенный вышеметод. (В идеале вы должны остановиться, приведя простые мно-жители для числа 10004681. Вспомните, что в нашем распоряженииимеется вектор р простых чисел.)

Для псевдопростых чисел по основанию 2. которые вы нашливыше в задаче (ii), проверьте, какие из них могут быть разложе-ны приведенным выше методом. Выпишите сделанные вами шагипри проверке чисел и составьте список тех, для которых метод неработает.

Page 134: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

10

Графики: кривые и огибающие

-ha глава содержит три графических исследования. ИсследованиеА посвящено некоторому специальному случаю кривых, получае-мых качением одной окружности по другой; В есть продолжениеисследования огибающих семейства линий, введенных в гл. 4, а вС обсуждаются кривые, которые имеют «постоянную ширину» втом смысле, что все пары параллельных касательных находятся наедном и том же расстоянии друг от друга.

А. Лепестки розы и эпициклоиды

Цель работыЛепестки розы являются кривыми в виде «петель» —они не оченьпохожи на розы! — и мы будем изучать их теоретически и экспе-риментально. (Некоторый дополнительный материал вы найдетев [8].) Затем мы рассмотрим известную огибающую, определенную>ордами окружности, и сияжем что с кривой, полученной качениемодной окружности по другой.

Используемые математические понятияРабота посвящена параметризованным кривым на плоскости, в томчисле и представимым в полярных координатах, а также огибаю-щим семейства линий (§4.6). В некоторых расчетах используютсятригонометрические формулы.

Используемые возможности MATLAB'aВам потребуются некоторые М-файлы из гл. 4, чтобы рисовать кри-вые и огибающие.

Лепестки розы. Это особый случай гипоциклоид (см. упражне-ние 4.5), где а = 2m/(m + 1), fo = 1 и d ~ а— 1. Здесь т есть целое> 0. На рис. 10.1 изображена такая кривая для т — 4.

Рассмотрите эти кривые. Воспользуйтесь М-файлом hypocy.m .В частности, исследуйте экспериментально следующие параметры в

Page 135: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

134 Глава К). Графики: кривые и огибающие

Ж:

Р и с . 10.1. Кривая ."leneri Kiiii роны с т = 4 и носсмыо «поглямп».

зависимости or ш; (i) наименьшее значение t. с которого завершает-ся вычерчивание кривой п наминаемся повторное ее вычерчивание;(ii) Miic.'io проходов кривой через начало координат до тог о .момента,ко!да она замкнется и начнется ее noinopnoo прочерчивание; (iiijчисло «лепсегков-нетель» у «розы».

Далее проведите следующее математическое исследование. По-ложите / = (т — 1)0 в парамгтрнчащш гипоциклоиды, заданнойвыражениями ( 1.2). Зачем примените известные формулы

,, , ,'а-г-Л fa-Гcos п -i- cos ;i — 2 cos | —

sin a — sin 3 = 2 cosо + J

0

2

_____

чтобы показать, что кривая лепестком рочы может быть записа-на в полирпых координатах г. в как г — 2'-^j cos(mO) . (Это про-сто означает, что :с = г cos 0. у = гш\в.) Для этого вы можетепредположить, что кривая в полярных координатах, г — /{в), где/ -- -некоторая (функция, ^амкнтс.я и начнет повторяться, (а) ког-да 0 ~ тг, если f[0 + тг) = - / ( # ) для исех в, и (Ь) когда в = 2тг.если /(6» + тг) ф -f(9), но }'{в + 2~j = f(0) для всех в. Используй тсэто. чтобы найти ответы на сформулированные выше вопросы (i).(ii). (iii), и сравни ie с от ногами, полученными вами из эксперимен-тов.

Page 136: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глагш 10. Графики: к]>иные ч огибаюшие 135

Эпициклоидый) Покажите, ми) уравнение хорды окружиогш .г" + у~ = 1. со-

единяющей ючкп icosf. shi t) и (ГОЙ(Ш£). shiimt)). есгъ

.x(sinf •- sin nit) -• .(/(cos / — cos nit) + sini'm — 1)/ = 0. (Ю.1)

(Вам здесь придется вспомнить тригонометрическую формулу для

sin((7 — /)).] Воспользуйтесь М-флйлом linenv.m. чюбы пантеона п.

огибающую -)"П1>: хорд для некоторых значений т. скажем, 2, 3 и 4.

Напечатайте одну in них.

(ii) Проверьте, что точка

mvost -\- cus(-mt) . т sinf л- ш\[т!)

т 4 1 ' т + "1

одновременно улог.. ici i5O]jner (1U..L) н у])авпеник). полученному диф-ферепшфоваппем (10.1) но /. Это частный случаи ситуации и'з уп-ражнения -1.7. который покачивает, что чга гочку (.r(t). i/(t)) даетпарамсгричашмо oi полющей хорд. Иначе говоря, кривая, которуюнаш глаз формирует из сгущений, образуемых всеми хордами, па-раметризуется так. как было скачано выпи1.

iui) Эпициклоида подобна, гипоциклоиде (см. упражнение 4.5). нополучается качением подвижной окружности по внешней стороненеподвижной. Ее параметризация (через переменную и по причине,которая станет попятной позже) е п ь

( '"' \ , „ • ( Ьи \ , ,.г .-- [а - I)-) cos ,- -г dcos а. ц = \а -\- \>\ sin + asm и.

\п -!- о/ V" + о/На рис. 10.2 показан случай а = 5. Ь = 1. d -- 1. а также изображенынеподвижная и катящаяся окружности в положении, соответству-ющем -и — 0.

Покажите (математически!), что. положив и = mt и взяв по.ч-холящие значения a.b.d. выраженные чере'з т. можно построить-пшпиклоид\\ совпадающую с приведенной выин; параметризаци-ей огибающей хорд. Вам нужно, например, взять т/{т + 1) =а + Ь. \/{т + 1) = (I.

(iv) Пчменениге hypocy ли гак, чтобы ])исовалнсь эпициклоиды. За-мечание: Вам нужно нпссти илио топкое изменение, а именно нерх-ний преде.т изменения параметра «upper» должен быть переопреде-лен как abs(a+b)+abs(d). Так как вы обозначили параметр черези. то вам нужно заменить t = t l : t s t e p : tu на u = t l : t s t e p : t u . Нет

Page 137: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

136 Глава 10. Графики: кривые и огибающие

Рис. 10.2. Эпициклоида, полученная качением окружности радиуса 1по внешней стороне окружности радиуса 5.

необходимости переименовывать t l и tu. Остальные изменения ка-саются просто строк определения х ну. Нарисуйте несколько эпи-циклоид для малых (целых) значений т и сравните с огибающейхорд.

(v) Докажите формулу параметризации эпициклоиды (из зада-чи (ш), приведенной выше).

В. Огибающие

Цель работыМы намереваемся здесь рассмотреть две ситуации, в которых се-мейство линий имеет огибающую. Одно из них есть семейство пря-мых, подобных тем, с которыми мы имели дело в гл. 4 (упражне-ние 4.6), а в основе другого лежит «падающая лестница». Рассмо-трение ведется как в математическом, так и в экспериментальномаспектах.

Используемые математические понятияОни включают параметрические уравнения кривых, методы исклю-чения переменной из двух уравнений, касательные к кривым и про-стую тригонометрию. Здесь мы продолжаем начатое в гл. 4.

Используемые возможности MATLAB'aВ первой части исследования, чтобы нарисовать огибающую пря-мых из гл. 4, используется М-файл linenv.m. Вам потребуется изо-

Page 138: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глава 10. Графики: кривые и огибающие 137

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

Перпендикулярные биссекторы1'

Рассмотрите огибающую прямых, перпендикулярно проходящихчерез середины отрезков, соединяющих точку (а,0) (можете счи-тать, что a > 0) с точками единичной окружности х? + у2 — 1, па-раметрическое представление которой (cosi.sint). Для начала по-кажите, что уравнение такой прямой имеет вид

2x{a -cost) - 2 j y s i n t + l - а2 = 0 (10.2)

(см. упражнение 4.6). Затем воспользуйтесь linenv.m, чтобы на-рисовать огибающую для различных значений а. В этот М-файлнадо добавить пару строк, чтобы он рисовал красным цветом и са-му окружность. Распечатайте один вариант для a > 1 и один дляa < 1. "

Заключительная часть этой задачи посвящена математическомуисследованию, объясняющему только что полученные рисунки. Дляпрямых, заданных уравнением (10.2), воспользуйтесь методом изупражнения 4.7, чтобы показать, что уравнение огибающей этихпрямых при чф\ есть

4.т2 - 4а.т + У „ = 1 - а 2 .1 - а2

Так вы исключили t из двух уравнений, а именно уравнения (10.2)и производной этого уравнения по t. Один способ исключения *состоит в том, чтобы упорядочить эти уравнения, как уравненияотносительно sin t и cost, решить их. а затем использовать соотно-шение sin" t + cos2 t — 1.

Что представляет собой огибающая при а — 1? Существует липростое геометрическое объяснение этого?

Пусть а / 1. Сделайте подстановку А' = х — |. чтобы привестиуравнение огибающей к виду

4 л ' 2 + т-^—2 = 1-

Что это за кривая? Объясните на примере, как это согласуется срисунками.

Bisection —деление пополам. — Прим. перее.

Page 139: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

138 Глава 10. Графики: кривые и огибающие

Можете ли вы как-то охарактеризовать те частные случаи, когда

отрезок, соединяющий точку (п.0) с окружностью, касается ее?

При этом, конечно, требуется, чтобы а > 1. (Подсказка: Покажите,

что тогда cos t ~ \/u и бпескторы имеют уравнения Л'у^* - 1 =

±У.)

Падающие лестницы

Лестница длины / опирается па "землю и вертикальную стену, од-новременно касаясь прямоугольною ящика со сторонами а и Ь. какпоказано па рис. 10.3 слепа.

Обозначив через .г длину отрезка, как указано па рисунке, по-кажите, что /(.г) ~ 0. где

/(;;;} = х1 - 2а т* + (a2 +- /г - 1'2).т2 + 2аГ2:г - а2!'2.

Возьмите / — 10 ti а — 2. Проверьте, что Ь = 5 дает физическивозможное решение (т. е. уравнение имеет корень л\ который фи-зически возможен), но Ь --- G уже не дает i а кого ргчнения. Про-иллюстрируйте зто гра([)нком (])уикипн /. но также воспользуйтесьи командой roots , чтобы численно найти корни. М-фапл paramc:.mрисует параметризованные кривые (.г, .у) — (x(t).y(t)). В частномслучае графика функции у =• f{:r) вы можете взить х = t,y = / i t ) .и вам останется лишь вставить это в нужное место paramc .m. (He пу-

Рис. 10.3. Слева: .честница длины /. прислоненная к вертикальной степси касающаяся ящика размеров а и ';• Снрнва: рисунок ;(.1Я вывола урав-нении лестницы. Заметьте, чю .с и // на лих рисунках различаются посмысл V.

Page 140: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глава К). Графики: кривые и отбпющие l'.V.i

тайте этот у с у. используемым на рисунке! Этот Ы-файл являетсяуниверсальной нрог])аммой построения параметрических кривых,п поэтому его переменные естественно обозначить через х п у.)

Возьмите а -• 2 и Ь = 5 и найдите нее решения для / = 20. Про-делайте это и для а = 2.Ь = о,1 = 9.582209. Что здесь особенного?Ч ю произойдет, если / слегка увеличить или уменьшить?

Теперь мы убираем ящик и.. . Вообразите, что лестница со-скальзывает вдоль степы вертикально вниз (опасная возможность!)и найдите огибающую всех положений лестницы.

Покажите, что уравнение прямой линии, проходящей вдольлестницы и заданной углом /. как показано в правой части рис. 10.3.есть

+ 4 I.cost suit

Покажите с помощью метода из упражнения 4.7. что огибающаялиний положения лепницы дается уравнениями .г = Icns^t.y =/sin3/,. Теперь исключите /, чтобы показать, что уравнение огиба-ющей есть

Воспользуйтесь также linenv.ra, чтобы нарисовать огибающую ли-ний положения лестницы.

Покажите, что средняя точка лестницы при ее соскальзыванииописывает часть окружности. Сможете ли вставить что в рисунокогибающей? Видите ли вы связь с задачей о поднимающейся дверигаража9

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

Проверьте это на примере, приведенном выше.

С. Кривые постоянной ширины

Цель работыОкружность ни в коем случае не является единственной кривой,имеющей «постоянную ширину» в том смысле, что для всех парпараллельных касательных расстояние между ними одно и то же.В этой работе исследуются свойства кривых постоянной ширины.

Page 141: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

140 Глава 10. Графики: кривые и огибающие

включая способы их построения и их связи с другими геометри-ческими понятиями, такими, как огибающие семейства линий. (Вработе [5] имеются интересные наблюдения о кривых и поверхно-стях постоянной ширины.)

Используемые математические понятияУравнения линий и касательных, линейные уравнения и 3 х 3-опре-делители; используются также огибающие линий (гл. 4).

Используемые возможности MATLAB'аВычерчивание параметрических кривых и огибающих семействалиний с помощью данных М-файлов.

Эта работа посвящена кривым постоянной ширины. Ширинакривой измеряется расстоянием между парами параллельных ка-

сательных, а постоянная ширина означает, что все эти расстоянияравны. Как ни удивительно, окружность не является единственнойкривой с этим свойством. Взгляните на рис. 10.4. Кривые посто-янной ширины используются во вполне практических ситуациях:например, они встречаются в автомобильных роторно-поршневыхдвигателях Ванкеля; другой пример -- сверла для получения (по-чти) квадратных отверстий. Монетам придается форма кривой спостоянной шириной, чтобы использовать их в торговых автома-тах: британские монеты достоинством в 20 и 50 пенсов — примернекруглых кривых постоянной ширины.

\ ^

\

/

//

Рис. 10.4, Все расстояния между параллельными касательными рав-ны 2.

Page 142: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

10. Графики: кривые и огибающие 141

Вообще мы будем рассматривать только «выпуклые» кривые;in чтого следует, что для каждого направления имеются только двепараллельные касательные. Позднее мы встретимся с некоторыми•«необычными» примерами.

Нужные сведения об огибающих вы найдете в §4.6 и в упр. 4.7.

К о н с т р у к ц и я «педали»Пусть h — функция угла t. На рис. 10.5 через l(t) обозначена пря-мая, проходящая черед точку {h(t) cost, h(t) shit), перпендикулярнонаправлению из этой точки в начало координат.

ii) Покажите, что уравнение прямой l(t) есть

л; cos t + у sin t — h(t). (10.3)

'ii) Пусть h(t) = 1 + |cos(3£). Измените М-файл linenv.m так,чтобы он изображал огибающую Е прямых l(t) при 0 < t < 2тт.Распечатайте эту огибающую, так задав границы для хну, чтобыча рисунке была ясно видна вся кривая Е.

[т) Конечно, прямые l(t) касатпелъ'пы к огибающей Е. построеннойз (ii). Проверьте, что для заданной функции h будем иметь h(t) +h(l, + тг) — 2 при всех t. Почему отсюда следует, что у всех парпараллельных касательных к Е расстояние между ними равно 2 и,следовательно, Е является кривой постоянной ширины 2?

У А

{h(t)c,Q%t, h(t)smt)

Рис. 10.5. «Педальные координаты» линии.

Page 143: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

142 Глава 10. Графики: кривые и огибающие

(iv) Вспомните из упр. 4.7. что для нахождения уравнений огиба-ющей мы берем уравнение (10.3) вместе с уравнением

-xsmt + ycost - h'(t)t (10.4)

полученным дифференцированием (10.3) по t. (Здесь и далее ' озна-чает дифференцирование, d/dt.) Решите уравнения (10.3) и (10.4).чтобы получить выражения

x(t) - h(t)cost -ti{t)sint, y(t) = h(i)*mt + h'{t)cost. (10.5)

которые, таким образом, являются параметрическими уравнениямидля Е.

Измените М-файл paramc.m таким образом, чтобы он рисовалпараметрическую кривую, заданную уравнением (10.о) с функци-ей h из (ii). и назовите измененный М-файл constwl.m. Подберитеграницы изменения ,г и у так, чтобы Е точно вписывалась в ква-драт на экране (конечно, будучи кривой постоянной ширины, онабудет точно вписываться в квадрат!), и распечатайте этот рису-нок. Кривая Е будет соответствовать кривой, распечатанной вамив (ii). отличаясь, возможно, лишь масштабированием. Соедините(вручную) точки, где наша кривая касается верхней и нижней сто-рон квадрата, и точки, где она касается боковых сторон квадрата.Заметили ли вы что-то особенное в этих прямых?

(v) Объясните, почему после добавления к h(t) (из (ii)) константы a,получается другая кривая постоянной ширины. Чему равна шири-на этой кривой? Измените ваш М-файл constwl .m так. чтобы мож-но было нарисовать кривую для каждого из одиннадцати значенииа — 0. 0.1. 0.2.... ,1.0 на одном и том же графике, и назовите поле-ченный М-файл constw2.m. Вспомните, что использование hold on.между вычерчиванием отдельных кривых сохраняет их на одном итом же графике. Поставьте hold off в конце М-файла. Подгонитеграницы изменения х и у так, чтобы наибольшая из одиннадцатикривых точно вписывалась в квадрат экрана, и распечатайте этотрисунок.

(vi) Что произойдет, если вы возьмете п = —0.5 в (у)? Выведите ПАэкран полученную «кривую» и сделайте ее набросок от руки. Каквы думаете, она имеет постоянную ширину9

(vii) Как уже отмечалось, функция h из (ii) удовлетворяет уравне-

нию

h{t) + h{t + тг) = k7 (10.6)

Page 144: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глава ID. Графики: кривые и огибающие 143

Р и с . 10.6. Прямая, соединяющая две точки касания параллельных ка-rvre.'ibHbix, и ДРЙГТВП гельностн является нормалью к кривой в обоих точ-ках касания.

где /.• — константа (в этом примере А; — 2). Другой способ удоп.те-тверить уравнению (10.G) -сделать константой h. Какая кривая Еполучится из (10-5) в этом случае? (Вы можете ответить на этот во-прос, не прибегая к компьютеру!) Выберите функцию h, отличнуюот константы, которая удовлетворяет уравнению (10.6) и поро-ждает кривую Е. отличную от рассмотренной выше. Распечатайтекривую Е. как заданную вашей функцией Ь и уравнением (10.5). по-иобраR масштабироваште так, чтобы она точно вписывалась в ква-лрат рисунка.

(viii) Пусть функция h удовлетворяет уравнению (10.6), и пусть Еявляется огибающей, как и прежде параметризованной уравнения-ми (10.5). Покажите, что

x(t + тг) = x(t) - k cost. y(t + 7г) = y(t) - A-sin f.

Вынедите in этого, что прямая, соединяющая точки огибающей Е,соответствующие t и t + тг, весчда перпендикулярна прямым l(t) иl[t + 7r) (см. рис. 10.0).

Завершение заданной «полукривой»Теперь начнем с кривой, которая имеет параллельные касательныет. конечных точках и нигде больше. В качестве примера возьмемголуэллипс (см. рис. 10.7). Здесь расстояние между двумя парал-.г.ельными касательными равно 2. и мы построим кривую постоян-

Page 145: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

144 Глава 10. Графики: кривые и огибающие

у'

(a cos r, sin t)

Рис, 10.7. Кривая постоянной ширины, построенная на основе полови-ны эллипса.

ной ширины 2. Полуэллипс параметризуется как

х — «cost, у — sin г, — < t < -—.

А теперь для каждой касательной к полуэллипсу, скажем, в точке(acosf, sini), возьмем прямую m(t), параллельную этой касатель-ной, на расстоянии 2 от нее (см. рис. 10.7).

(ix) Покажите, что прямая m(t) описывается уравнением

х cos t + уа sini = a — 2у/п'2 sin2 t + cos21. (10.7)

(x) Уравнение (10.7) имеет вид, несколько отличный от уравнения(10.3) из-за присутствия а в коэффициенте при у. Однако методнахождения точек огибающей Е линий m(t) остается тем же, что ипрежде. Обозначив через r(t) правую часть уравнения (10.7)г пока-жите, что точки огибающей суть

x(t) =r(t)cost-r'(t)smt) y(t) = -(r(t)smt + r'(t)co3t). (10.8)a

Почему огибающая Е вместе с полуэллипсом образуют кривую по-стоянной ширины 2?(хх) Измените ваш М-файл constwl.m Измените ваш М-файл Е.заданную уравнением (10.8) для тг/2 <t< 37г/2, а также нарисуйтеисходный эллипс для той же области значений t. Полученный файлназовите constw3.m.

Page 146: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глава 10. Графики: кривые и огибающие 145

(xii) Нарисуйте следующие три примера Е:

a = 0.75, xl = - 1 . хи = 2, yl = -1.5;

а = 1.25, т1 = -1.25, хи = 1.25, у/ = -1.25;

а = 3. х? = - 3 , xv = 1, у/ = - 2 .

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

•'хш) Взяв различные значения а (и подходящие границы для х и у)определите так точно, как сможете, область значений о для которых•тша огибающая Е не имеет выступов. Вам нужно рассмотретьлишь значения а > 0.

^xiv) В завершающей части работы используется теория огибаю-щих, чтобы найти область значений а > 0, для которых ошбающаяне имеет выступов. Записав уравнение (10.7) в виде

px + qy = г,

можно показать, что условие существования особых точек состоитв том. что (мы используем, как и прежде, символ ' для обозначениядифференцирования) уравнение

р q rр' q' T'

р" д" г"

имеет решение t между тг/2 и Зтг/2. Полагая р = cost.q = asint,покажите, что добавление верхней строки к нижней и вычислениеопределителя по нижней строке приводит это условие просто к т +г" = 0 (помните, что а ненулевое). Следовательно, покажите, чтонужное условие имеет вид v — 0, где

2(а2 - I)2 sin2 t cos2/ 2(a2 - l)(cos2 t - sin2 t)v — —2u + a-\ ;—

и и — д/(a2 sin2 t + cos2 t).

Напишите (короткий) М-файл, чтобы нарисовать график функ-ции V.t=-pi/2:0.01:3*pi/2;

10-4196

Page 147: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

146 Глава 10. Графики: кривые и огибающие

v= приведенное выше выражение;

plot(t,v)

hold on

p l o t ( [ p i / 2 , 3 * p i / 2 ] , [ 0 , 0 ] )hold offЧто делает вторая команда plot1.1

Нарисуйте набросок от руку, полученного графика, функцт: vдля трех значений а — 0.7Г>, 1.25.3 и проверьте, что в этих случаяхкривая из (xii) не имеет выступив именно тоща, когда график дляv не .может пересечь ось I.

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

Page 148: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

11

Ломаные и кривыенаискорейшего спуска

Э га [мава содержит два исследования, которой1 используют гра-(]шку: исследование А посвящено спирографам и ломаным, и В- -задаче определения формы проволоки, которая обеспечивает иаи-.леньшее. время спуска бусинки, соскальзывающей по ней.

А. Спирографы и ломаные

Цель работыЗдесь мы хотим нарисовать зигзагообразную линию, определеннуюпростым правилом. Нас; интересует, сколько «зигзагов» должна, сде-лать двухзвенная ломаная, прежде чем она замкнется, н рассчи-тать, каких размеров должен быть результирующий график, чтобыон аккуратно вписывался в экран. Мы также рассмотрим соотноше-ние между ломаными и некоторыми еппрографическими кривыми'эпициклоидами). Основная идея данной работы взята из книги [1].

Используемые математические понятияВекторы на плоскости, линейные уравнения и 2 х 2-магрицы. пра-зильные многоугольники. НОД, тригонометрические формулы иэллипсы • - все это есть в данной работе.

Используемые возможности MATLAB'aРабота связана с выводом па график последовательности отрезков.Вам потребуется вносить изменения и заданную программ)', что-бы заставить ее делать большую часть работы автоматически. Приэтом нужно будет вычислять НОД и подгонять размеры экрана подломаную.

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

ю*

Page 149: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

148 Глава 11. Ломаные и кривые, наискорейшего спуска

(0,0)

Рис. 11.1. Основная ломаная, определяемая длипа.мп 100 и / и укгга.миBi.$2- В правом рисунке р\ и pi суть врашпши на (?] ir di соответственно.

некоторыми эпициклоидами, полученными качением одной окруж-иости по другой и вычерчиванием следа жестко зафиксированнойпа, катящейся окружности точки. (Сравните с исследованием А изгл. 10.)

Основная идея иллюстрируется па рис. 11.1. Прямолинейныйгоризонтальный отрезок направлен вправо от начала координат иимеет длину 100. Из его конца исходит другой горизонтальный от-резок длины I. Если / < 0, то отрезок направлен влево, в противномслучае —вправо, так что он оканчивается в точке (100 + /. 0). В этомместе мы говорим, что один ишг завершен.

Итак, построение ломаной началось. Нам даны два угла. Oi^Oo(обычно они будут измеряться целым числом градусов). Проведемотрезок прямой длины 100 из точки (100 + I, 0) под углом 9\ к оси х(так что этот угол измеряется против часовой стрелки от этой оси).Отрезок заканчивается в точке (100 + / + 100cos#i, 100sin(?i). Изэтой точки проведем отрезок длины I под углом 02 с горизонталью,который оканчивается в точке

(lOO + J + lOOcosfl! + J cos 02 :100 sin01 +/sin0 2 ) .

В этом месте завершены два иш?а.Длины добавляемых отрезков равны попеременно то 100. то I, a

углы между добавляемыми отрезками и горизонталью возрастав:)'!соответственно на в± и в-2 на каждом шаге. Так. па третьем шагедобавляются два отрезка под углом 2#i и 2#2 к горизонтали, начетвертом —два отрезка под углом 30j и 3#2 к горизонтали и т.д.

Page 150: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глава 11, JIoMRiibie п кривые наискорейшего спуска 149

В связи с этими построениями возникают следующие математи-ческие задачи:

• Можно ли найти разумную «законченную» формулу для точки,достигаемой за к шагов? («Законченность» означает здесь, чтоформула должна быть явной, без каких-либо многоточий.)

• Является ли ломаная замкнутой кривой и, если это так. сколькошагов для этого нужно?

• Как велика получающаяся фигура (нам нужно знать это, чтобыне было частей, выходящих за границы экрана 1 ').

Имеются и другие математические задачи, которых мы коснемсяпозже: например, можно определить «спирографическую» кривуюпо точкам, проходимым па 1, 2. 3 . . . . .к шагах, которая оказываетсяншциклоилой. Эта эпициклоида и некотором смысле аппроксими-рует нашу ломаную, а в некоторых примерах эпициклоида являетсялростоП кривой, подобной эллипсу.

М-файл zzl.m рисует ломаную, по ему нужно .много помогать,оказывая число выполняемых шагов и размер графического окна,х/ < х < xu,yl < у < уи). В надлежащее время вы измените егогак. что число шагов, необходимых для замыкания кривой, будетвычисляться заранее, а размер окна будет устанавливаться автома-тически. К тому же zzl .m делает для вас окно квадратным, так что.си — xl ~ уи — yl. На самом деле уи полагается равным yl + хи — xl.

Ц;\я начала выполните zzi.m с входными данными I — 40, 0\ =15. 0-2 = 9, число шагов равно 40, xl — —320. хи = 460; yl = —15.Попробуйте также I — 50. д\ — 175. 02 = 185. число шагов равно 72.г/ гг. 0. хи = 150. yl = -74.

Векторная формула для точки, достигаемой за к шаговДля единообразия обозначений заменим в дальнейшем 100 на h и Iна /2. Пусть vi,V2 будут векторами-строками длины 1\Л-2 соответ-ственно, и пусть р\.р2 означают вращения против часовой стрелкисоответственно на #i,#2- 1'ак, например, если v есть вектор (а, 6),то воздействие р\ на v превратит его в вектор

os#i -sin61] \ ( а

iin вл cos в-i \ b

Можно обозначить через р\ вращение па угол кв\\ матрица этогопреобразования получается заменой 0} на кв\. Для р2 заменяем 6\

11 График всегда вписывается ii р^чмерът экрана автоматически, а размеры ло-маной окажутся нужными лишь для установления ее. связи с эпициклоидой. —Прим. перев.

Page 151: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

150 Глава 11. Ломаные и крииые наискорейшего спуска

Рис. 11.2. Часть «правильного многоугольника» <; центральным угломв\ И центром С] .

на #2- Используя эти обозначения, можно записать положение точкипосле к шагов ломаной как (см. правую часть рис. 11.1):

V, + Vo + р-2\'-2 -Pi

+ (v2 +/?2v2 +/J2V2 + • . .p5~lvL>). (11.2)

Два выражения в скобках в (П.2) могут быть переписаны в бо-лее компактной форме. В действительности векторы в первых скоб-ках являются просто векторами вдоль сторон 'правильного много-угольника со стороной, равной длине 1\ вектора. V], как показанона рис. 11.2. Точка ci есть центр многоугольника, и расстояния отCi до разных вершин (начиная с О) равны между собой. Объясни-те обозначения возле углов и сторон .многоугольника на рисунке иследующие, два уравнения:

vi = ci - pici. (11.3)

Vi + /)ivl + p j v i + . . . + p f ~ 4 i = cj - p f c i . (11,1)

Поэтому ломаная достигает за к шагов (согласно (11.2), (11.4) и

Page 152: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глава 11. Ломаные и кривые, наискорейшего спуска 151

(оответствующих соотношений для vo) точки

Cl - р\с\ +С-2 - Р2С2- (11-5)

для явного представления которой остается лишь найти ci и с^- Этолегко сделать с помошью (П.З) и его аналога, для у2, но сначаламы найдем необходимое для замыкания ломаной число шагов.

Число шагов, необходимых для замыкания

Конечно, не очевидно, что ломаная когда-нибудь замкнется. Но еслилы будем использовать простые углы (например, измеряемые це-лым числом градусов), то она замкнется, и мы сможем вычислитьчисло шагов, необходимых для этого.

В дальнейшем .мы будем предполагать, что величины в\. 9-2 рав-

ш целому числу градусов.

Из (VI.5) следует, что ломаная определенно будея замкнутой,если одновременно ci = р\с\ и с2 = pk>c2- (Но понятно, что онаможет замкнуться и раньше, чем оба эгп условия выполнятся. Выможете объяснить такую возможность? Но здесь мы не будем боль-ше говорить об этом.) Итак, если ненулевой вектор ci возвращается

< первоначальному положению после к вращений />, на 0j градусов.

го эю означает, что кв± красно 360°. Объясните, почему это то же,

IT о и

360* = кратное

Гаким образом, ломаная будет -замкнута, если к кратно одновре-

менно

3G0 360

НОД(ЗСО,01)

Объясните, почему это эквивалентно высказыванию, что ломанаяопределенно будет замкнута, когда к — s, где

_ 3605 Н О Д ( 3 6 0 ^ ^ ) ' •

(Таким образом, вам надо показать, что s есть общее кратное двухчисел, данных выше. В действительности достаточно, чтобы этобыло наименьшее общее кратное. )

Воспользуйтесь (11.6). чтобы вычислить «число шагов» (т.е. чис-ло шагов для замыкания) в zzl.m, применяя имеющийся в вашемраспоряжении М-файл gcdiv.m для вычисления НОД. Назовите по-лученный М-файл zz2.m. Проверьте на нескольких примерах, что

Page 153: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

152 Глава 11. Ломаные и кривые наискорейшего спуска

ломаная замыкается. Выпишите входные данные М-файла. исполь-зованные вами, и вычислите число шагов, необходимых для замы-кания .

Размер ломанойМожно заранее рассчитать размер ломаной, чтобы соответствую-щим образом задать масштабирование в графическом окне. В обо-значениях выражения (11.5) возьмем с — ci + с> в центре экрана,т.е. в точке (^(xl + xu), ~(yl + уи)). так что нам надо найти с идругие компоненты выражения (11.5).

Нахождение «центра» сПокажите, что из (11.3), формулы для матрицы вращения pi из(11.1), и вида вектора V] = (h,0)T (это вектор-столбец) следует,что

-1

C l = I " ; - f l i 1 -cos0i

sin -0] , cos -i2 ' 2

Подсказка: Вам нужно воспользоваться «формулами с половинны-ми углами»

Л 1 11 - cos 0i = 2 sin -0i, sin 91 — 2 sin -0i cos -B\.

Конечно, аналогичная формула верна и для С2 с заменой в ин-дексах 1 на 2.

А теперь воспользуйтесь матрицей вращения р\. выраженнойчерез &0J., а именно

cos kOi — sin k9\

аналогичной матрицей для р\ и выражением (11.5), чтобы показать,что конец ломаной после к шагов приходит в точку с координатами

(На этот раз вам нужны хорошо известные формулы для sin (а + Ь)и cos(o-f-b).) Конечно, можно записать с = ci +С2 в явном виде, но

Page 154: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глава 11. Ломаные и кривые наискорейшего спуска 153

для большинства целей лучше воспользоваться выражением (11.7),которое дает положение точки относительно «центра» с.

Оценка размера ломанойНам нужно узнать, насколько точка (11.7) может удалиться от цент-ра с. Располагая с в центре экрана, мы можем тогда принять меры,чтобы вся ломаная уместилась на экране. Покажите, что вектор,полученный удалением из выражения (11.7) первого члена с, имеетдлину самое большее

d= — ^ - г + - Л т Г • (П.8)2sin 7>9\ 2sin £02

Запишите этот вектор с в виде (а, Ь). Теперь, расположив с в цент-ре экрана, можно придать области отображения графика формуквадрата со стороной 2d. Это равносильно тому, что

xl = a ~ d, xu = a + d} yl — b — d, yu — b + d.

Вставьте это в zz2.ra и запишите как zz3.m—вариант 3 zigzag-программы, которая будет автоматически масштабировать график,чтобы он точно вписывался в экран. Проверьте на нескольких при-мерах, задавая параметры кривых, которые вы проверяете, на-сколько хорошо они вписываются. Вспомните, что первоначальноезначение h = 100.

СпирографПредметом нашего рассмотрения здесь будет «спирографическая»кривая, проходящая через все положения, которые ломаная дости-гает за к шагов для к — 1,2,3,... . На самом деле точное пред-ставление этой кривой дается выражением (11.7), за исключениемлишь того, что теперь к принимает не только целочисленные зна-чения 1,2,... ,s, где s —число шагов (определяемое из (11.6)), аЕсе вещественные значения от 0 до s. Так, разделив интервал [0,s],скажем, на 1000 частей, мы получим массив значений к:

п-1:1000;k=s*n/1000;

Таким образом, к проходит 1000 шагов от s/ЮОО до s. Нарисуйтебелым цветом график кривой, заданной выражением (11.7), послетого как нарисуете ломаную, вызвав подготовленный вами М-файлzz4.m. Приведите пример. На рис. 11.3 показан случай /i — 100,12 — 40, 0i = 45, 02 = 9. Может ли спирограф замкнуться раньшеломаной?

Page 155: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

154 Глава 11. Ломаные и кривые няискорейшего спуска

-300 -200 —ЮС 100 200 300 400

Рис. 11.3. Ломаная (с h = 100, l2 = 40, 0, = 45, В2 = 9; см. рис. 11.1)и связанный с ней спирограф, который проходит через концы всех сег-ментов длины 1-2-

Частный случай 9\ = —#2Покажите, что для 9\ = —9ч — в члены выражения (11.7), оставши-еся после отбрасывания начального с, примут вид

1

2 sin(h +/2)sin ( k- - -h +I2)cos{k- -

Записав это в виде (А'(АО, У (к)), где к, как выше, есть теперь веще-ственное число между 1 и я, покажите, что (A", Y) описывает эллипсс горизонтальной и вертикальной осями длины

sin ±1

соответственно. (Заметьте, что центр этого эллипса находится в с,а не в начале координат, поскольку в (11.7) мы с опустили.) Про-верьте это для некоторого значения в, нарисовав вместе с ломанойи спирограф. Как вы построите эллипс, у которого горизонтальнаяось короче вертикальной? Когда э.члипс становится окружностью?

Спирографы с выступамиВид выражения (11.7) показывает, что спирографическая кривая вдействительности является эпициклоидой (сравните с гл. 10, иссле-дование А), образованной следом точки Р, жестко закрепленнойвнутри окружности, катящейся по другой окружности. На самомделе можно показать, что неподвижная окружность имеет радиус

Page 156: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глава 11. Ломаные и кривые наискорейшего спуска 155

Рис, 11.4. Образование эпициклоиды (спирографа) качением однойокружности по внешней стороне другой окружности.

а, катящаяся имеет радиус Ь, а точка Р находится на расстоянии dот центра катящейся окружности (см. рис. 11.4 и обратите внима-ние на то, что смысл а, Ь и d отличается от того, что был прежде вэтой работе), где

а = 202 sin Ub = d =

2 sin i 02

(Вам не нужно проверять это.) Особый интерес представляет слу-чай b = d, означающий, что точка Р находится на периферии ка-тящейся окружности. Это всегда порождает острые выступы наспирографе. Покажите, что это равносильно тому, что

/i0i sin |02

02 sin 10i

Переделайте zz4.m в zz5 .m, где это значение автоматически присва-ивалось бы I2, как только заданы 0j.,02 (вспомните, что h = 100).

Рассмотрите случаи спирографа с острыми выступами. Напри-мер, чем определяется число выступов?

Page 157: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

156 Глава 11. Ломаные и кривые наискорейшего спуска

В. Кривые наискорейшего спуска

Цель работыМы рассмотрим несколько кандидатов на роль «кривой наискорей-шего спуска»: придав гладкой проволоке форму такой кривой, мыхотим минимизировать время, необходимое бусинке для соскаль-зывания вниз по проволоке. Как известно, «кривая наискорейше-го спуска» имеет форму циклоиды {см., например, [17]), но здесьмы применим методы численного интегрирования, чтобы сравнить«скорости» для различных простых кривых, таких, как параболыи ломаные линии. Дополнительную информацию на эту тему вынайдете в [9].

Используемые математические понятияЭта работа о минимизации: находится наименьшее время спуска.Оно выражается через интегралы. Иногда используется и диффе-ренцирование, хотя большей частью минимизация выполняется чи-сленно. При вычислении пределов используется правило Лопиталя.В качестве примеров используются различные кривые, такие, какпараболы и циклоиды.

Используемые возможности MATLAB'aЧисленное интегрирование выполняется программой quad8, для ми-нимизации функции двух переменных используется f mins, а для ре-шения системы уравнений привлекается fsolve. В данныхМ-файлах используется несколько глобальных переменных.

Введение и формулы для ссылок (случай без трения)Это работа о бусинке, соскальзывающей вниз по гладкой проволоке,расположенной в вертикальной плоскости между двумя точками,которые не лежат на одной вертикали. Мы хотим найти затрачен-ное на путь время и сравнить времена для кривых различных форм.Имеется известный результат, датируемый семнадцатым столетием,который гласит, что кратчайшее время спуска достигается на кри-вой, называемой «циклоидой». Мы встретимся с циклоидами позд-нее. Доказательство, что эта линия является «кривой кратчайшеговремени спуска» или «брахистохроной», здесь не приводится: ононе сложное, но использует начальные сведения из так называемо-го вариационного исчисления. См., например, [17]. Доказательствопредполагает, что проволока гладкая: силы трения не действуют.Наличие сил трения приводит к несколько отличному результату,и в конце работы мы слегка коснемся этого случая.

Page 158: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глава 11. Ломаные и кривые наискорейшего спуска. 157

Рис. 11.5. Кривая, соединяющая точки (0,2) и (4,0).

Рассмотрим кривую, соединяющую точки (0,с) и (d,0) в плос-кости, как показано на рис. 11.5, где с = 2, d ~ 4. Бусинка поддействием силы тяжести, но без трения и сопротивления воздухасоскальзывает вниз по этой кривой, начиная из состояния покоя вточке (0, с). Согласно закону сохранения энергии отсюда следует,что кинетическая энергия в любой момент времени равна потен-циальной энергии, истраченной на этот момент, так что если v —скорость в момент времени t, а у — координата у на этот моментвремени, то

-mv2 =mg(c-y), i.e. v = \/2д(с-у), (11.9)

где ^ — ускорение силы тяжести, а т — масса бусинки. Теперь v =ds/dt, где s — длина дуги кривой, так что время t может быть най-дено интегрированием. Конечно, значение д будет зависеть от вы-бора единиц измерения. Чтобы сделать время спуска подходящейвеличиной (около 10), значение д, используемое в М-файлах, заданоравным 0.1.

Имеются различные виды окончательных формул для общеговремени спуска из (0, с) в (d, 0) в зависимости от того, интегрируемли мы по х или же х и у являются функциями другой перемен-ной в, как в случае циклоиды. Здесь мы выведем эти формулы, ав ходе работы вы можете предполагать их существование. Обра-

Page 159: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

158 Глава 11. Ломаные и кривые наискорейшего спуска

тите внимание, что большая часть интегрирования выполнена чи-сленно с помощью программы MATLAB'a quad.8. В конце даннойработы приведено замечание относительно численного вычисленияинтегралов.

Время перемещения из точки (0, с) е (d, 0), где предполагается,что с > 0,d > 0 их строго возрастает вдоль кривой, равно

(11.10)

где в (i) у есть функция х и ' означает djdx, в то время как в(ii) их, и у являются, функциями в, шт,рих означает djd9, a OQ и0\ —значения в е точках (0,с) и (d,0) соответственно.

Заметьте, что имеется небольшая трудность при вычисленииприведенных выше интегралов, ибо при х — 0 в (i) или в = в$ ъ (ii)мы имеем у = с, так что подынтегральное выражение становитсябесконечным. Тем не менее до тех пор, пока кривая не поднимаетсявыше линии у = с, интегралы сходятся {ведь время спуска конеч-но]).

В MATLAB'e есть программа численного интегрирования quad8,но при этом требуется, чтобы подынтегральное выражение прини-мало конечные значения в области интегрирования. Мы обойдемэту проблему простейшим образом1): воспользуемся quad8, чтобыпроинтегрировать по интервалу, который начинается сразу послех = 0 (или в — #Q), и отдельно оценим вклад оставшейся малой ча-сти исходной области интегрирования. На практике это, кажется,работает довольно хорошо.

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

Парабола наискорейшего спускаЗдесь мы рассмотрим различные параболы, соединяющие точки(0, с) и (d,0)), и найдем время перемещения по каждой из них, стем чтобы определить параболу наискорейшего спуска.

(i) Рассмотрим параболу у = ах2 + f3x + с, которая проходит че-рез точку (0,с). Возьмем а > 0 , чтобы парабола была «выпуклойвниз». Покажите, что, если т есть координата х точки минимума

*> Имеются специальные методы исключения особенностей при численном ин-тегрировании, которые не столь просты.

Page 160: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глава 11. Ломаные и кривые наискорейшего спуска 159

параболы и парабола проходит черед точку (d, 0), то

— —2am.d(2m - d)'

Заметьте, что для выполнении нашего условия а > 0 нужно, чтобыбыло т > ~d. Нас интересует лишь часть параболы между г =0 и х — с/. Если ^с/ < т < d. то бусинка движется ниже оси х,пока не поднимется в точку (d.O), а если т > d, то она все времяскатывается вниз.

(ii) Возьмите с = 2,d = 4. Сделайте наброски парабол для m —2.5.3,4 и 5. (Если хотите, можете воспользоваться М-файломparamc.m, построения графиков параметрических кривых, но бы-стрее сделать набросок от руки, зная общий вид параболы.) Уга-дайте, по какой из парабол бусинка будет соскальзывать из (0,2) в(4,0) быстрее всего.

(ш) М-файл s l ide l .m использует программу MATLAB'a quads, испециальную аппроксимацию подынтегральной функции на отрезке0 < х < 0.01 (см. выше введение и замечание в конце этой работы),чтобы вычислить интеграл (i) из (11.10) для случая параболы. Онвыводит эти два значения времени, а затем выдает общее времяспуска.

Для работы этого М-файла требуется другой файл (файл-фун-кция), вычисляющий подынтегральную функцию, который назы-вается s l idelfn.m. Внимательно просмотрите эти М-фаЙлы, таккак вам придется изменять их потом для других кривых. В част-ности, разберитесь (хоть это и утомительно), зачем в этих двухМ-файл ах нужны глобальные переменные. Используются и функ-ция у, и ее производная, которая в обоих М-файлах обозначаетсяпосредством yl.

Сохраняя с — 2 и d = 4, найдите время спуска в случае т —2.5,3,4 и 5.

Теперь измените М-файл (и назовите его s l i d e 2 .m) так, чтобы тпринимало значения, скажем, от ^d+0.1 до d с шагом 0.1, и найдитевремя спуска для каждого из них. занося его в вектор r e s u l t , и,наконец, нарисуйте график времени как функции от т. Вам нужносделать примерно следующее:

m=d/2+.l:.l:d;

result=2eros(length(m),1);

for i=l:length(m)

Page 161: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

160 Глава 11. Ломаные и кривые наискорейшего спуска

result(i)=time;

end '/, цикл для i=l: length (m)

plot Cm,result)

Обратите внимание, что оператор global в s l i d e l . m долженбыть вне цикла for! Оператор s l idel fn.m изменять не надо.

Для с = 2, d — 4 распечатайте график времени спуска как функ-ции от т и по нему оцените значение т, которое дает минимальноевремя спуска. Нарисуйте от руки набросок соответствующей па-раболы. (Ваша догадка оказалась правильной?!) Для с ~ 2,d = 3воспользуйтесь тем же методом, чтобы найти «параболу наискорей-шего спуска» и сделайте набросок ее графика времени как функцииот т без вывода на печать.

Ломаные линииПредположим, что мы соединяем точки (0,с) и (d, 0) двумя отрез-ками прямой, смыкающимися в «точке перелома» (а,Ь) (см. рис.11.6). Будем искать ломаную линию наискорейшего спуска. Такимобразом, здесь cud заданы, а а и & могут изменяться.

(iv) Покажите, что уравнения этих двух отрезков суть

(Ьу=

b{x - d)

a — d[x > a).

(v) В случае спуска по прямой можно найти время точно, вычисливпервый интеграл из (11.10). Рассмотрите линию с наклоном т меж-ду точками {хо,уо) и (х\,у\)\ заметьте, что здесь т должно быть

(0,с)

(d,0)

Рис. 11.6. Ломаная линия, соединяющая точки (0,с) и (d,0), точка пе-релома которой есть (а, Ь).

Page 162: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глава 11. Ломаные и кривые наискорейшего спуска 161

отрицательным. Сделав в интеграле замену dx на dy/m, покажите,что время спуска, с высоты уо на высоту у\ есть

yi l 2 v T T ^ , v „ ,.II)

Взяв с = 2, d = 4, как и прежде (и 0 < а < d, 0 < b < с),покажите, что время спуска по ломаной линии есть

2

Вы можете воспользоваться встроенной функцией MATLAB'afmins, чтобы найти минимум функции от а и Ь, определенной выра-жением (11.12). Создайте М-файл, скажем, slide3fn.m, вычисляю-щий функцию, которую надо минимизировать. Он примет вид

function realtime=slide3fn(p)

g=.l; c=2; d=4;

а=р(1); b=p(2);realtime = ;'/, Формула реального времени спуска, как выше

Теперь вы можете вызвать fmins посредством fmins ( 's l ide3fn' ,[*,*] ' ) , где звездочки надо заменить разумным предположениемотносительно значений а и Ь, которые дают минимум. (Обратитевнимание, что ' после вектора означает транспонирование.) Сде-лайте ваше разумное предположение и найдите значения, дающиеминимум времени спуска.. (Заметьте, что если в качестве такого при-ближения вы возьмете, например, a = 1, Ь — 2.1 > с, то, как и сле-дует ожидать, fmins не даст разумного ответа.) Сделайте набросокломаной линии, для которой достигается минимальное время. Най-дите также соответствующее минимальное время. Сравните его свременем для параболы наискорейшего спуска.

(vi) Мы имеем интересный случай в (11.12), когда 6 = 0, что даетвторой член вида 0/0. Применяя правило Лопиталя к выражению

лД-у/2-Ь

ъпокажите, что при Ь = 0 время спуска есть (все еще для с = 2, d = 4,a < d)

11 -4196

Page 163: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

162 Глава 11. Ломаные и кривые наискорейшего спуска

Покажите с помощью расчетов, что значение а между 0 и 4, котороеминимизирует это выражение, равно 2/\/3-

ЦиклоидаКривую циклоиды вычерчивает след точки, жестко закрепленнойна окружности, катящейся вдоль прямой линии. В нашем случаеокружность радиуса г катится «по нижней стороне» прямой линииу — с (см. рис. 11.7). На рисунке параметром циклоиды являетсяугол 9; координаты движущейся точки Р таковы:

х = г(в - sin^), у = с- r + rcosO. (11.13)

На рис. 11.7 показана полная «дуга» циклоиды для 0 < в < 2тг.Обратите внимание, что на рисунке в = 0 дает (х, у) ~ (О, с) = (0,2).

Как и прежде, мы считаем с и d заданными. Мы хотим провестициклоиду через точку (d, 0); для этого надо, чтобы для некоторыхг > 0 и 0 < # < 2 7 г выполнялись равенства

0, (11.14)

Поскольку это —два уравнения с двумя неизвестными г и 9, ра-зумно предположить, что они имеют решение, может быть, дажеединственное. Так как эти уравнения выглядят не очень приятно,мы будем решать их с помощью одной из программ MATLAB'a

Рис. 11.7. Одна полная «дуга» циклоиды, исходящая из точки (0,2) ипорожденная качением окружности радиуса г — 1.5 по нижней сторонепрямой у = 2. Параметром циклоиды является в.

Page 164: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глава 11. Ломаные и кривые наискорейшего спуска 163

для решения уравнений, например f solve. (Если почему-либо в ва-шей версии MATLAB'a нет f solve, то вы можете воспользоватьсяуже готовыми М-файлами с именами full_new.m и gauss.ja.m изгл. 15.)

(vii) Приняв с = 2, d = 4, найдите решение системы (11.14) следую-щим образом. Создайте файл-функцию, скажем, cycfun.m, такоговида:

function q=cycfun(p)

с=2; d=4;

r=p(l); theta=p(2);q=zeros(2,1);

q( l)=r*sin(theta)-r*theta+d;

q(2)=r*cos(theta)-r+c;

Вы можете решить систему (11.14) для с = 2, d — 4 командойfsolvef'cycfun', [rO, thetaO] J)

где гО и thetaO есть первое приближение к г и 0. Не забудьте, чтосимвол ' после вектора означает его транспонирование. Задайтеразумное приближение и найдите решение. {Подсказка: Попробуйтерадиус г — 1.)

Обозначьте решение для 0 через в\ (в М-файле ему отвечаетthetal). Сделайте набросок циклоиды на интервале от в = 0 до0 = 01, т.е. между точками (0,2) и (4,0).

М-файл slide4.m использует формулу из (11.10) при вычисле-нии времени спуска, когда кривая зависит от параметра 0. Областьизменения в расположена от 0 до 9^. М-файл использует функ-цию slid.e4fn.mTeM же образом, как siidel.mиспользует функциюslidelfn.m.

Чему равно время спуска по циклоиде? Имеется известная тео-рема, впервые доказанная в семнадцатом столетии Ньютоном,Лейбницем, Бернулли и другими, что циклоида является кривой,которая обеспечивает наискорейший спуск. Насколько он быстрее(в процентах), чем у наискорейшей ломаной линии?

(viii) Обратите внимание, что (в случае отсутствия трения) цикло-ида является лучшим выбором и при с ~ 0, т.е. когда стартовая иконечная точки находятся на одной и той же горизонтали. В этомслучае бусинка приходит в (d, 0) с нулевой скоростью. Сколько вре-мени занимает движение по циклоиде, когда с = 0,d — 4? Учтите,что вам нужно взять 0i немного меньше истинного значения, что-бы избежать бесконечного времени в slide4.m. С другой стороны,

Page 165: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

164 Глава 11. Ломаные и кривые наискорейшего спуска

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

Кривая квадратного корняНайдите такое значение а, что кривая

у = ал/х + с,

проходящая через (0, с), пройдет и через (d, 0). Найдите время пере-движения между этими точками вдоль этой кривой в случае с — 2,d = 4 и сделайте набросок кривой в этом случае. Вы можете переде-лать slidel.m в slide5.m, не забывая при этом написать М-файлslide5fn.m, вычисляющий функцию у и ее производную yl подоб-но slidelfn.m. Что дает сравнение времени для данного случая современем для циклоиды?

Интегралы (читать необязательно)Используя формулу (11.9) в виде

и стандартные формулы

ds _ ds dx __ г fidzdt dx dt dt

(где у' ~ dyjdx), докажите формулу (11.10)(i).Как было указано во введении к этой главе, в программе чи-

сленного интегрирования MATLAB'a предполагается, что подын-тегральная функция принимает конечные значения в области ин-тегрирования, поэтому в данной работе программа использоваласьдля формулы (11.10) (i) в интервале 0.01 < х < d, а для неболь-шого начального интервала 0 < х < 0.01 была получена его при-ближенная оценка. Чтобы получить эту оценку, предположим, чтоу' = dy/dx является константой для 0 < х < 0.01. Тогда можнопоказать, что интеграл по этой области дается формулой (11.11). аименно

(заметьте, что у' будет отрицательной).В приближении, использованном в данной работе, значения у и

у' взяты в конечной точке х = 0.01.

Page 166: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глава 11. Ломаные и кривые наискорейшего спуска 165

Трение (необязательное добавление)Интересно было бы сделать приведенные выше соображения более«реалистичными», введя трение. Это удивительно легко сделать,так как нужно только заменить формулу (11.9) немного более слож-ной формулой

v = л / 2 д { с - у - ц х ) ,

где ц, — коэффициент (кинетического) трения. Это означает, что набусинку действуют сила тяжести, направленная вниз, направлен-ное по нормали противодействие проволоки и трение, которое естьпроизведение этого противодействия на /л. Уравнение для v следуеттогда из второго закона Ньютона (можете не проверять его, еслине хотите!).

В результате формула (11.10) (i) для времени передвижения при-мет вид

с — у — /лх

Измените s l i d e 1 ,ши slidelfn.mTaK, чтобы можно было найти па-раболу наискорейшего спуска для /j = 0.3. Назовите эти М-файлыslide6.m и slide6fn.m . Учтите, что взяв значения fi, несколькобольшие 0.5, вы можете получить «бесконечное» время передвиже-ния вдоль некоторых парабол. Почему это так?

Page 167: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

12Последовательностивещественных чисел

В этой главе рассматриваются последовательности вещественныхчисел, и начнем мы с введения специальных классов последова-тельностей. Далее приводятся три исследования по изучению ихсвойств. В первом (А) рассказывается о свойствах последователь-ностей Мёбиуса, описанных ни лес, тогда как второе (В) целикомпосвящено квадратичным последовательностям. В третьем из них(С) большей частью рассматриваются квадратичные и экспонен-циальные последовательности, но там снова упоминаются и после-довательности Мёбиуса. В каждом исследовании отметьте, какаячасть предварительного материала (§§ 12.1-12.3) в нем требуется.

12.1. Последовательности Мёбиуса

Рассмотрим последовательности вида

ахп + ЪХп-\-\ — • : , T2 = U , 1 , . S , O . . . . ,

схп + агде a, b,c.d— вещественные числа. Как только вещественное XQ за-дано, вся последовательность становится определенной и состоит извещественных чисел. Она называется последовательностью Мёбиу-са. В вашем распоряжении имеются два М-файла. Первый из нихmobius.m требует ввода чисел a, b,c,d, XQ И числа итераций, подле-жащих выполнению, т.е. указания числа членов, которые необходи-мо вычислить. Полученные значения выводятся в виде столбцовойдиаграммы.

Второй М-файл mobiusl .m выводит значения последовательныхXi в виде вектора-столбца, используя «format long» для большейинформативности.

(i) (a,b,c,d) = (1, 2,1,1),Жо = 3. Из mobius .m и mobiusl .m (после20 итераций) хорошо видно, что последовательность сходится. Пре-дел выглядит подозрительно знакомым. Выполнение вычислений с

Page 168: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

12.1. Последовательности Мёбиуса 167

другими значениями х0 дает тот же результат. Обратите внима-ние, что некоторые значения хо приводят к бесконечным значени-ям, как, например, хо = —1.5. (В этом случае х% = оо.) Однако здесьэто не является серьезной проблемой, поскольку формула говорит,что если хп — со, то хп+\ должно равняться просто а/с. В дей-ствительности М-файлы учитывают это и правильно продолжаютвычисления после появления бесконечных значений. (На практикеэто чаще всего очень большие значения, положительные или отри-цательные.)

М-файл mobius.m воспроизведен в конце этого раздела, чтобыпоказать вам, как преодолевается проблема «бесконечности».

(ii) (a,b,c,d) — (1,1, —2,1),а;о = 3. Выполнение 500 итераций спомощью mobius.m не выявляет наличие предела. Выполнение 20итераций с помощью raobiusl.mопределенно показывает, что числаскачут очень сильно. Такая последовательность называется «сильнорасходящейся», «осциллирующей» или «хаотичной».

(ш) (о,6,с,d) — (1,1, —1,1),жо = 3. Это дает повторяющийся циклиз четырех значений 3, —2, — ~, | , наблюдаемый с помощью любогоиз двух М-файлов. Такая последовательность называется периоди-ческой с периодом четыре.

Ясно, что здесь возможны различные типы поведения. Еслихп -4 I, то и а;„4-1 ~> ^ т а к ч т 0 Д л я двух последних примеров будемиметь соответственно

_ l + l 2 _

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

Будучи примененным к первому примеру, приведенный здесьметод показывает, что если та последовательность имеет предел.то этот предел должен равняться ±у2- He так просто, но все-таки

Page 169: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

168 Глава 12. Последовательности вещественных чисел

возможно доказать, что предел существует. Использование «пау-тинообразной диаграммы», с которой мы скоро встретимся, делаетэто очень правдоподобным, и фактически на этом можно постро-ить доказательство. Несколько необычно то, что I = — у/2 никогдане станет пределом, пока вы не начнете с XQ = —у/2.

Далее здесь приведен М-файл mobius.m. Заметим только, чтохп может равняться '±оо'; это происходит, когда хп~\ = —die. Нопри этом все еще возможно вычислить хп+\, а именно xn+i = а/с.В действительности «бесконечность» здесь просто означает оченьбольшое число, которое в MATLAB'e обозначается как Inf.

'/, М"~файл строит график последовательности Мёбиуса в виде7, столбцовой диаграммы.7с Если х - текущий ее член, то следующий член7(равен (ax+b)/(cx+d) .7, Константы a,b,c,d вводятся пользователем.

7. Надо будет также ввести число итераций

У, и начальное значение хО.

a=inputС'Введите а ' ) ;

b=inputС'Введите b ' ) ;

c=inputС'Введите с ' ) ;

d=input С'Введите d О;

x O = i n p u t ( ' В в е д и т е х О ' ) ;

n = i n p u t С ' В в е д и т е ч и с л о и т е р а ц и й ' ) ;

х= [хО] ;

for j=l:n

if x(j)==Inf j x(j)==-Infx(j+l)=a/c;elsex(j+l)=(a*x(j)+b)/(c*x(j)+d);end

end;bar(x)

Page 170: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

12.2. Паутинообразные диаграммы 169

12.2. Паутинообразные диаграммы

Это схематический способ отслеживания последовательностей помере выполнения итераций. Для заданной функции у — /{ж), на-чиная с хо, последовательно вычислим xi = /(XQ), £2 = /(a-'i) ит.д. Начнем с графика у = f(x), добавим к нему прямую у = х идалее сделаем следующее. Из точки (а'о,0) на оси х проведем вер-тикальную прямую до пересечения с графиком функции в точке(xo,xi), затем отсюда— горизонтальную прямую до пересечения су = х в точке (xi,xi). Далее процесс повторяется: от точки (x\,xi)проводится вертикальная прямая до пересечения с графиком в точ-ке (х2,жг), затем отсюда — горизонтальная линия до пересечения су = х в точке (х2,а;г) и т.д. Таким образом можно проследить заповедением последовательности.

На рис. 12.1 показаны два примера паутинообразных диаграмм:один представляет собой последовательность Мёбиуса, а другой —

квадратичную последовательность (такие последовательности об-суждаются в работе В ниже). Возможно, из второго примера легчепонять, почему используется название «паутина»!

Паутины последовательностей МёбиусаМ-файл соЪт.ш строит паутинообразные диаграммы для последо-вательностей Мёбиуса, используя функцию f(x) — (ax + b)/(cx + d).Требуется ввести a,b,c,d,xo и верхние и нижние границы измене-ния х и у на диаграмме. Итерации производятся 30 раз или пока неубедитесь, что есть сходимость. В заключение последовательностьзначений выводится на экран.

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

1. В примере (i) нижние границы изменения х и у равны —3, а верх-ние равны 3, #о = 2 или —2. Если вы захотите увидеть работуфайла крупным планом, то положите, например, 1.3 < х < 1.5и то же самое для у.

2. В примере (ii) нижние границы изменения х я у равны —10, аверхние равны 10, XQ ~ 2.

3. В примере (iii) нижние границы изменения хиу равны —5, аверхние равны 5, хо — 3.

В каждом случае достаточно ясно, что происходит.Точки, где график функции / пересекается с прямой у = х,

Page 171: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

170 Глава 12. Последовательности вещественных чисел

0.9

0.85

0.8

0.7Ё

0.7

0.65

0.6

0.55

0.5

0.45

0.4

-

/

х \2' 2

х-\ '•

0.4 0.45 0.S 0.55 0.6 0.65 0.7 0.75

Рис. 12.1. Паутинообразные диаграммы: верхняя соответствует после-довательности Мёбиуса, а нижняя — квадратичной последовательности.

называются неподвиэюпыми точками функции у, т.е. если поло-жить у = f{x), то они удовлетворяют условию f(x) =• х. Именноэти точки являются предельными для построенной выше последо-вательности.

Page 172: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

12.3. Функции Мёбиуса и степени матриц 171

12.3. Функции Мёбиуса и степени матриц

Пусть

а Ь \ ах7

с d у ~"~ cxn+dОчевидно, имеется тесная связь между матрицей А и последова-тельностью Мёбиуса. Приведем один из многих способов выраже-ния этой связи.

Теорема 1. (i) Имеется вещественное число а (зависящее от п)такое, что

= a I Xn+1

1 } \ 1

Другими словами,

. ( Хп \ ( Ш1 A Wiесли А Л = . то хп+-\ — —.

lii) Для любого целого к > 1 существует вещественное число 0(зависящее от к) такое, что

Другими словами,

если Ак

Л = . то хк - — -

1 2А = ( 1 1 ) , хо = 3.

П р и м е р 1Пусть

Тогда для v — (3,1) т получим ,4v = (5, 4 ) т , и а в утверждении (i)

теоремы 1 равно 4, a xi = |. Положив к = 4 в {ii); имеем AAv —

(75,53) т и хА — Ц = 1.4151; значение (5 есть 53.

П р и м е р 2Если вы наберете

format longA=[l 2; 1 1 ] ;

Page 173: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

172 Глава 12. Последовательности вещественных чисел

v=[2 1 ] ' ;w=A"20*v;

format short eто получите ответ 1.41421356237310, что совпадает с тем, когда вынаберете s q r t ( 2 ) . Согласно (и) теоремы 1, это число есть х2о, еслихо = 2.

Теорема 1 доказывается непосредственно: для доказательства (i)надо выполнить умножения с обеих сторон и положить а — схп +d.Теперь (ii) доказывается индукцией по к. Случай к — 1 есть просто(i) с п — 0. Полагая (ii) верным при к, будем иметь

В первом равенстве использовано индуктивное предположение, вовтором использован тот факт, что /3 есть просто число, а в третьемиспользовано (i) с заменой п на к. Это завершает доказательство(ii) по индукции. •

Если Ак — скалярная матрица, т. е. матрица вида XI, где I —единичная 2 х 2-матрица, то

лк { х0 \ __ . ( х0

{ 1 ) - х {так что Хк — хо согласно утверждению (ii) теоремы 1, т.е. значе-ния последовательности Мёбиуса снова возвращаются к XQ. Такимобразом, периодические последовательности могут быть выявленывычислением степеней соответствующих матриц.

Мы можем также двигаться «назад»: например, найдем началь-ное значение XQ, которое для последовательности

_ Zxn + 5

хп + 2

дает XQ = —2. Заметим, что если хо выбрано таким образом, тоследующий член х7 будет «бесконечным», поскольку тогда знаме-натель XQ + 2 обратится в нуль. Мы хотим, чтобы

для некоторого /3. Это дает

( \ ( " 2 2 6 5 8( _ J- ( \ (

в V 1 / V 1 I \ 12649

Page 174: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

12.3. Функции Мёбиуса и степени матриц 173

причем вы можете проверить последнее равенство, набравА" (-6)* [-2 1 ] ' после предварительного ввода матрицы

А=(3 5

[ l 2(Конечно, вы догадываетесь, что -22658 в действительности естьнечто вроде -22657.999!) Таким образом, х 0 = -22658/12649 =— 1.7913. Если вы воспользуетесь mobiusl.m, чтобы найти xi дляэтой последовательности (введя предварительно XQ В виде приве-денной выше дроби), то обнаружите, что получилось очень большоечисло. Тем не менее для х$ будет выдано правильное значение 3.

Имеется весьма примечательный результат о направлении век-тора w — Akv при больших значениях к. Возвращаясь к матрицеЛ из приведенного выше примера 2, наберите

[X D]=eig(A)

Вы обнаружите, что один из собственных векторов А параллеленвектору w, полученному в примере 2. Например, вы можете ввести

x l=X( : , l )y=xl./w

чтобы выделить первый собственный вектор А, а затем сравнитьего с w по направлению. Обе компоненты вектора у должны бытьприблизительно одинаковыми. Заметьте, что использованный намисобственный вектор соответствует наибольшему собственному зна-чению матрицы .4.

Что касается матриц, мы можем легко перейти к случаю 3 x 3 ,но заметьте, что на языке последовательностей очевидных аналогийэтому нет. Рассмотрите

А=[1 2 3;-1 2 -3;1 -2 -3]

и (почти) любой начальный вектор v. Эта матрица имеет один веще-ственный собственный вектор (—0.5433,0.2849,0.7897), что вы мо-жете обнаружить, набрав [X,D] = eig(A). Он имеет то же направ-ление, что и Anv для больших значений п.

Замечание о двух М-файлахМожет так случиться, что степени матрицы А имеют элементы,которые действительно становятся очень большими, и вычислениевектора Anv для больших п может быть рискованным. В вашемраспоряжении имеются два М-файла, которые преодолевают этупроблему в том случае, когда нам надо знать лишь направлениевектора Anv. Они вычисляют Av, A2v, .4 3v,..., но после каждого

Page 175: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

174 Глава 12. Последовательности вещественных чисел

шага нужно заново провести масштабирование, чтобы ответ былединичным вектором. Они называются matit2.m для 2 х 2-матрици matit3.m для 3 х 3-матриц. В обоих случаях требуется предвари-тельный ввод матрицы v. Рассмотрите их, если вы любознательны.

Следующая теорема, предназначена для тех, кто интересуетсятеорией.

Теорема 2. Если векторы Anv имеют предельное направление,то этот предел должен быть собственным вектором матрицы А.

Доказательство. Если по предположению A"v/||>lnv|| —> w длянекоторого w ф 0 при п ~> оо, то А(Л 7 1У/| |,4ПУ||) —>• Aw, так что

j 4w

\\An+lv\\ \\Anv\\Но здесь при п —> оо первая дробь стремится к w, а вторая к не-которому вещественному числу а. так что в пределе получаетсяравенство Aw = aw, означающее, что w есть собственный векторматрицы А. Конечно, это не доказывает, что Anv имеет предельноенаправление, совпадающее с направлением одного из собственныхвекторов матрицы, а только то, что собственные векторы являютсяединственно возможными предельными направлениями. •

А. Исследование последовательностей Мёбиуса

Цель работыМы исследуем последовательности Мёбиуса и теоретически, и экс-периментально. Но сначала вам нужно вспомнить §§ 12.1-12.3.

Используемые математические понятияК их числу относятся матрицы, последовательности, математиче-ская индукция и пределы последовательностей, а также основыдифференциального исчисления в теоретической части работы. Носначала вам нужно прочесть §§ 12.1-12.3 .

Используемые возможности МАТХАВ'аПотребуются только предварительно написанные М-файлы, ис-пользуемые здесь для итеративного вычисления, нахождения сте-пеней матриц и построения паутинообразных диаграмм.

Функции Мёбиуса и матрицы(i) Для значений a, b,c,d, приведенных в табл. 12.1, выясните, ис-пользуя М-файлы mobius.m и/или mobiusl.m , сходятся или рас-

Page 176: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

12.3. Функции Мёбиуса и степени матриц 175

Таблица 12.1. Значениядля построения последова-тельности Мёбиуса

a

23311

Уз

ь1223

-у/3-1

с

141

-2

Уз1

d

-23211

ходятся соответствующие последовательности Мёбиуса, а в послед-нем случае выясните, возникает ли «хаотичная расходимость» илиже периодичность (периодическое повторение значений). Выпиши-те ваши результаты, заданные вами исходные значения хо и числосделанных итераций.

Воспользуйтесь также М-файлом cobm.m для вычерчивания па-утинообразных диаграмм. Для перехода к следующей итерациипользуйтесь клавишей <Enter>. Сделайте грубый набросок диа-грамм на бумаге для тех случаев, когда вы установили, что после-довательность является сходящейся или периодической, указываяпри этом ваши области значений х и у вместе с начальными значе-ниями Хо.

Замечание: При задании входных параметров воспользуйтесьвыражением s q r t ( 3 ) —тогда MATLAB подставит численное зна-чение в программу.

(ii) Возьмите те же примеры, что в предыдущем упражнении, свя-зывая параметры (а, Ь, с, d) с матрицей

а Ьс d

Воспользуйтесь матричным умножением MATLAB'а, чтобы про-верить, что для периодической последовательности некоторая п-ястепень матрицы (п равно длине периода) будет скалярной матри-цей, т.е. матрицей вида

XI- (

где / — единичная 2 х 2-матрица. Выпишите значения А в каждомслучае. Проверьте также, что для (a,b,c,d) ~ (1,1,-1,1), четвер-

Page 177: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

176 Глава 12. Последовательности вещественных чисел

тая степень матрицы является скалярной матрицей, и выпишитезначение А.

(Hi) Какова связь между последней матрицей А. для которой АА —А/, и тем, что соответствующая последовательность Мёбиуса явля-ется периодической с периодом 4 (см. § 12.3)?

(iv) Для какого примера из упражнения (i) М-файл matit2.m да-ет предельное направление последовательности степеней .4"v? От-метьте компоненты вектора v, которое вы использовали, и получен-ное предельное направление. Проверьте путем вычислений, что этособственный вектор матрицы А. Найдите оба собственных векторав этих случаях.

(v) Для (а,Ь,с,d) = (1,2,1,1), найдите обращение соответствую-щей матрицы (например, воспользуйтесь командой inv(A)). Отсю-да найдите (точно) начальное значение XQ, ДЛЯ которого х*> = оо.Есть ли возможность найти такое XQ, ЧТО X$Q — оо?

(vi) Эта часть не имеет никакого отношения к последователь-ностям Мёбиуса, но касается степеней 3 х Z-матриц. Сравнитес § 12.3. Рассмотрим популяцию жуков из трех видов: черных, крас-ных и зелёных. В момент t — 0 имеется 10 черных жуков, но нетни красных, ни зеленых. В момент t = 1, одновременно происходяттри следующих события:

(a) каждый черный жук делится на черного, двух красных и зеле-ного;(b) каждый красный жук делится на черного и двух зеленых;(c) каждый зеленый жук делится на трех красных.

То же происходит и в моменты t = 2,£ — 3 и т.д. В этой задачежуки бессмертны (это, конечно, чистая математика).

Как можно с помощью матричных итераций для больших значе-ний t определить в популяции процент черных, красных и зеленыхжуков? Влияет ли на результат исходная популяция (на моментt = 0)? Связано ли это с одним из собственных векторов матрицы?Подсказка: Рассмотрите матриц}'

Page 178: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

12.3. Функции Мёбиуса и степени матриц 177

Теория последовательностей МёбиусаЗдесь мы познакомим вас с некоторыми элементами теории этихпоследовательностей. Проиллюстрируйте их подходящими приме-рами, используя имеющиеся М-файлы.

(vii) Пусть f(x) = (ax + b)/(cx + d), где с ф О и ad — Ьс ф 0.Неподвижными точками функции / называются числа х такие,что f(x) — .т. Покажите, что если (а — d)2 + 46с > 0, то существуютдве вещественные неподвижные точки, скажем, а и 0.

(viii) Вспоминая, что £п+] — f{xn), f(a) = a, f(0) = /?, покажите,что

(^±£\ (Х

хп-вПодсказка: Сначала покажите, используя равенство о ~ (аа 4- Ь)((са + d), что

_ (ad — Ьс)(хп — а)x n + i — о — • -r-j

(cxn + aJ(cQ + a)

и выпишите такую же формулу для хп+\ — /3.Теперь выведите повторным применением формулы (12.1) для

п — \,п — 2, . . . , что

хп - a fc0 + d\n fxQ - aхп - р \са + dj \хо - /9

(ix) Покажите, что / ' (а) - (с/Э + d)/{ca + d), a /'(/3) = {са + d)j(ф + d).Подсказка: Легко проверить, что f'(x) = (ad — be)/(ex + d)2. Вспо-миная, что a и 0 являются корнями уравнения ex2 — (a — d)x — h = 0,выведите, что (са + d)(c0 + d) = ad — be.

(x) Выведите, что если j f'{a) |< 1, то хп —> а при п - я х .

(xi) Покажите, что если (a — d)2 + Abe < 0, то неподвижные точки —невещественные. Почему отсюда следует, что последовательность{хп} не имеет предела?

В. Притягивающие циклы

Цель работыЭта работа посвящена последовательностям, образованным итери-рованием квадратичной (степени 2) функции. Эти последователь-ности обычно не имеют единственного предела, а имеют «несколько

12-4196

Page 179: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

178 Глава 12. Последовательности вещественных чисел

пределов» в том смысле, что последовательные значения последо-вательности близко подходят к совокупности различных чисел. Мырассмотрим эти «притягивающие циклы» и математически, и экспе-риментально. Больше подробностей относительно использованнойздесь математики можно найти в [2]1'. Чтобы выполнить даннуюработу, не нужно читать материал о последовательностях Мёбиуса.

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

Используемые возможности MATLAB'aВ работе применяются предварительно написанные М-файлы дляанализа квадратичных последовательностей, а также численное на-хождение корней полиномов.

Мы не будем особенно углубляться в теорию притягивающих ци-клов; цель нашего исследования — это построить несколько приме-ров. Введем f(x) — Ах(1 — х) и xn+i = f{xn), n — 0,1,2,... , чтобыопределить квадратичную последовательность XQ,XI,X2-, • • • • К а ктолько А задано, эта последовательность определяется первым чле-ном XQ.

Обозначим через / р преобразование, осуществляющее р итера-ций функции/, т. е. }2{х) = f{f{x)),f'(x) = f(f{f(x))) и т.д. Тогдахр = fp(xo). Для данного значения р. мы, в частности, хотим найтизначение А, такое, что

Г (I) IЭто нам нужно для получения следующего результата: если А имееттакое значение, что выполняется (12.2), то для некоторого q, явля-ющегося делит,елем р, числа | , / г ( | ) , i = 1,... ,q — 1 образуют«притягивающий д-цикл». Это означает, что если вы начнете с XQиз интервала (0,1) и будете итерировать посредством /, то значе-ния fk{xo), k — 1,2,3,... , будут последовательно располагатьсявблизи этих q чисел.

1> Здесь следует назвать и работу: M.J. Feigenbaum. Universal behavior innonlinear systems. — Los Alamos Science, 1980, v.l, JY* 1, pp. 4-27, давшую толчокмногим последующим исследованиям по данному вопросу. Ее русский переводопубликован в УФН, 1983, т. 141, вып. 2, с. 343-374. — Прим. перев.

Page 180: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

12.3. Функции Мёбиуса и степени матриц 179

(i) Для р — 2 покажите, что /2{ж) = А2.т(1 - х)(1 — \х + Хх2), а за-тем покажите, что уравнение (12.2) принимает вид А3 - 4А2 +8 = 0.Задайте его коэффициенты как вектор v (начиная со старшего чле-на) и воспользуйтесь r o o t s ( v ) , чтобы найти корни этого полино-ма. Отбросьте отрицательный корень. Один положительный кореньравен 2; для этого корня проверьте, что действительно /(-у) = ^.Для другого корня примените cobq.m чтобы подтвердить, что. на-чиная с произвольного XQ, значения последовательности приближа-ются к двум числам. Выпишите эти числа, какими получили их изМ-файл а.

(ii) М-файл quadn.m строит график любой итерации / (для любогозаданного А) и на нем же проводит зеленым цветом прямые х — ~ иУ ~ \- Он позволит вам менять значения А без изменения других па-раметров. На экране появляется инструкция. Обратите внимание,что, после того как график нарисован, вам нужно нажать <Enter>,чтобы передать управление командному окну МАТХАВ'а. Затемвам будет предложено нажать 0, чтобы завершить работу, или 1,чтобы выбрать другое А.

Используя точку ( | , | ) , можно получить очень точное значениеА, для которого выполняется уравнение (12.2). (Уточняйте А, по-ка график / не пройдет через точку пересечения зеленых прямых.)Примените это к третьей итерации / 3 и найдите значение А, близкоек 3.83, которое удовлетворяет уравнению (12.2). Вы должны бытьспособны получить по крайней мере еще пару десятичных цифр,разумно используя М-файл. После того как вы найдете А, восполь-зуйтесь cobq.m, чтобы проверить, что для различных XQ последо-вательность приближается к «притягивающему 3-циклу», как былои в (i). Выпишите числа, входящие в этот 3-цикл. Для каждого XQ,которое вы использовали, установите, как много итераций потре-буется, чтобы последовательность приблизилась к этим числам сточностью до четырех десятичных знаков.

(iii) Для р = 6 уравнение (12.2) имеет решение вблизи 3.63. Най-дите это решение как можно точнее, используя quadn.m, и приме-ните cobq.m, чтобы найти набор из шести чисел («притягивающий6-цикл»), к которому приближается последовательность. При р —16 имеется решение, близкое к А — 3.55. Дает ли это притягива-ющий 16-цикл? Разберите подробно это (конечно, используя этиМ-файлы).

5 2"

Page 181: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

180 Глава 12. Последовательности вещественных чисел

(iv) Покажите, что (12.2) для р = 3 имеет вид

Л7 - 8А6 + 16Л5 + 16Л4 - 64Л3 + 128 = 0.

Задайте его коэффициенты как вектор v (начиная с коэффициента1 при старшем члене) и найдите корпи этого полинома с помощьюкоманды r o o t s (v). He принимайте во внимание отрицательные ве-щественные корни и комплексные корни. Один корень должен бытьравен 2; проверьте, что для этого А справедливо / ( | ) — ^. Для дру-гого корня примените cobq.m, чтобы проверить, что действительноимеется притягивающий 3-цикл, и выпишите числа, входящие в не-го (вы должны получать одни и те же числа, с какого бы .го из (0,1)вы не начали).

(v) Для р = 4 имеется решение вблизи А = 3.5. Найдите это решениес несколько большим числом десятичных цифр, используя quadn .m,и используйте его в cobq.m, чтобы найти числа из получающегосяпритягивающего 4-цикла.

(vi) Покажите, что график у = f(x) пересекает у = х, когда х = 0или х = 1 — j . Докажите, что для 0 < А < 1 график у — f(x) нахо-дится целиком ниже прямой у = х при 0 < х < 1. Объясните с помо-щью нарисованной от руки паутинообразной диаграммы, почемукажется очень правдоподобным, что для любого XQ при 0 < хо < 1полученная квадратичная последовательность сходится к 0.

Для 1 < А < 2 покажите, что при 0 < х < 1 график у — f(x)пересекает прямую у = х только один раз, а именно когда х = 1 — j .Вычислите наклон графика у = f(x) в этой точке и покажите, чтоон положительный. Снова с помощью нарисованной от руки паути-нообразной диаграммы объясните, почему это делает правдоподоб-ным сходимость полученной последовательности для 0 < XQ < 1.Чему равен предел на этот раз? Подтвердите ваше утверждение спомощью примеров, используя нужные М-файлы.

(vii) М-файл perdoub.m (от «period doubling» — «удвоение перио-дов»!) берет 100 значений А между заданными вами пределами 11и 12. Для каждого из них вычисляются числа х\,... , жюо {с XQ = | )и только члены, начиная с 75-го, изображаются на вертикальнойпрямой над значением А. Таким образом, изображение имеет осиА, ж, где 11 < А < 12 и 0 < х < 1. На рис. 12.2 показан график для1 < А < 4.

Попробуйте выполнить его для И — 0, 12 = 2. Как полученныйграфик подтверждает сказанное выше в (vi)?

Page 182: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

12.3. Функции Мёбиуса л степени матриц 181'

Рис. 12.2. Диаграмма, «удвоения периода». Для каждого значения Л нагоризонтальной оси точки, расположенные выше нее, есть значения х изполучающегося притягивающего цикла. Так, для А после 3.5 образуютсявсе более и более длинные притягивающие циклы.

Попробуйте выполнить его для Л = 2, 12 ~ 3.5. Что вы наблю-даете?

(viii) (Необязательное дополнение.) Между Л ~ 3.9 и Л — 4 имеетсяеще несколько притягивающих циклов. Найдите некоторые из них,используя этот М-файл самым выгодным для вас образом. (Приэтом нужно работать достаточно систематически.)

С. Квадратичные и экспоненциальныепоследовательности; неподвижные точки

Цель работыII эта работа посвящена последовательностям, их пределам и ихпритягивающим циклам — множествам чисел, к которым прибли-жаются члены последовательности. Мы изучим два типа последо-вательностей: квадратичные (как выше в работе В) и экспоненци-альные, например х, 2х, 2'2 ' и т. д. (Экспоненциальные последо-вательности детально обсуждаются в [2].) В частности, мы будемизучать «неподвижные точки» последовательностей и свяжем ихсо сходимостью. В данном исследовании есть кое-что и о последо-вательностях Мёбиуса (их определение см. в § 12.1). Может быть,

Page 183: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

182 Глава 12. Последовательности вещественных чисел

вы захотите заглянуть в § 12.2. где описаны «паутинообразные диа-граммы».

Используемые математические понятияОсновное математическое понятие —это понятие последовательно-сти вещественных чисел. Теоретическая часть исследования вклю-чает математический анализ и преобразования функций.

Используемые возможности MATLAB'aИспользуются предварительно написанные М-файлы. Вам потребу-ется изменить М-файл. который строит паутинообразные диаграм-мы квадратичных последовательностей так. чтобы он мог работатьи с «экспоненциальными последовательностями».

Паутины квадратичных последовательностейОбщее обсуждение паутинообразных диаграмм вы найдете в § 12.2.

М-файл cobq.m строит паутинообразную диаграмму для после-довательности

где Л —заданное вещественное число, которое мы выбираем > О,т.е. используемая нами функция есть у = f(x) = А.т(1 — х). Попро-буйте, например, взять Л = 3.9221934. xl = 0, хи — 1, yl = О, у и = 1,хО — 0.5. (Как обычно, xl обозначает нижний предел изменения ж,через хи обозначен верхний предел, a yl, уи — нижний и верхнийпределы изменения у.) Сделайте 20 итераций. Вы получите 7-циклзначений — так называемый сверхпритягивающип 7-пикл.

Квадратичные и экспоненциальные последовательности.(i) Примените М-файл cobq.m к вариантам данных, представлен-ным в табл. 12.2. После того как паутинообразная диаграмма по-строена, а значения Х{ выданы, один взгляд на них может подтвер-дить ваш вывод из вида диаграммы о типе последовательности (схо-дящаяся/ периодическая/ хаотичная). В таблице 12.2 приведенызначения входных параметров; п — число итераций.

В каждом случае установите тип поведения рассматриваемойвами последовательности; в случае сходимости укажите предел, ав случае периодической последовательности приведите длину пе-риода и значения х, образующие период. Обратите внимание, чтоздесь «сходящейся» называется последовательность, члены кото-рой приближаются к единственному предельному значению. С дру-гой стороны, «периодической» с периодом к называется последова-тельность, для которой существуют к чисел h,... Jk и значения

Page 184: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

12.3. Функции Мёбиуса и степени матриц 183

Таблица 12.2. Параметры для получения квадра-тичных последовательностей

Л

2.53.23.43.53.8

3.83

0.50.50.50.50.50.5

xl

0.50.40.40.300

XU

0.70.90.90.9

11

yi

0.50.40.40.3

00

уи

0.70.90.90.9

11

п

202040205020

последовательности приближаются последовательно к этим к чис-лам. (Если вы начнете, скажем, c i o = l\, го последовательностьи самом деле проделает цикл h,--- и обратно к 1-[. Как и в ис-следовании В, говорят, что числа l\,... ,h- образуют притягиваю-щий к-цикл.) Итак, вы смотрите на числа, образующие последо-вательность, и видите, располагаются ли они возле одного числаили же проходят в неизменном порядке возле некоторого наборачисел.

(ii) Внесите изменения в М-файл cobq.m, необходимые для построе-ния графика у — кх, где к — заданное вещественное число, и проите-рируйте эту функцию, вычерчивая, как и раньше, паутинообразнуюдиаграмму. (Назовите полученный М-файл cobexp.m.) Это сводит-ся к простой замене в М-файле cobq.m квадратичной функции нафункцию у ~ кх. Обратите внимание, что для заданного значе-ния к рассматриваемая здесь последовательность есть х. кх, к-(к*>и т.д. Она называется экспоненциальной последовательностью. Незабудьте, что поскольку в этом М-файле х — это вектор значений,то мы должны писать к. ~х

Исследуйте последовательность, начинающуюся, например, сXQ — 0, на сходимость и выясните, если она сходится, то к како-му пределу. Если это зависит от значения к, то попробуйте найтизначения к, при которых поведение последовательности меняется.

Приводим здесь некоторые значения для ввода в cobexp.m, скоторых вы могли бы начать:

fc = 0.05, z/ = -0.1, xu~l.l, i//=-0.1, yu = l.l;

к — 0.5, xl —-Q.1, хи = 1.1, у! = — 0.1, уи = 1.1;

к — 1.4, xl = 0, хи = 5, yl — 0, уи ~ 5;

к — 1.5, xl = 0 , хи ~ 10, yl = 0, уи — 10.

Page 185: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

184 Глава 12. Последовательности вещественных чисел

Как помощь при обдумывании того, что произошло между к —1.4 и к = 1.5, рассмотрите место, где прямая у = х пересекает кри-вую у = кх. Покажите, что это как раз там, где к = х1^. Набросайтеграфик кривой у = х1/*. Подсказка: Используйте хг'х = eln'3e''x ипокажите, что производная ж1/* равна хх1х{\ — 1п(х))/х2.

Чему равно наибольшее значение, принимаемое этим у? (От-ветьте на этот вопрос, используя для нахождения максимума у ме-тоды математического анализа.) Как это связано с поведением экс-поненциальной последовательности?

Неподвижные точкиНеподвижной точкой функции / называется число х, такое, чтоf(x) = х. Рассмотрим функции f(x) = (ах + b)/(cx + d), где с ф 0. и/(х) = Хх(1 — ж), где А > 0. Каковы их вещественные неподвижныеточки (если такие имеются)? Пусть а — вещественная неподвижнаяточка. Она называется

притягивающей, если | / '(а) |< 1;отталкивающей, если | f'(a) \> 1;индифферентной, если ] / ' (а) |= 1.

Общая идея состоит в том, что если хо находится вблизи притяги-вающей неподвижной точки а, то итерации хп будут притягиватьсяк а, т. е. хп —> а при п —> оо. Подобным образом, если хо находит-ся вблизи отталкивающей неподвижной точки а, то уже Xi будетнаходиться дальше от а. В случае индифферентной неподвижнойточки может случиться что угодно.

Ниже во всех примерах, кроме (vii), вы можете выбирать такоеначальное значение хо, чтобы 0 < XQ < 1.

(iii) В случае /(х) = Ах(1 — х) покажите (используя математическийанализ, а не компьютер!), что единственными значениями А > 0,дающими индифферентные неподвижные точки, являются А = 1и 3. Воспользуйтесь имеющимися М-файлами, чтобы узнать, чтопроисходит с последовательностями хп в этих случаях.

(iv) Покажите, что для /(ж) = (—Зх — 2)/(4а: + 3) обе неподвижныеточки индифферентны. Воспользуйтесь имеющимися М-файлами,чтобы исследовать поведение последовательностей в этом случае.В общем случае покажите, что для /(ж) = (ах + Ь)/(сх -4- d) обенеподвижные точки индифферентны, когда a + d~Q nad— bc= —1.

(v) Исследуйте неподвижные точки и поведение функции f(x) =

Page 186: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

12.3. Функции Мёбиуса и степени матриц 185

(vi) Найдите по одному примеру последовательности Мёбиуса(f(x) = (ax+b)/(cx+d)) и квадратичной последовательности (/(ж) =Хх(1 — х)) с притягивающими неподвижными точками и определи-те с помощью имеющихся М-файлов, действительно ли эти точ-ки являются пределами последовательностей. (В случае последова-тельности Мёбиуса, вероятно, вам легче будет догадаться, чем му-чительно искать положение притягивающей неподвижной точки.)

(vii) Исследуйте индифферентные неподвижные точки функцийf(x) = —х и f(x) = х2 + х. (В этом случае, возможно, вы захотитевзять XQ вне отрезка 0 < XQ < 1.)

Page 187: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

13Итерации Ньютона-Рафсона и фракталы

Цель работыЗдесь мы изучаем последовательности точек комплексной плоско-сти, пределами которых являются корни некоторых простых урав-нений. Последовательности порождаются с помощью комплексноговарианта хорошо известной формулы Ньютона—Рафсона. В част-ности, мы сравним случай квадратного уравнения с случаем куби-ческого уравнения (большего различия быть не может!). Детальноеобсуждение метода Ньютона—Рафсона для вещественных уравне-ний вы найдете в гл. 15. По фракталам имеется много полупопу-лярных книг, см., например, [14].

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

Используемые возможности MATLAB'aЭта работа использует возможности MATLAB'a для изображенияточек и прямых на плоскости. Здесь точки будут представлять ком-плексные числа в обычных диаграммах Аргана1'. Для вас написаныосновные М-файлы, в которые надо будет внести изменения, чтобыиспользовать их в других примерах.

13.1. Введение

Вы, наверное, встречались с методом Ньютона—Рафсона прибли-жения корней уравнения f(x) = 0. Коротко говоря, в нем задается

*J Имеется в виду обычная геометрическая интерпретация комплексных чиселх + гу точками {я:, у) в декартовых координатах. — Прим. перев.

Page 188: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

13.2. Уравнение z2 + 1 = 0 187

некоторое начальное приближение XQ К корню и по нему вычисля-ются последующие приближения х\, х%, хз , . . . . где

хк+1 = Х к ~ ^ \ , А: = 0,1,2,... . (13.1)

В данной работе мы применим этот метод к решению некоторыхкомплексных уравнений1).

13.2. Уравнение z2 + 1 = О

Как вы знаете, это уравнение имеет решения ±г. (Так как пере-менная комплексная, мы будем обозначать ее через z.) Для этогоуравнения НР-формула (13.1) принимает вид

Zk х _ fL+i = fLnl .+ 1 k 2zk 2zk

Пусть N(z) — 2̂~̂ > тогда zk+\ = N(zi?)- Выбрав начальное при-ближение для z (лучше отличное от 0), получим последовательныеприближения для корня N(z),N2(z) = N(N(z)), N3 (z) = N(N2(z))и т. д.

Обратите внимание, что в этой работе мы должны проявитьосторожность, различая итерации, т.е. повторное использованиеодной и той же функции, как это мы делали выше с N, и возве-дение в степень. Если мы хотим выписать, например, четвертуюстепень N(z), то, используя скобки и положение показателя степе-ни 4, должны записать это как (N(z))4.

Для начала немного теории. Вам нужно записать это, дополняядеталями. Мы хотим узнать, к какому корню сходятся числа Nk(z)при к -> ос (если они вообще сходятся).

(i) Определим T(z) как T(z) — |^4 (это, конечно, связано с темфактом, что корни уравнения z2 + 1 = 0 суть г и —г). Проверьтеподстановкой N(z) в Г, что T(N(z)) — (Т(г)) 2; повторное примене-ние этого показывает, что

T{N2(z)) = (T{N(z)))2 = (T(z))\

Каков будет здесь общий результат? Какой степенью T(z) будетT(Nk(z))'? (Подсказка: эта степень не равна 2к. Для начала попро-буйте найти T(N3(z)).)

i ' В литературе он обычно называется методом Ньютона. Для кратных корнейон требует модификации. — Прим. перев.

Page 189: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

188 Глава 13. Итерации Ньютона-Рафсонп и фракталы

(и) Почему \T(z)\ — 1 тогда и только тогда, когда z равноудаленоот г и —г ? {Вспомните, что \z — a\ есть расстояние между комплекс-ными числами z и а.) Пусть I,—множество точек z, обладающихэтим свойством. Что представляет собой L? Нарисуйте его на диа-грамме Аргана комплексных чисел. Из определения следует, чтоточки по одну сторону от L удовлетворяют условию fTfz)! > 1, аточки по другую сторону удовлетворяют условию |Т(г) | < 1. Какаясторона соответствует каждому из условий?

(iii) Предположим, что |Т(г)[ < 1. Почему из этого следует, что(T(z))r -*• 0 при г -> сю? (Подсказка: \(T(z))r = \T(z)\r.) Выведитеиз сказанного, что при к -> оо мы имеем T(Nk(z)) -4 0. Почемуотсюда следует, что Nk(z) -> i?

Каков соответствующий результат в случае |T(z)j > 1 ? (Под-сказка: Положите ljT(z) — U(z), так что тогда [Lr(^)| < 1; затемпримените те же аргументы (проверьте U(N(z)) = (U(z))2), прини-мая во внимание, что U~i(0) = —г.)

(iv) Теперь рассмотрим две области на плоскости:

R+ = {z:Nk(z) -¥ г при fc -^ оо}; R^-{z:Nk(z) -t -i при к -* ос}.

Нарисуйте диаграмму, изображающую эти области, линию L и кор-ни i И —г. Назовем R+ областью притяжения для корня +i, и,аналогично, R- называется областью притяжения для корня —г.

Покажите, что если z принадлежит линии L (общей границедвух областей Я+ и R-)-, T O Nk(z) остается на L для всех значенийк. (Это легко сделать, поскольку вы знаете, что представляет собойX.) Так что в этом случае итерации вообще не сходятся ни к какомукорню1 '.

13.3. Общие квадратные уравнения

(i) М-файл cnrl.m (enr означает complex Newton—Raphson — ком-плекс Ньютон—Рафсон) принимает любые два комплексных числа

1 ' Здесь следует отметить достаточно тонкую ситуацию. Точка оо являетсянеподвижной для преобразования N(z), хотя это не корень исходного уравнения/(г) = 0. На fc-й итерации 2k~i конечных точек Zi из L попадут в оо {для к — 1это г — 0, а для к > 1 это все те z, для которых Л'*~1(г) = 0), и с ростомк они образуют в L всюду плотное множество. Из-за ошибок округления этаситуация в вычислениях автоматически не реализуется, но для небольшого кприближенные значения всех Z{(k) можно при желании найти. —Прим. перев.

Page 190: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

13.3. Общие квадратные уравнения 189

р, q и выдает квадратное уравнение

z2

+ о,2 + 6 = 0, (13.2)

имеющее эти числа своими корнями. Таким образом, как хорошоизвестно, о — — р — q. b = pq. В этом случае формула Ныотона-Рафсона (13.1) -заменяет текущее приближение z на

Этот М-файл случайным образом выбирает точку z и соединяетее последовательно с комплексными числами Лг(2)> Л г 2 (г),Л г 3 (г) . . . .пока они не подойдут очень близко к одному из корней р, q (поме-ченных на графике большими крестами, красным и зеленым). Та-ким образом полученная ломаная показывает, как метод постепен-но строит приближения к корню уравнения. Чтобы выбрать другуюслучайную начальную точку, нажмите <Enter>. М-файл позволяетвыбрать десять таких начальных точек.

Попробуйте запустить М-файл и в качестве корней ввести Г и —г.От вас требуется указать границы квадратной области диаграммыАргана, выводимой на дисплей, а именно xl < х < xu,yl < у < уи,задавая последовательно х/, жи, yl (уи вычисляется автоматически).Посмотрите, какие итерации устремляются к Г, а какие к —i; этодолжно согласовываться с приведенной теорией.

Попробуйте запустить М-файл, взяв в качестве корней, напри-мер, 1 + 2Г и 3 + 4г и область 0 < х < 5 , 0 < у < 5 . Есть ли увас соображения о том, какие начальные точки приводят в 1 + 2г,а какие в 3 + 4г?

(и) М-файл cnr2.m выбирает случайным образом 500 начальныхточек и рассчитывает, что произойдет с ними после итераций поформуле Ньютона—Рафсона для такого же квадратного уравненияz2+az + b = Ос корнями р, q. На графике корни р и q помечены соот-ветственно красным и зеленым крестами. Те начальные точки, кото-рые устремляются к первому корню (р). изображаются маленькимикрасными кружками, а те, которые устремляются ко второму кор-ню (у), изображаются маленькими зелеными кружками. Выполнитете же примеры, какие были в задаче (i), и несколько других. Выпи-шите значения р и q, которые вы использовали, а также границы хи у и сделайте набросок линии L, разделяющей две «области при-тяжения», для каждого примера, рассмотренного вами. (Областьпритяжения для р содержит все те начальные точки z, которыепорождают последовательности, сходящиеся к р.)

Page 191: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

190 Глава 13. Итерации Ньютона-Рафсона и фракталы

Сможете ли вы догадаться, какой вид имеет линия L, котораяразделяет две «области притяжения» в случае общего квадратногоуравнения? Подтверждает ли это ваше предположение в задаче (i)?

(iii) Руководствуясь следующими подсказками, найдите теоретиче-ски линию раздела областей притяжения для общего квадратногоуравнения с разными корнями p,q.

Пусть отображение Ньютона—Рафсона снова задано в виде (13.3)и пусть

где, как и раньше, р и q являются корнями квадратного уравнения(13.2). Пусть L есть множество точек z на плоскости, для которых|Т(.г)| = 1,т.е. \z—p\ — |г—{j|. Нарисуйте диаграмму, чтобы показатькак L связано с р и q.

Проверьте, что T(N(z)) = (T(z))2, как и в § 13.2. Как и там, от-сюда следует, что T(Nk(z)) = равняется T(z) в какой-то (в какой?)степени. Дальнейшее доказательство распадается на два случая взависимости от того, по какую сторону от L находится начальнаяточка z. Эти две стороны различаются неравенствами |T(z)| < 1 и|Г(г) | > 1. Используя те же доводы, что и в § 13.2, покажите, чтоесли \T(z)\ < 1, то T(Nk(z)) -> 0 при k -J- оо, и, следовательно,Nk(z) -*• р. Аналогично, если \T(z)\ > 1, покажите (используя, на-пример, U = 1/Т, как в §13.2), что Nk(z) —» q. Таким образом, Lявляется разделяющей две области линией.

Можете показать, что если z лежит па L, то все Nk(z) такжележат на L?

Что произойдет, еслир — q? Сначала выполните cnr l . а и cnr2.mдля нескольких вариантов равных корней и понаблюдайте, что про-изойдет. Сформулируйте общий результат и докажите его. (Под-сказка: Примените T{z) = z — p.)

(iv) Возвращаясь к случаю р ф q, выясните, что произойдет, еслимы возьмем наше начальное приближение z на разделяющей ли-нии L1 Случай г2 + 1 = 0 является типичным, и здесь, как выдолжны уже понимать, L есть ось х\ В задаче (iv) из § 13.2 вы по-казали, что если z лежит на L, то там же будет и N(z): все итерацииN{z),N2(z),N3(z),... лежат на L.

Проиллюстрируйте это, преобразовав cnr l .m в спгЗ .m так, что-бы было р = г, g = —г, границы изображения были в диапазонах—10 < х < 10, —10 < у < 10, а единственная случайная начальная

Page 192: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

13.4. Кубическое уравнение z3 — г = 0 191

точка, z лежала на прямой L. Белые кружки должны быть помеще-ны в эту точку и в каждую из 100 последовательно вычисленныхточек командой

p l o t ( r e a l ( z ) , i r a a g ( z ) , ' w o ' )

Вам также необходимо значения z (которые в этом примере теоре-тически должны быть вещественными, так как все они принадле-жат L) сохранить в векторе xvalue. Вы сделаете это, задав исходноесостояние

xvalue= [] ;

и затем после каждого вычисления z выполняя

xvalue= [xvalue, r e a l ( z ) ] ;

После окончания вычислений выведите график этих значений какфункции порядкового номера, выполнив

plot( [0 :100] ,xva lue) ^

Распечатайте этот график. Не говорит ли это о том, что величи-ны, полученные методом Ньютона—Рафсона, ни к чему не сходят-ся, если начальная точка лежит на L1 Дайте обоснование вашегоответа.

13.4. Кубическое уравнение г3 — z — 0

Теперь рассмотрим кубическое уравнение г3 — z = 0, которое име-ет корни р = — 1, д = 0 и г = 1, Проверьте, что тогда формулаНьютона—Рафсона примет вид

Мы хотим найти области притяжения, т. е. область плоскости

Д_1 = {z : Nk(z) -» - 1 при к -> оо}

и аналогично определенные RQH R\. Вы увидите, что это довольно

сложная задача.

(i) Измените cnr2.m так, чтобы его можно было применить в дан-ном примере и чтобы он выводил на график кружки трех цветов:

^ Достаточно без всякого накопления выполнить команду plot(real(z)). Поповоду сходимости итераций на L см. наше замечание в самом конце § 13.2. —Прим. перев.

Page 193: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

192 Глава 13. Итерации Ньютона-Рафсона и фракталы

Рис. 13.1. Крупномасштабный вид части области притяжения для кор-ня г — 1 кубического уравнения г — z — 0.

кружок в точке (х,у) изображается определенным цветом, если Н-Р-итерации для начального значения z — х + гу сходятся к опреде-ленному корню. Вам нужно взять 1000 случайных точек в качественачальных. Полученный М-файл назовите cnr4.m.

(ii) Выполните программу для xl ~ —2, xu — 2, у/ = —2 (так что х иу изменяются от —2 до 2). Сделайте грубый набросок трех областейпритяжения.

Теперь выполните программу для xl = —0.6, хи = —0.4, yl =—0.1, сосредоточив внимание на небольшом участке предыдущегографика. (Отметьте приблизительно этот участок на вашем первомнаброске.) Снова сделайте грубый набросок трех областей притя-жения.

Области притяжения в случае этого, очень простого на первыйвзгляд кубического уравнения на самом деле являются бесконечносложными образованиями в том смысле, что под каким бы увели-чением вы ни разглядывали их, они все равно выглядят сложными(подобно множествам Мандельброта). Рисунок 13.1 получен с помо-щью программы, очень похожей на спг4.ш, за исключением того,

Page 194: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

13.4. Кубическое уравнение 23 - г = 0 193

что она пробегает экран пиксел за пикселем вместо того, чтобывыбирать большое количество случайно разбросанных точек. Нанем изображена область притяжения корня г = 1 для xl = —0.6,хи = —0.4, yl = —0.1. Каждый маленький нарост и изолированныеостровки вокруг главного образования при более тщательном рас-смотрении оказываются бесконечно сложными. Область притяже-ния является фрактальным множеством: под каким бы сильнымувеличением вы ни разглядывали его малую часть, она не выглядитхоть немного проще.

Как вы можете видеть, природа кубической и квадратичной за-висимостей различается очень сильно!

Page 195: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

14

Перестановки

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

А. Разложение на циклы

Цель работыМы используем MATLAB, чтобы исследовать «случайные* переста-новки, особенно их разложения на непересекающиеся циклы. Име-ется теоретическое и экспериментальное исследование [5] о среднемчисле непересекающихся циклов, встречающихся в случайной пере-становке. Основной материал по перестановкам обычно излагаетсяв начальных курсах по высшей (абстрактной) алгебре: см., напри-мер, [11].

Используемые математические понятияВ этом исследовании рассматриваются перестановки конечных мно-жеств, разложения на непересекающиеся циклы, порядок переста-новки и перестановочные матрицы. Понятие порядка перестановкисвязано с понятием наименьшего общего кратного {НОК) множе-ства целых чисел. Также среднее число непересекающихся циклов,встречающихся в перестановках заданного конечного множества,исследуется как экспериментально, так и теоретически. Замечание:Мы всегда записываем композицию перестановок справа налево:запись 7Г27Г1 означает «выполни сначала TTI, а затем выполни 7Г2».

Используемые возможности MATLAB'аОдин М-файл порождает «случайные» перестановки последова-тельных чисел 1,2,... , п, а другой разлагает перестановки на не-пересекающиеся циклы. Вам потребуется внести изменения в них,

Page 196: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глава 14. Перестановки 195

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

Перестановка чисел 1,2.... ,п есть их перегруппировка в неко-тором порядке. Например, при п = 8 перестановка

1 2 3 4 5 6 7 8 \7 3 8 6 5 4 1 2 ^ 1 ^ >

переводит 1 в 7, 2 в 3, З в 8 и т.д. Перегруппировка просто записа-на в нижней строке, которую мы будем обозначать как вектор р.Любая перестановка может быть записана в обозначениях непересе-кающихся циклов. Для тг это даст представление (17)(238)(46)(5),которое означает, что 7г можно получить, оставив 5 на месте; пере-ставив 4 на место 6, а 6 на место 4; переставив 2 на место 3, 3 наместо 8, а 8 на место 2 и переставив 1 на место 7, а 7 на место 1.Цикл (46) называется 2-циклом или транспозицией, (238) называ-ется 3-циклом и т. д. Часто «1-цикл» (о) опускается при такой запи-си, но здесь мы будем включать его. Нас будет интересовать (кромевсего прочего) общее число непересекающихся циклов в представ-лении перестановки. В случае тг из (14.1) оно равно 4. (Достаточнопонятно и верно, что разложение перестановки тг на непересекаю-щиеся циклы полностью определяется самой тг, исключая то, чтоциклы могут быть записаны в другом порядке и элементы каждогоцикла сами могут быть циклически переставлены. Например, нашаперестановка 7г равна также (5)(382)(71)(46),)

Обозначим через S(n) множество всех перестановок чисел1,2.... , п. Имеется п! таких перестановок, поскольку имеется п по-ложений для 1, п — 1 положений для 2 и т. д., а всю перестановкумолено выбрать

п(п — 1){п — 2 ) . . . 1 = п\

способами.

(i) В MATLAB'e есть функция randperm(n), порождающая случай-ную перестановку чисел 1,2,... , п, т. е. случайный элемент из S(n).Наберите randperm(lO), чтобы получить случайную перестановкучисел 1,2,... ,10. Загляните в этот М-файл. Воспользуйтесь ваши-ми знаниями о команде sort , чтобы описать работу randperm.m.(Если вы забыли команду sor t , наберите help sort.)

13-

Page 197: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

196 Глава 14. Перестановки

Напишите короткий М-файл, создающий 1000 случайных пе-рестановок, и запасите их все как строки матрицы Ыдр размера1000 х п.

Подсказка: Начните с команды

n=inputС'Наберите значение п')

чтобы вы могли использовать разные значения тг в разных приме-рах. Каждая случайная перестановка тогда порождается командой

p=randperm(n);Вам понадобится команда цикла

for j = 1:1000выполняющаяся после строки ввода п. Если вы напишете внутрицикла

bigpCj,:)=p;то вектор р сделаете j-й строкой матрицы Ыдр. Если вы хотитевыполнить один за другим несколько примеров, то неплохо будетнабрать {в МАТЪАВ'е)

>> clear bigp

между примерами или вставьте это в начало вашего М-файла.Теперь положите п = 5 и постройте гистограмму из столбцов

матрицы Ыдр. (Обратите внимание, чтоhis t(v,I :5)

построит гистограмму вектора v из «столбиков», середины которыхдаются числами 1, 2, 3, 4, 5.) Распечатайте одну из этих гистограмми убедитесь, что все столбики находятся на том уровне, которыйговорит, что числа 1, 2, 3, 4, 5 появляются в любой позиции пере-становки с одной и той же частотой (и, следовательно, randperm.mявляется неплохим генератором случайных перестановок).

(ii) Созданный для вас М-файл cycles.m генерирует случайнуюперестановку, а затем раскладывает ее на непересекающиеся ци-клы. Он делает это точно так, как делали бы вы, следуя за чис-лами при перестановке, пока не получится цикл, и переходя затемк новому числу, чтобы сформировать следующий цикл. Чтобы по-мочь компьютеру остановиться, когда все числа от 1 до п будут«использованы» в циклах, элементы вектора р обнуляются по ме-ре попадания в циклы. Попробуйте выполнить М-файл несколькораз, чтобы понять, что он делает. В одном случае, взяв, например,п = 10, разложите перестановку на циклы вручную и сравните вашрезультат с компьютерным.

Page 198: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глава 14. Перестановки 197

(iii) Измените cycles, m так. чтобы подсчитывались порядки (дли-ны) циклов, а в конце определялось НОК этих длин. Было бы луч-ше, если бы длины запоминались в векторе, скажем, clength, ко-торый вначале определяется как пустой:

clength = []

а затем этот вектор получает приращение каждый раз, когда будетопределена очередная длина:

clength = [clength newlength]

где «newlength* означает только что найденную длину. Чтобы най-ти НОК, сделайте следующее: положив / = Н0К(х1,ж2, • • • ,Xk)^вычислите последовательно

и тогда последнее lk-i даст искомое /. Можете также считать, чтодля двух чисел а, Ъ

Н О К ( а , & ) = ff ...НОД(а, Ь)

Можете воспользоваться существующей функцией gcdiv.m, чтобывычислить НОД.

Таким образом, для вычисления НОК длин нужно выполнитькоманды МАТХАВ'а

ord=clength(l);for i=2:length(clength)

ord=(ord*clength(i))/gcdiv(ord,clength(i));

end

а затем, конечно, вы захотите вывести на экран получившееся зна-чение ord. Сделайте несколько примеров с помощью этого М-файла.

(iv) Измените randperm.m так, чтобы он также вычислял соответ-ствующую перестановочную матрицу А перестановки 7г € S(n)l\Она определяется как матрица, у которой для г = 1,... , га в г-йстроке в позиции тг(г) стоит 1, а остальные элементы строки равны0. Так что вы сначала должны определить А = zeros Cn,n), а затемвыполнить цикл

for i = l : nA

end;1^ Его следует сохранить под другим именем, поскольку randpenn — функция

системы. — Прим. перев.

Page 199: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

198 Глава 14. Перестановки

(Вспомните, что р — имя вектора, определяющего перестановку, на-пример, это нижняя строка в (14.1).)

Почему когда вы умножаете А на вектор-столбец и =(1,2,.. . , п ) т , чтобы ВЫЧИСЛИТЬ Аи, то получаете вектор переста-новки р, записанный в виде столбца? Заметьте, что в МАТЬ А В'евектор и может быть записан как u = [ l : n ] '. Отсюда следует, чтостепени перестановки1' можно вычислять как A2u,A3u, Вос-пользуйтесь вашим примером из приведенной выше задачи (ш) дляиллюстрации того факта, что НОК длин циклов равно порядку пе-рестановки (т. е. наименьшей степени к > 1, для которой Аки = и).Замечание: Возможно, вам покажется проще создать новую вер-сию М-файла, написанного вами перед этим, в которой вы моглибы задавать перестановку, а не выбирать ее случайным образом.

(v) Измените cycles.га, чтобы со всем прочим подсчитывалось об-щее число циклов (включая 1-циклы) в разложении перестановкина непересекающиеся циклы. Затем еще раз измените его, чтобыдля заданного числа случайных перестановок (их может быть до1000) вычислялось среднее число циклов в разложении этих пере-становок на непересекающиеся циклы. Выполните его несколько раздля различных значений п, чтобы найти экспериментальную оцен-ку для этих средних при различных п.

(vi) Мы изложили теоретические соображения, позволяющие пред-сказать величину среднего, найденного выше экспериментально взадаче (v). Они не требуют вычислений. Вы должны дополнить до-казательство деталями и ответить на ряд вопросов.

Мы вычисляем среднее Е непересекающихся циклов по всем п!перестановкам из S(n). Итак, пусть Р^(п)—общее число ^-цикловсреди разложений на непересекающиеся циклы всех элементов S(n).Нам нужно найти

v РЛп) + Р2(п) + • • • + Рп{п)Е = п\ •

Например, пусть п = 3. Разложения на непересекающиеся ци-клы шести элементов из 5(3) суть

(1)(2)(3), (1)(23), (2)(31), (3)(12), (123), (132).

Так, Рх(3) = 6, Р2(3) = 3, Р3(3) = 2, и Е - Ц- есть среднее числонепересекающихся циклов для перестановок трех объектов.

' То есть результат ее многократного применения. — Прим. перев.

Page 200: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Глава 14. Перестановки 199

Как много перестановок из S(n) содержат, в частности, 1-цикл(1)? Оставшиеся п — 1 чисел можно переставлять произвольнымобразом, так что для него имеется (п— 1)! таких перестановок. Ана-логично учитываются 1-циклы (2), . . . , (п). Итак, для каждого из пвозможных 1-циклов имеется точно (п — 1)! перестановок, содер-жащих этот 1-цикл. Поэтому всего будет п(п — 1)! = п\ возможных1-циклов, входящих в разложения на непересекающиеся циклы всехперестановок из S(n). Поэтому Pi(n) = п\.

Теперь рассмотрим 2-циклы. Любой конкретный 2-цикл, такой,как (12), попадается точно в (п — 2)! перестановках из S(n), а все-го имеется п^"~ ' возможных 2-циклов (почему?). Таким образом,

Аналогично покажите, что P${n) — у . (Чтобы подсчитать числовозможных 3-циклов, сначала подсчитайте количество различныхтроек (а, Ь, с) из несовпадающих чисел от 1 до п. Затем учтите,что этих троек в 3 раза больше, чем реальных 3-циклов, поскольку(a, b,c) — (b, с, а)~(с, а, Ь), так что их число нужно разделить на 3.)

Каков результат в общем случае для Pk{n)? Чему равно значе-ние Е1 Сравните это среднее с полученным вами экспериментальнов задаче (v).

(vii) В заключение рассмотрите следующие отчасти эксцентричныевычисления. Нам даны числа пят такие, что 1 < т < п. Непе-ресекающиеся циклы перестановки тг, содержащей числа из набора1,2,... ,т, могут содержать или нет все числа, не входящие в него.Например, при п = 4, т — 2 рассмотрим перестановки

1 2 3 4 \ / 1 2 3 42 1 4 З , ) ' ^ 2 " ^ ! 3 4 2

Для тгх — (12)(34) цикл, содержащий 1,2, не содержит 3,4. Длятг2 = (1)(234) — содержит.

Внесите изменения в cycles.m, чтобы можно было вычислятьв случайной выборке из, скажем, 1000 перестановок долю тех, ко-торые удовлетворяют этому свойству для заданного т {вводя еговначале вместе с п). Подсказка: Это намного легче, чем звучит. Вамнужно ввести т и число проверяемых перестановок testnum. Вамтакже потребуется счетчик count, чтобы считать число переста-новок, обладающих указанным выше свойством. Последнее суще-ственное изменение, которое нужно сделать, состоит в том, чтобывместо

while i<n

Page 201: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

200 Глава 14. Перестановки

вставить

while Km

Как только разложение на циклы найдено, вам нужно проверить,обладает ли оно требуемым свойством; это делается посредствомсравнения

if p == zeros(s izeCp))count=count+l;

end

Вы понимаете, почему это срабатывает?В случае, скажем, п = 8 и различных т предложите формулу

для этой доли, выразив ее через пит.

(viii) Вычисления задачи (vii) можно интерпретировать так. Пустьмы имеем п ящиков, каждый с уникальным ключом, который неподходит к другим ящикам, и у каждого есть узкая прорезь, черезкоторую мы можем протолкнуть ключ внутрь. Ящики закрыты наключ, и ключи случайным образом опущены в ящики по одномув ящик. Теперь взломаем ящики 1,2,... ,т. Какова вероятностьтого, что после этого можно будет открыть замки всех ящиков?Объясните, как это связано с проведенными выше вычислениями.

В. Тасование карт

Цель работыДля некоторых людей тасовании карт — один из примеров переста-новок в повседневной жизни. В этой работе рассматриваются ре-зультаты как «идеального» (с высокой степенью регулярности) та-сования, так и «грубого» тасования, имеющего определенный эле-мент случайности. Для этого моделируется заурядное тасованиевнахлест колоды из 52 карт как противоположность тасованию кар-точных фокусников. Мы обнаружим, к нашему удивлению, чтотрех (грубых или идеальных) тасований внахлест совершенно не-достаточно, чтобы полностью перемешать колоду. На самом деле,если такое тасование выполнено трижды, а затем одна карта пере-мещается в другое место колоды, то обычно имеется возможностьнайти эту карту простым способом выкладывания карт в столбцы.Тасование карт обсуждается в [6].

Используемые математические понятияРабота связана с перестановкой конечных множеств, интерпретиру-емых как колоды карт, пронумерованных от 1 до п. Поэтому при-

Page 202: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

14.1. Введение 201

дется перемножать перестановки (т. е. выполнять их одну за дру-гой). Мы будем использовать обозначения сравнений по модулю:а = Ь mod mt где а, Ь, т суть целые числа и т ф 0, означает, чтоа — Ь = Хт для некоторого целого Л, которое может быть > 0, < 0или нулем. Изучается порядок перестановки, полученной тасовани-ем колоды карт, который означает, сколько раз надо выполнить за-данное ею тасование, чтобы вернуть картам их исходный порядок.(К несчастью, здесь возникает терминологическое недоразумениемежду «порядком» перестановки и «порядком» в перестановке! Впоследнем случае имеется в виду положение карт в колоде.) Ис-пользуется разложение перестановок на непересекающиеся циклы.Замечание: Мы всегда записываем композицию перестановок спра-ва налево: запись 7Г27Г1 означает «выполни сначала тг̂ , а затем вы-полни 7Г2 »•

Используемые возможности MATLAB'aПридется делать некоторые изменения в имеющихся М-файлах, на-пример, чтобы использовать вместо нечетных номеров четные. Нампонадобится команда MATLAB'a s o r t .

14.1. Введение

14-1.1. Перестановки мест (ПМ)

Рассмотрим стопку из шести карт, пронумерованных сверху внизчислами 1, 2, 3, 4, 5, 6. Предположим, что их переупорядочили (пе-ретасовали) так, что порядок значений стал 4, 1, 5, 2, 6, 3 сверхувниз. Соответствующая перестановка мест (ПМ) есть

1 2 3 4 5 62 4 6 1 3 5

где 1г{х) = у (она задается верхней строкой х и записанной прямопод ней — элемент под элементом — нижней строкой у) означает, чтокарта, первоначально находившаяся в колоде сверху на месте х,перемещается на место у (тоже сверху).

Большинство тасований лучше всего описывается с помощью со-ответствующих им ПМ. Так, например, приведенное в начале есть«тасование внахлест», когда карты сначала делятся на две равныестопки со значениями 4, 5, 6 сверху вниз и 1, 2, 3 сверху вниз. Этистопки снова объединяются, перемежаясь. Повторяя то оке самоетасование внахлест, снова получаем сначала две стопки со значени-ями 2, 6, 3 и 4, 1, 5, а затем объединенную стопку со значениями 2,

Page 203: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

202 Глава 14. Перестановки

4, 6, 1, 3, 5 сверху вниз. Вы можете проверить для себя, что ПМ,соответствующее этому двойному тасованию, есть просто квадраттг (выполняем 7г и затем опять выполняем тг):

1 2 3 4 5 6

Мы можем теперь «снять сверху»: разделить колоду на две стоп-ки 2, 4, 6 и 1, 3, 5 и снова объединить так, чтобы получить порядокзначений 1, 3, 5, 2, 4, 6. Вся последовательность трех тасований (двавнахлест и снятие) имеет, следовательно, ПМ

1 2 3 4 5 61 4 2 5 3 6

Заметьте, что снятие само по себе имеет ПМ

1 2 3 4 5 64 5 6 1 2 3

(карта с места 1 переходит на место 4 и т.д.). Вы можете легкопроверить, что перестановка из (14.2) есть в точности о"7г2. Такимобразом, можно очень наглядно представить ПМ результата трехтасований, перемножая их ПМ справа налево, что записываетсякак сгтг2.

Пусть в общем случае мы сделали несколько тасований с ПМTTI, затем тгг и т. д. до тгг. Тогда ПМ суммарного тасования естьпроизведение перестановок тгг7гг_1... TTI. В частности, повторе-ние тасования с ПМ = тг общим числом г раз подряд эквивалентнотасованию с ПМ = тгг.

Чтобы в дальнейшем писать покороче, мы будем описывать ПМтолько их нижней строкой. Верхняя строка всегда имеет вид1, 2, . . . , п. Иногда (§ 14.3) нас будет интересовать разложение ПМна непересекающиеся циклы.

Конечно, обычные игральные карты имеют масть. Мы же вместоэтого будем маркировать их значениями 1,2,... ,52. Это равносиль-но упорядочиванию мастей и упорядочиванию А,2,... , 10,J,Q,K(туз, 2, . . . , 10, валет, дама, король) карт одной масти.

14-1-2. Использование команды MATLAB'a sort

В MATLAB'e есть способ автоматического перехода от перестано-вок места (ПМ) к указанным на картах значениям, а именно коман-да sor t . Предположим, что мы начинаем с шести карт в естествен-ном порядке 1, 2, 3, 4, 5, 6. Выполните следующее в MATLAB'e

Page 204: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

14.2. Тасования внутрь и поверх 203

» р= [2 6 4 1 5 3] ; '/. Или любой другой список: это ПМ» [v q]=sort (p) ;

» qВы обнаружите, что вектор q дает значения карт слева направо (ко-торые мы понимаем как значения сверху вниз в колоде). Заметьте,что v здесь не используется, но он необходим, поскольку являетсячастью команды sort 1 ) . И наоборот, если рассматривать q как пе-рестановку мест, то р есть вектор значений карт слева направо, такчто этот прием работает в обе стороны.

Итак, решающее преимущество метода ПМ состоит в том, чтоперемножением ПМ двух тасований обычным образом мы получаемПМ объединенного тасования карт. Мы всегда можем перейти купорядочиванию по значениям, используя sort, и это сделано длявас в М-файлах.

14.2. Тасования внутрь и поверх2^

Возьмите колоду из п карт, промаркированных как 1,2,... , п, иразделите ее на две части, по возможности равные. Идеальное та-сование внахлест получается перемежающимся слиянием этих двухполовинок колоды. Имеется четыре возможности в соответствии стем, четно или нечетно п, и с тем, из какой части выбирается перваякарта.

14-2.1. Четные тасования внутрь

Если п четно, т.е. п = 2к, то две половинки колоды состоят из карт1, 2,... , к и к + 1, к 4- 2,... , 2к. Если карта к + 1 идет наверх пер-вой, то это называется тасованием внутрь, и карты по значениямрасположатся так:

fc + l,l,fc + 2,2,fc + 3,3,... ,2k,k.

На рис. 14.1 приведен случай к = 3.Выпишите соответствующую перестановку мест, скажем, тг, и

проверьте (хотя бы на двух примерах, таких, как п = 6, п = 10),

' ' B v = sort(p) здесь будет получаться v = [1,2, . . . . п].Если р — перестановкаиз чисел 1,2,... , п, то обратная ей перестановка q может быть вычислена непо-средственно из ее определения как q(p) — 1 : п. Этот способ работает быстрее,чем команда sort . —Ярил*, перев.

2> В оригинале: ins and out-shuffle. Мы перевели это как «тасование внутрь иповерх». — Прим. перев.

Page 205: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

204 Глава 14. Перестановки

4

5

6

Четное тасованиевнутрь

Четное тасованиеповерх

Нечетное тасованиевнутрь

Нечетное тасованиеповерх

Рис. 14.1. Тасования внутрь и поверх для четного и нечетного числакарт с исходным расположением 1, 2,3,... сверху вниз.

что тг может быть записана в виде

7г(аг) = 2х (mod 2fc + l),

это, напоминаем, означает, что тг(ж) — 2х — точное кратное 2к + I 1 ' .В этом случае ж(х) будет равно либо 2х, либо 2х — (2к + 1).

Обратите внимание, что, поскольку это перестановка мест, мысразу знаем, что повторение того же самого тасования приведет кПМ, полученной выполнением тг дважды:

7г2(я) = тг(тг(а:)) = тг(2з:) = 4х (mod 2k + 1). (14.3)

Таким образом, здесь карта, занимавшая в начале до тасования ме-сто х, в конце после двух тасований окажется на месте 4х (mod2k + 1). Проверьте это непосредственно для случая п = 6.

Какое минимальное число раз необходимо повторить это тасова-ние при п=6, чтобы карты вернулись в первоначальное положение?

' ' Свойства обозначения — mod n, которые нам нужны, суть: если а = Ь ис = d, то (i) а ± с = Ь ± d и (ii) ас = bd. В частности, если а = Ь, то аг = ЬТ длялюбого целого г > 0.

Page 206: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

14.2. Тасования внутрь и поверх 205

Чтобы показать, как соединять перестановки в М-файле,М-файл r i f f l e i . m повторяет тасование внутрь для четного п лю-бое число раз. Изучите этот М-файл: позже вам придется внестив него изменения. Заметьте, в частности, что он использует sor t ,чтобы распечатать окончательный порядок карт по их значениям,поскольку именно это мы хотим знать. Воспользуйтесь им, чтобыузнать минимальное число тасований 14 карт, необходимое для вос-становления их исходного порядка.

Теперь взгляните на М-файл r i f f le la .m . Здесь последователь-но вычисляются степени 2 и приводятся по mod 2&+1, т.е. вычисля-ется остаток от деления результата на 2к + 1. Возьмите к = 7; по-лученное значение г должно совпадать с числом тасований внутрь14 карт, рассмотренным выше.

Это объясняется следующим образом. Повторением рассужде-ний, приводящих к формуле (14.3), мы находим, что перестановкамест для г повторных тасований есть перестановка тгг, обладающаясвойством, что для любого места х

7гг(ж) =Тх (mod2fc + l) .

Отсюда следует, что если 2Г ~ 1, то каждая карта возвращается наее исходное место! Обратно, если каждая карта возвращается на ееисходное место, то, в частности, карта на 1-м месте возвращаетсяна 1-е место, так что 2Г = 1. Таким образом, наименьшее числоповторных тасований, возвращающих все карты в первоначальноеположение, есть наименьшее г, для которого 2Г = 1 (mod 2k + 1).Это наименьшее число называется порядком тасования или поряд-ком перестановки, описывающей тасование. (Терминология, конеч-но, весьма неудачная, поскольку перечисление элементов переста-новки (их порядок) говорит о значениях на картах сверху вниз.)

Воспользуйтесь r i f f le la.m, чтобы найти это наименьшее г длявсех четных чисел от 40 до 52 включительно.

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

14-2.2. Четные тасования поверх

Здесь имеется п = 2k карт, но теперь 1 идет поверх первой, и послеодного тасования карты упорядочиваются по значениям так:

l,fc + l,2,&-f-2,3,fc + 3, . . . , k,2k

Page 207: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

206 Глава 14. Перестановки

Взгляните на рис. 14.1 для к = 3. Проверьте, рассмотрев, например,п — 6, п = 10, что перестановка мест в этом случае есть тг, где

7г(х) = 2 я : - 1 (mod 2к - 1) при 1 < х < 2к ~ 1,

тогда как тг(2к) = 2к. Имеется одна дополнительная сложность: длях — к новое место есть 2к— 1, а не 0. Таким образом, при вычислениитг{х) мы берем остаток от деления 2х — 1 на 2к — 1, но, посколькунет места 0, остаток 0 означает место 2к — 1.

Чтобы облегчить это, для вас была написана специальная функ-ция remm.m. Она делает то же, что и rem, за исключением остатка0. Таким образом,

remm(19,ll) дает 8,

но

retnm(22,ll) и гешш(11,11)

дают 11.Сперва, используя функцию remm.m, модифицируйте riff l e i .m,

чтобы он работал в случае четного тасования поверх. Вам надо из-менить г'-цикл, чтобы он продолжался только до 2fc — 1, и вста-вить store (2*k)=2*k; это делается после окончания i-цикла, но докоманды position_perm=store. Назовите ваш модифицированныйМ-файл riffle2.m и воспользуйтесь им, чтобы проверить, что 52карты возвращаются к первоначальному упорядочиванию после все-го лишь восьми тасований поверх. Сравните полученное с числомтасований внутрь для 52 карт, найденным вами выше с помощьюrifflela.m?

Далее, детализируйте следующий набросок доказательства, что-бы показать, что число тасований поверх, требуемое для возврата2к карт на их исходные места, есть наименьшее г, для которого

2 Г Е 1 (mod 2fc-l).

Приводим набросок доказательства. Заметьте, что карта, находив-шаяся вначале на месте 2fc, там и останется после любого числатасований поверх, поэтому мы исключим х = 2к из дальнейшегорассмотрения. Как и прежде, объединяемые тасования равносиль-ны перемножаемым перестановкам мест, так что два тасования да-ют перестановку мест 7г2, где

•к2{х) = 2(2ж - l ) - l = 4 i - 3 (mod 2k - 1).

По индукции получаем, что для г тасований ПМ равна тгг, где

кГ{х) = 2гх - (2Г - 1) (mod 2k - 1).

Page 208: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

14.2. Тасования внутрь и поверх 207

Следовательно, если 2Г = 1, то тгг каждую карту возвращает в на-чальное положение, так как кг(х) ~ х для всех х. Наоборот, есликаждая карта возвращается в начальное положение, то возвраща-ется и карта, находившаяся на 2-м месте, так что 2 Г + 1 — 2Г + 1 ~ 2,т.е. 2Г = 1. Таким образом, наименьшее число тасований поверх,возвращающее каждую карту в исходное положение, есть наимень-шее г, для которого 2Г = 1 (mod 2k — 1).

Воспользуйтесь доказанным и r i f f Ie2a.m (подправленнымr i f f lela.m), чтобы найти наименьшее число тасований поверх, воз-вращающих каждую карту в исходное положение, для каждого чет-ного п = 2к от 40 до 52 включительно.

14-2.3. Колоды с нечетным числом карт

Если число карт нечетно, скажем 2к + 1, то после деления коло-ды надвое одна часть содержит к карт, а другая — к + 1 карту. Обечасти тасуются внахлест так, что верхняя и нижняя карты части,содержащей к -f 1 карту, становятся верхней и нижней картами объ-единенной колоды (к + 1 карта «накрывает» к карт). Имеется дваварианта: часть с к картами содержит карты со значениями 1,.. . ,к(тасование внутрь), либо карты со значениями к+2,... , 2к+1 (тасо-вание поверх). Взгляните на рис. 14.1 для случая к ~ 2. Проверьте,что соответствующие перестановки мест задаются выражениями

7г(х) = 2х (mod 2к + 1) и тг(зг) = 2х - 1 (mod 2k + 1). (14.4)

Переделайте r i f f l e i .m под эти два случая (пусть это будутМ-файлы r i f f le3 .m и r i f f le4.m) и найдите наименьшее число та-сований внутрь и поверх, которое возвращает 15 картам их исход-ный порядок. Заметьте, что вместо г em. га вам лучше применитьremm.m, чтобы исключить случай с нулевым остатком.

Покажите, что как для тасований внутрь, так и для тасова-ний поверх, наименьшее число тасований, возвращающих картыв исходное положение, есть наименьшее значение г, для которого2 r = l (mod 2k + 1). Примените r i f f le la .m, чтобы найти наимень-шее число г для колод с нечетным числом карт при п = 2к + 1 от39 до 51 включительно.

14-2.4- Тасования внахлест и снятия для колодс нечетным числом карт

Имеется очень интересное явление, связанное с колодами из нечет-ного числа карт, которое мы рассмотрим здесь теоретически. Не

Page 209: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

208 Глава 14, Перестановки

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

Снятие колоды есть циклическая перестановка, т. е. она со-храняет «циклическое» упорядочивание карт, которое получается,если расположить карты по кругу. Например, если с колоды 1, 2, 3,4, 5 снять 3 карты сверху, то новое упорядочивание по значениямбудет иметь вид 4, 5, 1, 2, 3. Если эти числа записаны по кругу,то их порядок будет тот же, что и вначале. В общем случае, дляп карт, объясните на примерах, почему снятие с карт сверху даетперестановку мест

п — с+ 1,п — с + 2,. . . ,п — 1,п, 1,2,... ,п - с— 1,п - с.

Обозначим эту перестановку через сгс, так что ас{х) = х — с (mod n).Теперь предположим, что п — нечетное и равно 2k + 1. В соот-

ветствии с формулами (14.4) идеальное тасование внахлест п картдается перестановкой мест тг, где тг(:с) = 2ж или 2х — 1 (mod n).Покажите, что в обоих случаях

7ГСТС =

Здесь мы просто перемножаем перестановки самым обычным обра-зом, так что

тг(егс(а;)) = СГ2С(ТГ(:Е)) (modn) для всех х.

Покажите, что обе части сравнимы с 2а: — 2с по mod п. Объясните,почему отсюда следует, что последовательность тасований, в кото-рой тасования внахлест перемешаны со снятиями, можно заменитьпоследовательностью, в которой сначала идут тасования внахлест,а затем снятия. Более того, вполне понятно, что многократное по-следовательное снятие колоды равносильно одному снятию. Такимобразом, последовательность тасований внахлест и снятий имеетПМ вида

СГ7Г Г 7Г Г _1 . . . 7 Г 1 ,

где а — какое-то снятие колоды, а тг; — тасования (внутрь или по-верх) .

Теперь мысленно вернемся к наименьшему числу г, указываю-щему, сколько тасований п — 2к + 1 карт, например, внутрь нужносделать, чтобы они вернулись к их исходному порядку (§14.2.3).Предположим, что г тасований внутрь (для этого г) перемежаютсяс несколькими снятиями колоды. Из сказанного выше следует, чтоитоговая перестановка мест может быть представлена в виде атгг,

Page 210: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

14.4. Грубые тасования внахлест (быстрые тасования) 209

где и — снятие колоды. Откуда следует, что сейчас карты цикличе-ски упорядочены так же, как и в начале?

Покажите, что то же самое справедливо и для тасований поверх.Немного труднее доказать, что то же самое выполняется и для

любой смеси (из г) тасований внутрь и поверх, лишь бы их было г.(Набросок доказательства приведен ниже в § 14.5.) Таким образом,тасования внахлест и снятия колоды являются очень неэффек-тивным способом рандомизации колоды с нечетным числом карт:они всегда возвращаются на исходные места после довольно неболь-шого числа тасований. Кстати, в случае колод с четным числом картвсе по-другому. Можно показать, что подходящим выбором после-довательности тасований внахлест и снятий колоды можно полу-чить любую из п\ перестановок п = 2k карт, так что тасованиявнахлест и снятия колоды являются эффективным способом ран-домизации колод с четным числом карт.

14.3. Циклы

Подобно всем другим, перестановки мест, соответствующие тасова-ниям внахлест, можно разложить на непересекающиеся циклы. Длявас написан М-файл, делающий разложения для четных тасованийвнутрь: он называется rifflelc.m. Он выводит циклы и их дли-ны. Воспользуйтесь r i f f l e lc-ти известным фактом, что порядокперестановки равен НОК длин ее непересекающихся циклов, что-бы проверить результаты, полученные вами для четных чисел от40 до 52 в §14.2.1. Для каждого четного числа выпишите длиныциклов и НОК. Обратите внимание, что 52 карты обладают осо-бым свойством: четное тасование внутрь является единственнымциклом. Какое следующее четное число обладает этим свойством?

14.4. Грубые тасования внахлест (быстрые тасования)

1^.^.1. Одно быстрое тасование

Если только вы не сверхискусны, идеальное тасование внахлест неподвластно вам. Поэтому мы рассмотрим здесь, как можно смо-делировать тасование внахлест для обычного человека, которое мыбудем называть грубым тасованием внахлест или быстрым тасова-нием (см. рис. 14.2). Чтобы определиться с понятиями, рассмотримчетное число карт, n = 2fc, которые вначале разбиты на две части из

14-4196

Page 211: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

210 Глава 14. Перестановки

Рис. 14.2. Идеальное тасование внахлест 22 карт (слева) и грубое тасо-вание внахлест (быстрое тасование) этих карт (справа).

т и 2к — т карт, причем мы будем предполагать, что к < т < к + 3(почти совершенное снятие карт).

Часть т карт сверху колоды (если мы начинаем с новой колоды,то они маркированы числами 1,2,... , т) быстро тасуется с остав-шимися картами. Имеется 2к ~ т + 1 «щелей» между оставшимисякартами, в которые могут войти m верхних карт, а именно «щель»над картой т + 1 и щели ниже карт m + l , m + 2 , . . . , 2к. Будем пред-полагать, что быстрое тасование вкладывает 0, 1, 2 или 3 карты вкаждую из этих щелей.

Попытаемся сделать разумное предположение о вероятностяхдля числа карт 0, 1, 2 или 3 быть вложенными в определеннующель. Пусть pi есть вероятность г карт попасть в щель, i = 1, 2, 3,4.Тогда мы, конечно, хотим, чтобы

PO+Pl + Р2 + РЗ = 1-

«Ожидаемое» число карт, входящих в щель, равно р\ + 2р2 + Зрз,а всего имеется 2к — т + 1 щелей, так что «ожидаемое» число ис-пользованных карт есть (2к - т + l)(pi + 2рг + Зрз)- Возможно, мыдолжны уравнять это с числом имеющихся в нашем распоряжении

Page 212: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

14.4. Грубые тасования внахлест (быстрые тасования) 211

карт, которое равно т. Поэтому будем считать, что

(2к - m + l)(pi + 2p2 + Zp3) = т.

Таким образом, если р2 и рз заданы {как и к и гл.), то ро и р\ даютсявыражениями

Tfl

Pl - „ 2 р 2 - З р з , Ро = 1 - P i -Р2 - Р з - (14.5)2к — т + 1

Конечно, £>2 и рз надо выбрать так, чтобы ро и р\ были положитель-ными и < 1. Заменяя дробь в (14.5) на 1 (что является разумнымприближением при больших к), покажите, что нам нужно выбратьлишь р-2 и рз П Р И условии 2р2 + Зрз < 1 • При больших к это будетслужить руководством при выборе pi и рз.

Какие значения для р2 и рз вы считаете разумными? Какие зна-чения получаются для ро и pi в случае п = 2к = 52 (обычнойколоды) для каждого из четырех возможных значений т?

Для вас написан М-файл ruff l e i .т, который реализует описан-ную выше модель быстрого тасования внахлест. Это довольно слож-ная программа, поскольку там тщательно рассматриваются различ-ные возможности, как, например, когда карты 1,2,... ,т кончают-ся прежде заполнения щелей, и наоборот. При получении отрица-тельных значений ро или р% работа М-файла на этом заканчивается.

Выполните М-файл ruff l e i . m несколько раз, используя разум-ные с вашей точки зрения значения вероятностей и положив к — 26(обычная колода). Возможно, вы сможете взять один из результа-тов и показать с помощью подходящей диаграммы, как карты изодной (грубо) половины входят в промежутки (зазоры) между кар-тами другой половины.

М-файл ruf f le lc .m находит циклы быстрого тасования, как ивыше, в § 14.3. Прогоните его три раза и каждый раз вычислите по-рядок тасования, равный НОК длин циклов. Он совпадает с числомповторений быстрого тасования, после которых восстанавливаетсяпервоначальный порядок карт. Единственная особенность здесь втом, что вы найдете этот порядок сильно отличающимся от поряд-ка после идеального тасования 52 карт внахлест.

14-4-2- Два u больше быстрых тасований

М-файл ruffle2.m имеет больше возможностей в том, что касает-ся последовательности быстрых тасований. В ваших экспериментахвы сможете выполнить до четырех тасований. Наша цель — узнать,насколько успешно 2, 3 или 4 быстрых тасования «рандомизируют»

14*

Page 213: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

212 Глава 14. Перестановки

колоду. При выполнении тасований вам будет предложено выбратьединственную карту, г-ю слева после очередного тасования (в коло-де это i-я карта сверху) и передвинуть ее на j-e место слева, где i и jне должны находиться слишком близко друг к другу. (Совет: Что-бы упростить ваши эксперименты, придерживайтесь i = 1: перваякарта всегда куда-то перемещается.) Запишите значение карты, ко-торую вы передвинули. Мы увидим, можно ли угадать, какая картабыла передвинута; если можно, то это верный знак, что колода небыла рандомизирована.

После перемещения одной карты все карты определенным обра-зом раскладываются в столбцы. Выполняя М-файл с некоторымдостаточно малым к (вам придется быть очень осторожным привыборе значений для р2 и р$ при малых к), посмотрите, сможетели вы раскрыть метод, использованный при раскладывании картпо столбцам. Не обращайте внимания на все числа —1 в столбцах:они просто заполняют там место.

При удаче передвинутая карта появится в отдельном столбце (несчитая -1 ниже ее). Поэкспериментируйте с двумя, тремя или че-тырьмя тасованиями и проанализируйте ваши результаты в отгады-вании передвинутой карты. Попробуйте проделать это с реальнойколодой!

Здесь мы приводим результаты типичного прогона дляр2 = 0.2, р3 = 0.05 и трех тасований. Карта с номером 28 былаперемещена на десятое место (так как [ i , j] есть [1 10]), и, каквы можете видеть, она стоит отдельно как воспаленный большойпалец!

ans =

22 39 29 35 45 10 28 1723

4

5

6

7

8

9

2324

25

26

27

-1

-1

-1

4041

42

43

44

-1

-1

-1

3031

32

33

34

-1

-1

-1

3637

38

-1

-1

-1

-1

-1

4647

48

49

50

51

52

-1

1112

13

14

15

16

-1

-1

-1-1

-1

-1

-1

-1

-1

-1

1819

20

21

-1

-1

-1

-1

Page 214: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

14.5. Приложение 213

14.5. Приложение

Это набросок доказательства результата из § 14.2.4. Каждая из пе-рестановок тг; здесь соответствует тасованию внутрь или поверх принечетном п. Мы выполняем тасования внутрь или поверх, переме-жаемые снятиями колоды. Как и в § 14.2.4, это эквивалентно вы-полнению сначала всех тасований, а затем некоторого снятия а.

Наше намерение — доказать, что, если мы выбираем г, для кото-рого 2Т = 1 mod n, то любая последовательность г тасований внутрьили поверх, перемежаемых снятиями колоды, даст в результате про-сто снятие, т. е. циклическую перестановку п карт. Мы также дока-жем и обратное: если результатом последовательности г тасованийвнутрь или поверх, перемежаемых снятиями колоды, является про-сто снятие, то должно выполняться соотношение 2Т ~ 1 mod п.

Итак, пусть тп(:г) = 2х или 2х — 1. Тогда 7T27ri(x) может бытьв 4-х вариантах: это 4х,2(2х — 1),2(2#) — 1 или 2(2х — 1) — 1, т. е.4х,4ж — 1,4ж — 2 или Ах — 3. Вообще, мы имеем

7Г ~ 7Гг71>-1 . . .7Ti(x) = 2ТХ + 1,

где I может быть любым из чисел 0,1,2,... , 2Г — 1. Здесь и ниже =означает = mod п.

Предположим, что 2Т = 1. Тогда ж(х) = х + I для всех х и фик-сированного I, но это есть циклическая перестановка, т. е. снятие.Следовательно, сг7г — тоже снятие.

Обратно, предположим, что перестановка air является цикличе-ской, так что и тг является циклической. Тогда

2гх + I = х + V

для всех х и некоторых I, V. Пусть V — I = гп, так что 2гх = х + т.Для х = 1 это дает 2Г = 1 + т, а для г — 2 это дает 2 Г + 1 = 2 + т.Вычитание дает 2Г = 1.

Page 215: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

15Итерационные методы решения

нелинейных уравнений

Во многих математических задачах приходится решать нелиней-ные уравнения с помощью итераций. Такие уравнения могут бытькак дифференциальными, так и алгебраическими. Задачи реаль-ного мира часто являются нелинейными и могут содержать болееодной независимой переменной, хотя с помощью технических при-емов задачу можно свести (правда не всегда) к одномерному слу-чаю. Главная причина использования итераций в том, что прямое(т.е. аналитическое) решение нелинейных уравнений в общем слу-чае затруднительно, а для сходимости численного решения требу-ется более одного шага. В этой главе рассматриваются главнымобразом уравнения с вещественными коэффициентами; комплекс-ный случай кратко обсуждался в гл. 13.

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

Использованные математические понятияВ работе используются векторы и матрицы. Рассматривается ме-тод, основанный на итерациях и линеаризации нелинейных уравне-ний. Сначала мы рассмотрим одно уравнение с одним неизвестным(для простоты названия соответствующих разделов начинаются спрефикса ID), а затем рассмотрим системы уравнений со многиминеизвестными (разделы, начинающиеся с 2D).

Используемые возможности MATLAB'aЗдесь речь идет о решении уравнений. Для этого будут исполь-зоваться два М-файла fulljiew.m и gauss ja .m Чтобы воспользо-ваться ими, нужно передать информацию об уравнениях с помощьюпростого М-файла. При исследовании скорости сходимости исполь-

Page 216: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

15.1. JO; Метод 1 —метод Ньютона—Рафсона 215

зуется М-файл f_rate.m и в качестве примера дается М-файл ви-зуализации cont4.m.

Но, протяжении всей главы верхние индексы используются вобозначениях последовательностей, а нижние индексы зарезерви-рованы для координат в случае нескольких переменных.

15.1. ID: Метод 1 —метод Ньютона—Рафсона

Запишем некоторое уравнение в виде

F(x) = 0.

Формула Ньютона—Рафсона1' имеет вид:

где F1 есть первая производная функции F(x). Задав начальноеприближение х = х'°) для корня, молено надеяться, что последова-тельные итерации будут все ближе и ближе подходить к истинномурешению, т. е. х^ —>• х — х* при п —> сю.

Для вашего удобства мы разработали М-файл full_new.m, ре-ализующий метод Ньютона. В качестве иллюстрации рассмотримследующий характерный пример.П р и м е р 1

Пусть

F(x) = х3 - Юж2 + 27z - 18 = 0 (15.1)

и известно, что корень находится вблизи х^ — 7.4 (заметьте: точ-ное решение есть х* = 6). Так как первая производная F'(x) =Зх2 - 20ж + 27, мы можем подготовить файл с именем f_exln.m,который содержит следующее2':

function [F,J] = fun_name ( Р ) ; У, Пример 1х = Р(1) ; У, Метод

У, Ньютона - РафсонаF = [х~3-10*х"2+27*х-18]; % Значение функцииJ = [3*х~2 - 20*х + 27 ] ; '/, Производная

У, (якобиан)

1 ) Формула Ньютона—Рафсона получается из первых двух членов разложе-ния Тейлора для функции F(х) в окрестности корня уравнения — точки х*.—Прим. перев.

2*> Для пользователей MATLAB'a V3.5 надо отметить, что вторая строчка х =Р(1) в М-файле f-exln.m должна быть заменена на х = Р и такую же заменунужно сделать позже в f_exlg.m.

Page 217: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

216 Глава 15. Итерационные методы решения нелинейных уравнений

Тогда корень может быть вычислен любой из команд

» Root - fu l l .newOf.exln ' , 7.4) У. Форма А» Root = full_new( Jf_exln J, 7.4, tni) У, Форма В» Root = ful l_new( I f_exln > , 7.4, t n i , t o l ) X Форма С» Root = full_new('f_exln', 7.4, t n i , t o l , hi)'/, Форма D

где tni — общее число требуемых (скажем, 12) итераций с началь-ным значением х^ = 7.4, tol — условие остановки вычислений придостижении заданной точности: |-F(a:)| < tol (скажем, 1.0Е—4) и hiопределяет, нужно ли показывать результаты промежуточных ите-раций (hi = 1 означает «да», hi = 0 означает «нет»). При выпол-нении форм А-С выводится результат только последней итерации(т. е. hi = 0); если tni и tol не заданы, то по умолчанию им присва-иваются значения 20 и 1.0Е—3 соответственно.

15.2. ID: Метод 2 —метод Гаусса—Якоби

Для применения метода Гаусса—Якоби нужно преобразовать ис-ходное уравнение F(x) = 0к виду х = G(x), а сам он представляетитерации

М-файл gauss.ja.m содержит программу этого метода. Обращениек ней аналогично обращению к full_new.m, за исключением подго-товки М-файл а-функции.

Так, пример 1, приведенный выше, можно решить следующимобразом (аналогично ful l леи. т)

» Root = gauss_ja('f_exlg', 7.4) У. А>> Root = gauss_ja('f_exlg', 7.4, t n i , t o l , hi) X D

с помощью укороченного в заглавии М-файла-функции f .exlg.m

function G = fun_name( P ); У, Пример 1x = PCD; '/• Метод Гаусса - ЯкобиR = 18 - x~3 + 10*x"2;G = R / 27; '/, Следующее также подходит:

У. R - 10*х*2-27*х+18; У, Промежуточная величинаX G = sign(R)*abs(R)~(l/3) ; У. Используйте SIGN, чтобы

У, избежать комплексныхX значений

Page 218: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

15.3. ID; Анализ сходимости 217

где первая строка не содержит [ ]*'. Позже вы увидите, что такаяфункция G приводит к плохой сходимости.Замечание. Функция G(x) не определяется однозначно. Мы дажеметод Ньютона можем рассматривать как метод Гаусса—Якоби, вкотором G(x) = х — F(x)/F'(x). В приведенном выше примере 1функцию F(x) ~ х3 - Юх2 + Tlx - 1 8 = 0 можно переписать в видех = G{x) с G(x) = (18 + Юх2 — ж3)/27; но и это представление не

единственно, поскольку G(x) = (Юж2 - 27ж + 18) предоставляетдругую возможность.

15.3. ID: Анализ сходимости

Ни метод 1, ни метод 2 не работают хорошо всегда. Когда метод неработает, имеются две возможности: (1) метод плох, и мы должнынайти более подходящий; (2) начальное приближение было выбра-но слишком далеко от искомого, и это можно до некоторой степениисправить. Плохая работа метода обычно означает медленную схо-димость и является знаком его низкого качества — тогда следуетпойти по пути (1). Ниже мы надеемся проанализировать обе этивозможности.

15.3.1. Область поиска

Под «областью поиска» мы понимаем область, содержащую иско-мые корни. Областью поиска может быть R — (—оо,+оо), но мынадеемся сделать менее протяженный диапазон. Большая часть за-дач приходит из практики, и поэтому можно выбирать «областьпоиска», исходя из априорных знаний; например, отрезок [1,10] мо-жет быть хорошей областью поиска, когда х представляет собойрост человека в футах.

В нашем случае уравнения с одной переменной, т. е. уравненияF(x) = 0 можно получить некоторое представление о корнях F(x)на интервале [а, 6], воспользовавшись командой MATLAB'a p l o t .РассмотримПример 2

Пусть

F(x) = (2 - sin z)(rc3 - Юх2 + 27ж - 18) = 0- (15.2)

То есть у функции G(P) только один выходной аргумент. — Прим. перев.

Page 219: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

218 Глава 15. Итерационные методы решения нелинейных уравнений

15

10

5

-5

-10

-15

-го

: •

:

- • • / -

- - : •

• • • •

• • • • ! • • • • ! / -

/

ч у• • • • - \ • • ; : • ' • / • •

\ ! • / •

V • / . . . .

Рис. 15.1. Выбор области поиска.

Для этого примера выполните

» х = 0.5 : 0.01 : 6.5;» F = (2-sinCx)) .* (х.~3 - 10*х."2 + 27*х - 18) ;>> plot(x,F, х,zeros(size(x)) ) ; grid

чтобы построить график, подобный изображенному на рис. 15.1.Теперь можно заметить, что все корни находятся примерно на от-резке [0,7], и поэтому [0,7] является подходящей областью поискадля начального приближения х = х^.

15.3.2. Область сходимости

Область сходимости метода определяется как множество всех на-чальных точек из области поиска, для которых может быть полу-чено сходящееся решение. Ясно, что область сходимости вложенав область поиска. Чтобы найти такую область сходимости, нужноперебрать в качестве начальных «все» точки области поиска и за-помнить те, для которых соответствующие последовательности со-шлись к решению. На практике рассматривают лишь точки, взятыес некоторым шагом.

Например, для области поиска [0,8] из примера 1 мы можемпроверить в качестве начальной точки а^0' = 0, 1/8, 2/8, . . . , 8 —1/8, 8; здесь использован шаг длины Ах = 1/8 = 0.125. В обозна-

Page 220: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

15.3. ID: Анализ сходимости 219

О О О О О О О О С Ю О О О С Ю О О О О О О О О О О С К I

оооооооооооооооооо

V юоооооооооооооо

0 1 2 3 4 5 6 7

Рис. 15.2. Поиск области сходимости из трех интервалов.

6

Б

4

3

2

1

0

-

-

-

-

-

-

- 1 L

1 2 3 4 5 6 7

[0 1.875] д л и 1 [ 2 . 2 1 5 4 . 2 5 ] д л я 3 [ 4 . 8 7 5 в] д л я 6

Рис. 15.3. Пример 2: области сходимости для корней х = 1, 3, 6.

чениях МАТЬАВ'аэто хО = 0 : 0.125 : 8. Более того, мы можемнаписать следующий М-файл для построения графика, подобногоизображенному на рис. 15.2:

t n i = 30 ; X = [] ; R = [] ;forxO = 0 : 1/8 : 8 Ш'/.У. f.exln.m для примера 1 Ш1/.'/.

root = full_new('f_exln', xO, tni) ;

Page 221: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

220 Глава 15. Итерационные методы решения нелинейных уравнений

if 0 <= root <= 8, X = [X; хО]; R - [R; r o o t ] ; end„ _ j !/«/«/о/у1/ЧЧЧЧЧЧо/1/у|/о/'/ЧЧЧЧЧЧЧЧЧ V / V / Ч Ч Ч ЧЧЧЧЧV'/'/0/ Vе/'/'/*/'/'/'/

Convergence_region = [X R], pT.ot(X, R, } o J )axis([0 8 0 7])

He считая нескольких «странных» точек, по существу имеется триинтервала, которые образуют область сходимости. Данные рис. 15.2можно лучше представить в форме рис. 15.3, полученного с помо-щью команд

» х = [0 0 1.875 1.875]; у =[0 1 1 0 ] ;» plot (х, у); hold on '/,'/, plot (х,у, 'о') ; 7, Не обязат.

» plot([2.215 2.215 4.25 4 .25], [0 3 3 0 ] ) ;» plot([4.875 4.875 8 8 ] , [ 0 6 6 0 ] ) ;» axis С [-1 9 -1 8 ] ) ; hold off

15.3.3. Порядок сходимости

Различные итерационные схемы сходятся к решению с разнымискоростями (если они, конечно, сходятся). Эти скорости дают мерупроизводительности каждого метода. Скорость сходимости мето-да характеризуется его порядком сходимости. Если последователь-ность величин х^\х^1\ . . . , х^п\... удовлетворяет соотношению

„ х\ ос |т ' п ' — х к, т. е.

= С\х{п)-х\к

— X

X

к

с некоторыми константами Сяк (не зависящими от п), то метод, по-родивший эту последовательность итераций, имеет порядок сходи-мости к. Здесь х —решение уравнения F(x) = 0, а означает «про-порционально»1^, а | • | обозначает абсолютное значение (модуль).

Чем больше значение к, тем быстрее сходимость и тем лучшеиспользуемый метод. Чтобы оценить константу С и порядок к, нам

*' Символ ос используется для обозначения эквивалентности поведения по-следовательностей при достаточно больших п. Обычно значение х неизвестно.Поэтому на практике С и к определяются из соотношений \х^п+1^ — х^\ —

( ) ^Ц^ . перев.

Page 222: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

15.4. 2D: Итерации для нелинейных систем 221

нужно выполнить по крайней мере три итерации и знать точноезначение корня или четыре итерации, из которых последняя рас-сматривается как «точный» корень.

М-файл: i_rate.m

Если вычисленная последовательность содержит более четырех ите-раций, мы можем воспользоваться М-файлом i_rate.m, чтобы по-лучить оценки порядка ее сходимости к. Поскольку каждые триитерации вместе с самой последней итерацией позволяют это сде-лать, М-файл f . ra te . m предлагает вам выбрать выдачу всех оценокили только средней оценки. Синтаксис вызова прост:

>> k = f_rate (root, hi)

где root есть последовательность итераций, полученных изfull_new.m или gauss_ga.m, и при hi = 1 запоминаются все оценки(в то время как при hi = 0 останутся лишь среднее и последнеезначения к).

В примере 1 мы можем вызвать f -jrate.m следующим образом:

» root = full_new('f_exln', 7.4, 20, 0.0001, 1) ;>> k = f_rate(root, 1)>> mean(k)

где команда mean находит среднее значение. В заключение рассмот-рим пример прямого использования root 1 '

» root = [ 3.46 3.5 3.61 3.735 3.755]'» К = f_rate(root, 1)

К = 3.8743 3.5091 VL Оценки порядка» А = mean(K)

А = 3.6917 У.'/. Его среднее значение

15.4. 2D: Итерации для нелинейных систем

В оставшейся части этой главы мы рассмотрим итеративные мето-ды решения систем уравнений. При этом будут использоваться дваfull_new.m и gauss_ja.m вместе с cont4.m и f jrate.m.

*' Для метода Ньютона в применении к полиномам с разделенными корнямиправильное значение fc = 2. В случае А; = 1 приближения сходятся как геометри-ческая прогрессия со знаменателем С, где \С\ < 1; при к < 1 сходимость будетхуже, чем у любой геометрической прогрессии. Поскольку при вычисленияхкорень х обычно неизвестен, вместо Ix'*1"1"1^ — х\ используются | х ' " + 1 ' — х^\ иl^fn) _ x^n~1^\. Вообще нахождение к требует повышенного внимания к вычис-лениям. — Прим. перев.

Page 223: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

222 Глава 15. Итерационные методы решения нелинейных уравнений

Обозначим систему m нелинейных уравнений (в векторной за-писи) как F(x) = 0, где

F = ( F ! , F 2 , . . . ,Fm)T и х = ( з ы 2 , . . . ,хт)т.

Обозначим якобиан матрицы F, т. е. матрицу всех первых производ-ных с элементами Зц = |^-, через 3. Для нас будет существеннымиспользование теоремы Тейлора, обычно излагаемой в курсе анали-за.

Если дана векторная функция F(x) cm — 2, т.е. х е R 2, то каж-дую компоненту функции F(x) можно разложить в ряд Тейлора:

1 7 / ( 0 ) (0К , , ( 0 ) ч ^ 1 , / (0)\^-^1 , . .=Fl{x\ \x\t) + {x1 -x\ >)^— + (a:2 -xy)-— + hot,

OXi ОХ%

= Ъ(хРА0)) + (*i - 4 0 ) ) | J + (x. - 4 0 ) ) g + hot,т.е.

F(*V) = F(x<°>) + J • [х^> - x<0'] + hot,где hot обозначает «higher order terms — члены высшего порядка» и3 есть якобиан в точке х — х<°):

J =

Перейдем теперь к методу Ньютона-Рафсона.

15.4-1. 2D: Метод 1 —метод Ньютона—Рафсона

В общем случае т измерений, т.е. х € Rm , теорема Тейлора даетлинейное приближение для F(x) в окрестности каждой точки х ^ .Если эта точка х*0' достаточно близка к точному решению х —х*, то, считая линейное приближение достаточно хорошим дляF(x) 1 ' , можно опустить члены высшего порядка и искать «корень»этого линейного уравнения, полагая

где якобиан 3 вычисляется при х = х^0'. Повторяя это процесс, мыполучаем метод Ньютона—Рафсона

x(n+i) = х(п) _ j - i ( x ( n ) ) F ( x ( " ) ) j п = 0,1, 2,... ,

где якобиан J вычисляется при х ~ х^п\

И вектор F(x( n + 1 )) пренебрежимо малым. — Прим. перев.

Page 224: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

15.4. 2D: Итерации для нелинейных систем 223

Как и в случае ID, можно надеяться, что последовательностьитераций становится все ближе и ближе к истинному решению прип —> оо. Здесь нельзя избавиться от матрицы J, так как она играетроль F'(x^) в случае одной переменной; таким образом, J~ 1(x'n ')соответствует 1/F'(x^n').

Теперь рассмотрим решение системы следующих двух уравне-ний: F(x) = (Fi, F 2 ) T = 0 относительно х = (х, у)т.Пример 3

Пусть

Г F i ( a r , y ) = s i n x - y 3 - 8 = 0, ( 1 5 3 )

Якобиан равен

J - (J-.) = I ~^ "V I = [ c o s x ~ 3 * У

Зададим начальное приближение для корня, скажем, х'0^ =

(4.7, -1.9) , и используем итерации Ньютона—Рафсона, чтобы

найти точное решение х = (5.075, —2.075)1".

Итерационную формулу можно записать так X * n + I ' = x ' n ' — Sn\где d(n) есть решение линейных уравнений J(x*n ')crn ' =F(x^ n ' ) .Так переписанная итерационная формула более эффективна, по-скольку позволяет избежать вычисления обратной матрицы для J(см. гл. 16). Конечно, в случае одной переменной разницы нет (вспо-мните §15.1). Как мы знаем, команда МАТЬАВ'адля нахождения(\{п) е с т ь П р 0 С Т 0 а ~ j \ р. Именно так реализован метод Ньютонав следующем М-файле.

М-файл: full_new.m

Чтобы выполнить пример 3, подготовим следующий М-файл-функ-цию f .я

function. [ F, J ] = anyname ( P ); '/, Пример 3 - систе-x = PCD; у = Р(2); V, ма уравненийF = [ sin(x)-y"3-8; 7. Уравнение_1

x+y-3 ] ; °/« Уравнение_2J = [ c o s ( x ) , -3*y"2; У, Якобиан 2 x 2

1, 1 ] ; У. матрица

Page 225: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

224 Глава 15. Итерационные методы решения нелинейных уравнения

(Замечание: Для решения трех и более уравнений М-файл-функцияподготавливается так же.) Теперь корень может быть вычислен лю-бой из команд

» Root=full_new('f_ex2n\ [4.7 -1.9] ') У, А» Root=full_new('f_ex2n', [4.7 - 1 . 9 ] ' , tni) 7. В» Root=full_new(Jf_ex2n\ [4.7 - 1 . 9 ] ' , t n i . t o l ) 7. С» Root=full_new()f_ex2n) , [4.7 - 1 . 9 ] ' , t n i . t o l , hi) '/, D

где tni —общее число требуемых (скажем, 12) итераций с началь-ным вектором х(°> = [4.7 — 1.9]т, tol — условие остановки вычис-лений при достижении заданной точности: for |Fj < tol (скажем,1.0Е—4) и hi определяет, нужно ли показывать результаты проме-жуточных итераций (hi — 1 означает «да», hi = 0 означает «нет»).Очевидно, что это идентично случаю ID.

15-4-2. 2D: Метод 2 -— метод Гаусса—Якоби

Итерационный процесс Гаусса—Якоби требует преобразовать сис-тему F(x) — 0 к виду х = G(x) и использует итерации

х ( п + 1 ) = G(x<n>) для п = 0,1,2,... .

Этот метод, известный под разными названиями в зависимости отконтекста, интуитивно прост. Как и в ID, даже метод Ньютона—Рафсона можно рассматривать как специальный случай методаГаусса—Якоби, если взять

G ( x ) = x - J-^xJFCx).

Для приведенного выше примера 3 систему F(x) = 0 можнопереписать как х = G(x) с

Здесь два уравнения в (15.3) поменялись местами, но это не отра-зится на решении.

М-файл : gauss_ja.m

М-файл gauss-ja.m, реализующий метод Гаусса—Якоби, работаеттак же, как full-new.m, но их главное различие лежит в подготовке

Page 226: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

15.5. 2D: Графики линий уровня и отображение сходимости 225

1.5 =•

0.5 -

-0.5 -

-1.5

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

Рис. 15.4. График линий уровней функции Fi(x,y) двух переменных.

М-файла-функции. Она упрощается, поскольку здесь не использу-ется якобиан J. Так, приведенный выше пример 3, можно решить(аналогично случаю fulljnew.m) как

» Root = gauss_ja()f_ex2g) , [4.7 -1.9] ') 7. А

» Root = gauss_ja('f_ex2g\ [4.7 -1.9] ' , t n i , t o l , h i ) 7, D

где укороченная М-файл-функция f_ex2g.m имеет вид

function G = fun_name ( Р ); 7. Пример 3 - (2 переменных)

х = Р(1); у = Р(2); У, Метод Гаусса - ЯкобиG = [ 3-у; У, Здесь G имеет размер 2

-(8-sin(x))~(l/3) ]; 7. Обходим комплексный корень

15.5. 2D: Графики линий уровня и отображениесходимости

Если мы нарисуем значения функции F, корни системы F(x) = Оокажутся пересечениями линий нулевого уровня для компонент F.Это дает грубую подсказку о том, где расположены корни и откудамы должны начать поиск; обратитесь к М-файлу cont4. m.

15-4196

Page 227: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

226 Глава 15. Итерационные методы решения нелинейных уравнений

При построении графика линий уровня очень важно сформиро-вать равномерную сетку, покрывающую подходящую прямоуголь-ную область, что получаем, используя команду1' meshgrid. Предпо-ложим, что мы хотим нарисовать линии уровней функции F\ (х} у) ={х6 - у3 ~ 0.5)ехр(-г2 - у2) в области Q = [-2, 2] х [-2, 2]. Дляэтого нужно выполнить (см. результат на рис. 15.4)

хО = -2 : 0.4 : 2;уО = -2 : 0.25 : 2; % Два ID вектора[х уЗ = meshgrid (хО, уО) ; '/, Две матрицыFl=(x. "6-у. "3-0.5) .* ехр(-х."2-у."2); 7, Матрица F1M=max(Fl) ; m=min(Fl); */, Векторы-строкиV=[m 0 М] ; 7, Некоторые знач. F1

Cl = contour(x,y,Fl, V, '-г'); 7. ГЛАВНЫЙ шагclabel(Cl); 7, Необязат. надписиgrid 7. Необязат. сетка

Если в командной строке перед определением множества V возьмемM=max(max(Fl)) и m=min(min(Fl)), то М и m станут скалярами иV будет иметь длину 3. Элементы V можно выбирать произвольноиз области значений2' F1.

Если линии нулевого уровня второй функции, например функ-ции F2(x, у) =• 20*(х2 — у2)-5 = О, накладываются на линии нулево-го уровня Fi(x, у) (при этом они должны отличаться маркировкой),то их пересечения и будут давать решения. Это и делается (во вто-рой части) М-файлом cont4.m; результат приведен на рис. 15.5, гдемы можем грубо оценить положение четырех корней.

Очевидно, приближение корня (одного из четырех) для системыFi(x,y) = 0 и F2(x,y) = 0, полученное в результате сходящегосяитерационного процесса, будет находиться вблизи линии нулевогоуровня (или пересечения таких линий). Более того, если нарисоватьвсе итерации на графике линий уровня, то увидим ломаную линию,сходящуюся к корню. В качестве примера выполните следующее(можете модифицировать cont4.m вычисление:

» Root - [ 0.5 -1.5; 0.25 -1.7; 0.55 -0.25;» - 0 . 4 5 - 0 . 1 ; 0.1 0.55; -1.0 0.83;» хО=-2:0.4:2; у0=-2:0.25:2; R=Root;» [х у] = meshgrid (хО, уО) ;

: ' Пользователям MATLAB'a V3.5 команда известна как meshdom.2> В V должно быть задано более одного элемента, а если элемент не попал в

область значений, то для него ничего не делается. — Прим. перев.

Page 228: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

15.5. 2D: Графики линий уровня и отображение сходимости 227

1.5 -

0.5 -

-0.5 -

-2 -1.5 0.5 1.5

Рис. 15.5. Пересечение линий нулевого уровня для функций Fi(x,y)и F2(x,y) (*-для Pi -О; о - д л я F2 = 0).

1.5 -

-0.5 -

-1.5 -

Рис. 15.6. График линии F\ (x, у) = 0 и сходящаяся последовательностьитераций.

15"

Page 229: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

228 Глава 15. Итерационные методы решения нелинейных уравнений

» Fl=(x."6-у."3-0.5) .* ехр(-х."2-у."2) ; % Матрица F1

>> V=[-eps 0 eps] ; °/, Почти нулевой вектор

» Cl = contourCx.y.Fl.V, '-г'); 7. ГЛАВНЫЙ шаг

>> clabel(Cl); grid ; hold on;

» plot(R(:fl),R(:.2),'-g

;, R(:,1),R(:,2),'ow');

» hold off

График показан на рис. 15.6, где Root содержит следующие итера-ции:

Root = 0.5 -1.5 7, х"(0) - начальный вектор

0.25 -1.7

0.55 -0.25

-0.45 -0.1

0-1 0.55

-1.0 0.80 '/, Последняя итерация -

X как корень

(Конечно, такие значения Root должны получаться непосредствен-но из fulljiew.m и gauss.ja.m.)

15,5.1. Порядок сходимости

Различные итерационные схемы сходятся к решению с разнымискоростями. Как и для ID, сейчас мы рассмотрим порядок сходи-мости. Если последовательность векторов х^0', х^1', . . . , х^п\ . . .удовлетворяет условию j|x*n + 1^ — xjj ее | j x ^ — хЦ*. т.е.

для некоторых констант С и к (не зависящих от п), то метод, поро-дивший эту последовательность итераций, имеет порядок сходимо-сти к. Здесь х есть решение системы F(x) = 0, а || • || обозначаетнекоторую норму (скажем, 2-норму — норму в L2; для справок на-берите help norm и обратитесь к гл. 16 за дальнейшими подробно-стями).

Чем больше значение к, тем быстрее сходимость и тем лучшеиспользуемый метод. Как и для ID, чтобы оценить константу С ипорядок сходимости к, нам нужно выполнить следующий М-файл.

М-файл : f_rate.m

Если полная последовательность содержит более четырех итераций,мы можем воспользоваться М-файлом f jrate.m, чтобы вычислить

Page 230: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Упражнения 229

оценки для к. Если root — последовательность итераций, получен-ная с помощью full_new.m или gauss_ga.m, выполните

>> k = f_rate (root, hi)

где при hi — 1 выводятся на экран все оценки (в то время как приhi = 0 будут выведены лишь среднее и последнее значения к).

В примере 3 мы можем вызвать f jrate.m следующим образом:

» Root=full_new(>f_ex2n3,[4.7 - 1 . 9 ] ' , 30,1.0Е-4, 1) °/. D» К = f.rateCRoot, 1)» mean(К)

где mean находит среднее значение. В заключение зададим явно

» root = [ 3.46 2.5;3.5 2.59;3.61 2.65;3.735 2.69;3.755 2.695]

и вызовем f jrate.m следующим образом:

>> КО = f .rateCroot, 0) У,'/, или» Kl = f_rate(root, 1)

чтобы получить в результате (среднее = 2.8728)

КО = 2.8728 3.3453

К1 = 2.4003 3.3453

Упражнения

15.1 Используя full_new.m и х^ ~ 1.5, найдите вещественныйкорень функции

F{x) = ех + е~х + 2 cos x - 6.

15.2 Воспользуйтесь gauss.ja.m и снова выполните упр. 15.1, вы-брав две разные функции G(x), чтобы найти корень на от-резке [1, 2]; например, можно взять уравнение для итерацийв виде х = 1п(6 — е~х — 2cosx).

15.3 Покажите, что, если \х^ ~~ х\ = С\х^ — х\к, \х^ — х\ =С\х^ — х\к и все члены предполагаются отличными от нуля,то справедливы формулы

( а ) к ~ I n , , . , т I I n .• •••,••. г ;

Page 231: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

230 Глава 15. Итерационные методы решения нелинейных уравнения

(Ь) С=\х^-х\/\х^-х\к.15.4 Находившееся в состоянии покоя небольшое тело начинает

свободное падение, встречая сопротивление воздушной сре-ды. Используя второй закон Ньютона при моделировании этойзадачи, можно получить следующее уравнение для расстоя-ния Н (в метрах), которое пройдет падающее тело за t секунд:

H{t) = 12.25 [* + 1.25(е-0"8* - 1)] .

Чтобы определить время, необходимое для прохождения те-лом 6.125 м, нужно решить уравнение H(t) ~ 6.125, т. е.

F(t) = 1.25e"°-8t + t - 1.75 = 0.

Воспользуйтесь М-файлом gauss _ja.m для решения уравне-ний каждым из следующих методов:(a) Методом Ньютона—Рафсона, полагая Go {t) = t—F(t)/F'(t)

(как в §15.2);(b) Методом Гаусса-Якоби с Gi[t) = 1.75 - 1.25е-°-8*;(c) Методом Гаусса— Якоби с G2(t) =t—j—• F ( < )

V ' J Z W 0-(O.8t+O.6)exp(-O.8t)начиная каждый раз с ^°' = 0.5. При этом

(i) найдите решение с четырьмя верными десятичными зна-ками;

(И) если возможно, оцените порядок сходимости в (i);(iii) определите и изобразите область сходимости.

Подсказка: Возьмите в качестве области поиска [—5,5] ивыполните axis ( [-5 5 -4 4]) после plot.

15.5 Дана нелинейная функция F(x) = 0.6 - (3 + lnx)x + ех:(a) Получите четыре случайных числа xi, X2, #з и ^4 из ин-

тервалов (1,1.3), (1.4,1.5), (1.5,1.6) и (1.7,2) соответствен-но и вычислите F(x) при х — х\, Х2, хз, ХА • Для каждогокорня F(x) на отрезке [1,2] найдите содержащий его ин-тервал. Отметьте все четыре точки на графике функцииF(x) в некоторой области поиска и проверьте, что суще-ствует ровно два корня а и 0 из области [1, 2].

Подсказка: Примените теорему о промежуточных зна-чениях знакопеременной функции.

(b) Примените метод Гаусса—Якоби (tol = 10~5) к функцииG(x) = 0.6 — (2 + In x)x + ех, чтобы вычислить корни а и/?, и оцените порядок сходимости в каждом случае; еслитакая форма G(x) не годится для определения /3, вам при-дется найти что-нибудь более подходящее.

Page 232: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Упражнения 231

15.6 Используя теорему Тейлора для одной переменной, докажи-те, что для некоторой функции Я = Я(х) = H{xi,x2) двухпеременных (т = 2),

Я(х) - Я(х<°>) + (х<4 - х<°>) • УЯ + hot,

где УЯ = gradЯ = (§^г, §^г)- Воспользуйтесь этой форму-

лой, чтобы найти линейное приближение для

Дополнительно: Можете ли вы обобщить этот результат наслучай трех переменных (т = 3) и дать пример?

15.7 Рассмотрите систему F(x) = 0, заданную уравнениями

= х\х\ — cos(rci -f x<i) = 0.

(a) Используя full_new.m и х'°* — (—2,1)т, найдите кореньс четырьмя точными знаками.

(b) Используя gauss-ja.m и х ^ = (0.5,0) т, найдите корень спомощью не более 40 итераций по формуле G = X — LJJ\F.Возьмите ш = 0.5 и и = 1.5.Подсказка: Когда ш = 1, метод идентичен методу Ньюто-на. Можете вы найти другое работающее представлениедля G(x)?

15.8 Покажите, что, если | | х ^ — х | | / | | х ^ — x|jft = ||х^2'—хЦ/Цх^1'—x|jfc = С,и все члены предполагаются отличными от нуля, то

И-Л2) _ „и / пх(1) _ х м

HxW-x l/у.\ п _ 1 | v ( 2 ) _ v l l / I I Y ' 1 ) — Y I I ^

\V>) Ly — | | A Л.Ц/ЦА A | | .

15.9 Продолжим упражнение 15.7:(a) используя сетку с шагом 0.2 в области

R = {х : - 2 < хх < 1.6, 0 < х2 < 2},установите на основе графиков линий уровня для F\ и F%,что имеется два корня в R;

(b) для корня, ближайшего к точке (0.5,0.0)т, отобразите награфике линий уровня сходящиеся к нему итерации Нью-тона—Рафсона и найдите их среднюю скорость сходимо-сти. Затем на том же графике постройте итерации, начи-нающиеся в точке (—2,1)т.

Page 233: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

232 Глава 15. Итерационные методы решения нелинейных уравнений

15.10 Рассмотрите систему уравнений F(x) = 0 вида

{ Fi (х) = 12аг! - Zxl - 4z 3 - 7.17 = 0,i=Mx) = х\ + Юх2 - хъ - 11.54 = 0,F 3 ( x ) = х\ + 7х3 -7.631 = 0.

(a) Выпишите якобиан от F и воспользуйтесь методом Нью-тона—Рафсона с х'°) = (0, 0, 0 ) т , чтобы получить реше-ние с пятью точными десятичными знаками.

(b) Используйте третье уравнение, чтобы исключить ж3 и спомощью метода Ньютона—Рафсона найдите решение при-веденной системы из двух уравнений х\ и Х2 с пятью точ-ными десятичными знаками. Оцените ггз-

(c) Дополнение. Используя сетку с шагом 0.1 в области

R = { х : ~5 < хг < 25, -15 < х2 < 5},

постройте графики линий уровня для Fi и i-2, исходя из(Ь), а потом определитесь по поводу общего числа реше-ний исходной системы. Методом Ньютона—Рафсона най-дите оставшиеся решения с пятью точными десятичны-ми знаками. Выпишите вариант итерационной формулыГаусса—Якоби для исходной системы и исследуйте сходи-мость этого метода к каждому корню.

(d) Дополнение. Существуют другие методы решения не-линейных уравнений, но мы оставляем вам самим разо-браться с командой MATLAB'a fsolve, в основе кото-рой 1 ' лежит нелинейный метод наименьших квадратов.Сравните ее с full-new.m по быстродействию.

1 ' В некоторых ранних версиях MATLAB'a {включая 4.0) эта команда недо-ступна.

Page 234: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

16Матрицы и решение линейных систем

Линейные системы алгебраических уравнений — один из самыхважных объектов математики, поскольку большинство других объ-ектов, методов и задач используют их или сводятся к этому пред-мету.

Цель работыТак как в численных методах используются усечения (отбрасыва-ния членов ряда) и их точность конечна, мы попробуем оценить воз-действие этих факторов на точность получаемого решения. Боль-шинство из нас знает кое-что из теории линейных систем, но не мо-жет оценить, хорош или плох применяемый метод решения на ком-пьютере, чем определяется точность численного решения и можноли улучшить полученное решение. Большой круг задач, возника-ющих на практике, часто приводят к разреженным матрицам, ипоэтому для них были разработаны специальные методы. В даннойработе обсуждаются все эти вопросы.

Использованные математические понятияВы уже знаете, что для решения системы Ах = b достаточно про-сто выполнить х — А\Ъ. Чтобы исследовать зависимость решениях от матрицы А (или ее числа обусловленности) и вектора правойчасти Ь, мы используем регулируемое число цифр в наших вычисле-ниях. Приводятся примеры уточнения итераций. В заключение мыобсуждаем, как разреженная матрица может быть преобразована ксжатой ленточной форме с помощью матриц перестановок.

Используемые возможности MATLAB'aСемь М-файлов lin_solv.m, chop.m, Iu2.m, Iu3.m, Iu4.m, solv6.mи spar.ex.m используются при выполнении работы. Тексты послед-них двух М-файлов приводятся в этой главе. Здесь chop .m, регули-рующий число используемых цифр, применяется в Iu2.m, Iu3.m иIu4.m. Вы также приобретете полезный опыт применения командMATLAB'a как к плотным, так и к разреженным матрицам.

Page 235: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

234 Глава 16. Матрицы и решение линейных систем

16.1. Подсчет числа операций

Подсчет числа операций показывает, как много операций с плаваю-щей точкой (flops) необходимо для решения данной математическойзадачи. Любое сокращение этого числа ведет к ускорению решения.В данной работе мы попытаемся осветить три основных подхода кдостижению этой цели. Первый подход, обсуждаемый ниже, заклю-чается в том, чтобы реализовать существующий алгоритм более эф-фективным образом с целью ускорить его работу. Второй подход,обсуждаемый в § 16.2 и § 16.3, предлагает искать новые методы ре-шения той же задачи. Третий подход, обсуждаемый в § 16.5, заклю-чается в переформулировке данной задачи так, чтобы применениесуществующих методов было более эффективным.

Чтобы пояснить первый подход, рассмотрим простую задачу вы-числения z = ЛВСЬ, где А. В, С — п х n-матрицы, а Ь —вектордлины п. Простейший способ —это вычислить матрицу D = ABCпрежде выполнения z = СЬ; это требует 4п3 операций с плавающейточкой (flops). Лучше будет метод, состоящий в выполнении трехумножений матрицы на вектор, а именно zi = Cb, z? = Bz\, z =Az2'. здесь требуется лишь &п2 операций (флопов).

Следовательно, подсчет операций решающим образом определя-ет эффективность различных методов. Мы можем получить оцен-ки числа необходимых операций теоретически из математическихформул, но эту же работу легко проделать с помощью командыMATLAB'a f lops. Чтобы продемонстрировать ее использование,рассмотрим второй метод в приведенном выше примере:

» flops (0); п=2000; 7, Установим счетчик операций

7, в нуль

>> A=rand(n) ; B=rand(n); '/. Формирование матриц

>> C=rand(n) ;b=rand(n, 1) ;'/, Формирование матриц

» z=C*b; z=B*z; z=A*z; У, Выполнение операций

» w=flops, ratio=w/n~2 % Вычисление флопов

в результате чего вы получите w ~ 24000000 и ratio = 6. Обратитевнимание, что rand не учитывается при работе команды f lops 1 ' .

1 ' Все измерения быстродействия очень относительны и зависят как оттактовой частоты и архитектуры процессора компьютера, так и от версииMATLAB'a. В целом результаты команды flops могут служить лишь весьмаприближенным ориентиром при оценке быстродействия того или иного мето-да. Даже специальные приемы (оценки по Гиббсону) не позволяют получитьздесь слишком точные результаты для сколько-нибудь сложного вычислитель-ного алгоритма. — Прим. перев.

Page 236: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

16.2. Плотные линейные системы 235

Таблица 16.1. Оценивание эффективности численного методапо временным затратам

flops

» flops(0)

>> 'Метод'>> t=flops

E t =81

tic/toe» tic>> 'Метод*>> t=toc

t = 6.09

cputime

>> tO=cputime;» 'Метод'» t=cputime;» t=t-tOt = 5.27

etime

» tO=clock;>> 'Метод'>> t=clock;» t=etime(t,tO)t = 3.13

Помимо flops, еще три команды используются при отслежива-нии времени, необходимого MATLAB'y для выполнения определен-ных вычислений; это показано в табл. 16.1, где обозначение «Метод»заменяет отслеживаемые операторы численного метода, а строка«Е» показывает результаты после выполнения простой операцииrand(9)*5, т.е. если вместо «Метод» подставить rand(9)*5 1 ' . Обра-тите внимание, что etime определяет разницу в значениях clockи переводит ее в секунды; наберите help etime, чтобы узнать воз-можности команды.

Замечание. Вообще говоря, многие математические методы, кра-сивые в теоретическом плане и полезные при доказательстве тео-рем существования, не годятся для использования в компьютерныхвычислениях. Они либо требуют больших временных затрат (дажегоды), либо приводят к большим ошибкам; обратитесь к §16.2.3.Например, представление А"1 = adj(A)/det(.4) хорошо для теории,но не годится для компьютерных вычислений из-за слишком боль-шого числа необходимых операций. Здесь adj(A) обозначает присо-единенную матрицу для А — матрицу алгебраических дополнений.Следовательно, анализ, отбор (проверка) и разработка практичныхи полезных численных методов — главная цель вычислительной ма-тематики.

16.2. Плотные линейные системы

В дальнейшем вы можете сначала выполнить команду MATLAB'аformat compact для управления выводом.

11 При использовании фиксирующих время команд вычисления должны бытьболее объемными: счетчик времени суммирует дискретные интервалы пример-но по 0.02 сек, и поэтому полное время счета должно быть не меньше 0.2-0.3сек. — Прим. перев.

Page 237: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

236 Глава 16. Матрицы и решение линейных систем

16.2.1. Решение системы Ах = Ъ в MATLAB'e и выборведущего элемента

Для квадратных матриц простая операция х = Л\Ь дает результат,отличный от х = inv(A) * b, поскольку каждая из них используетсвой метод решения одной и той же задачи. Убедитесь в этом напростом эксперименте, прежде чем идти дальше. Сначала сгенери-руйте случайную матрицу А размера 8 x 8 , выполнив A=rand(8), ивектор-столбец b длины 8, полагая b=rand(8,1). Затем наберите

» flops (0) ; °/, Установим счетчик операций в нуль .

» х = А\Ь У, А размера 8 х 8 и b размера 8 x 1 .

>> fI = flops '/, Вывод числа выполненных операций

>> flops (0) ; '/о Установим счетчик операций опять

'/, в нуль

>> х = inv(A)*b>> f2 = flops У, Должно быть больше

Здесь и всюду далее всегда можно вместо flops использовать дру-гие команды MATLAB'a, перечень которых дан в табл. 16.1.

Фактически используемый в MATLAB'e алгоритм решения сис-темы Ах = b основан на методе исключения Гаусса, работа которо-го может быть разбита на три этапа:

(1) Вычисляются нижняя треугольная матрица L, верхняя треуголь-ная матрица U и перестановочная матрица Р, такие, что РА —LU'. Здесь Р — просто единичная матрица / с переставленны-ми столбцами. Эта перестановка гарантирует, что при построч-ном приведении новой матрицы А± = РА к треугольной формевсе множители, участвующие в процессе исключения, меньшеили равны единице по модулю. Использование Р приводит к то-му, что мы решаем систему РАх = РЪ или, точнее, Ы1х = РЪвместо Ах = Ь. Такой процесс известен как частичный выборведущего элемента и помогает подцерживать точность вычис-лений.

(2) Решаем систему Ьу = РЪ (нахождение у называется прямойподстановкой).

(3) Решаем систему Ux = у (нахождение х называется обратнойподстановкой).

Первый этап, известный как треугольное разложение (или LU-раз-ложение), связанное с построчным приведением к треугольной фор-

Page 238: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

16.2. Плотные линейные системы 237

ме 1 ' , является наиболее важным шагом. Это может быть сделанопосредством команды Ги. Поэтому следующие действия2' эквива-лентны выполнению х = А\Ъ

» [L,U,P] = lu(А); % Находим матрицы L, U и Р (A1=PA=LU)>> В = Р*Ъ ; '/, А х = b переходит в А1 х=В

*/, или LU х=В» у = L \ В ; У, Решаем L у = В как L (U х) = В>> х = U \ у У, Решаем U х = у ---

16.2.2. Многократное применение L и U

Допустим, мы хотим решить системы Ах = b и Ах = е (в сущности,это линейные системы с одинаковыми матрицами, но различнымиправыми частями). Использовать дважды оператор \ — не самаялучшая идея, поскольку каждый раз MATLAB будет находить LU-разложение матрицы РА.

Лучше сделать следующее3':

У, Найдем матрицы L.U.P и (PA=LU)У, Подготовим РАх=РЬ (систему 1)'/. Решаем РАх=РЪ% Решаем РАх=РЬУ, Подготовим РАх=Ре (систему 2)У, Решаем РАх=Ре% Решаем РАх=Ре

16.2.3. Значащие десятичные разряды

В MATLAB'e и большинстве других компьютерных пакетов и язы-ков в вычислениях на деле используется только конечное число де-сятичных цифр, так что большая часть чисел округляется. Это по-рождает вычислительные ошибки. Чем больше делается шагов ввычислениях, тем больше итоговая ошибка. Этим, в частности, объ-ясняется, почему мы всегда должны отказываться при компьютер-

LL,U,P] = In(A);В = P*bz = Lx = U

\\

E = P*ez = Lx = U

\\

*Вz

;Ez

1 ' Команда MATLAB'a rref выполняет это, но не следует от нее ожи-дать многого. Более полезна другая команда —rrefmovie. К счастью, доступ-ны тексты программ rref.m и rrefmovie.ш. Выполните A=round(rand(6)*7);Ш J]=rrei(A), rrefmovie(A).

2) Обратите внимание, что у = L\B не требует так много операций, как А\Впотому, что MATLAB достаточно умен, чтобы распознать треугольную природуматрицы L. То же верно и для х = U\y. Проверьте это с помощью flops.

3 ' Достаточно выполнить X = Л\В, чтобы решить все системы Ах = Ь состолбцами Ъ из В. — Прим. перев.

Page 239: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

238 Глава 16. Матрицы и решение линейных систем

ных вычислениях от методов, подобных х = inv(A) * b, посколькуон не только дольше работает, но и накапливает большие ошибки.

Все вычисления в MATLAB'e по умолчанию проводятся с 16десятичными цифрами. Так как мы хотим исследовать влияниевыполнения арифметических операций с конечным числом разря-дов на точность вычислений, то в этой работе мы будем иметьдело главным образом с i-разрядной арифметикой 1 < t < 16.М-файл chop.m 1 ' дает нам возможность легко проделать это. Вы-полните h e l p chop, chop(0.1364, 2) * 10 или c h o p ( l . 2 2 3 3 4 5 ,6) и c h o p ( l .223345, 5) , чтобы понять, как он работает.

16.2.4. М-файлы: l in_so lv .m, Iu2.m и Iu3.m

Будем исследовать важность выбора ведущего элемента и числазначащих цифр на примере решения системы Ах = Ъ. ГлавныйМ-файл l in_solv .m вызывается следующим образом:

>> х = l i n _ s o l v ( ' l u . n a m e ' , A, b , t) ;

где lu_name есть имя М-файла-функции факторизации (разложе-ния), которое нужно заменять на Iu2, Iu3 или Iu4. Здесь t указы-вает на то, что все вычисления проводятся с заданной точностью в£ десятичных цифр.

М-файл-функция Iu2.m математически совпадает с встроеннойфункцией (системным файлом) lu.m за исключением того, что те-перь мы используем только (-разрядную арифметику. Так, если вызададите t = 16 с помощью Iu2.m, то l in_solv .m выдаст такой жерезультат, как и х — А\Ъ.

М-файл-функция Iu3.m не делает частичного выбора ведуще-го элемента и используется здесь лишь для сравнения, а не длявычисления точного решения, так как не содержит перестановоч-ной матрицы Р и допускает множители, большие единицы по мо-дулю. М-файл Ги4. m всегда дает тот же результат, что и I u 3 . m, нов случае разреженных матриц использует меньшее число операций(флопов); см. §16.5.

Два М-файла I u 2 . m и I u 3 . m могут быть использованы и самипо себе для разложения матриц (подобно lu)

» [ Ь , и , Р ] = 1 и 2 С А ^ ) ; '/.Разложение A (t цифр и Р)

» [L,U] = l u 3 ( A , t ) ; '/.Разложение A (t цифр и нет Р)

Таким образом, если мы решаем систему Ах — Ъ командой

» х - l i n _ s o l v ( ' I u 2 ' , A, b, t) ;1) В версиях 5.0 и выше chop — это уже команда. — Прим. перев.

Page 240: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

16.3. Алгоритм итерационного уточнения 239

то будем говорить, что используется метод исключения Гаусса с ча-стичным выбором ведущего элемента. Подобным же образом будемговорить, что в команде

» х = l in_solv( ' I u 3 ' , A, b, t) ;

используется метод исключения Гаусса без выбора ведущего эле-мента.

16.3. Алгоритм итерационного уточнения

Если у — приближенное решение системы Ах ~ Ь, определим егоневязку как г = b — Ay, которая может не быть нулевой (или ма-лой). После решения системы Ае = г можно ожидать, что xi = у + ебудет лучшим приближением к истинному решению х. Процедуруможно повторить, если невязка для xi недостаточно «мала», и мыполучаем итерационный процесс. Это основная идея алгоритма ите-рационного уточнения1', используемого для улучшения решения:

Шаг 0. Примените исключение Гаусса с заданной точностьюt < 16, чтобы решить систему Ах = Ъ, и сохраните матрицыL, U, Р. Обозначьте приближенное решение через у. (Замеча-ние. Р = I, если не используется частичный выбор ведущегоэлемента.)

Шаг 1. Вычислите невязку г — b — Ay. Если г = 0 или если еенорма2' достаточно мала, процесс заканчивается и полагаетсях = у.

Шаг 2. Используйте те же самые L, U, Р, чтобы решить системуLUe = Рт.

Шаг 3. Обновите решение: у + е -¥ у.Шаг 4- Вернитесь к Шагу 1 и повторите его и т. д.

Значения г и е говорят о точности приближения у. Они могут бытьизмерены с помощью команды MATLAB'a norm.

г> Отметим, что итерационное уточнение тесно связано с другой идеей, назы-ваемой остаточной коррекцией, когда А представляет собой другие операторы(например, дифференциальные, интегральные, нелинейные). Эта идея лежит воснове современного и мощного численного приема — многоуровнего (или мно-госеточного) метода.

2) В MATLAB'e, если г € TV1, то р-норма вектора есть | | r | | p = norm(r,p), где ресть либо произвольное положительное целое, либо 'inf' (т.е. оо-норма). Одна-ко для матриц команда MATLAB'a norm может вычислять лишь четыре нормы,а именно, ||.4|| = погш(А, р), где р равно 1, 2, 'inf' или ' fro ' , что соответ-ствует 1-норме, 2-норме, оо-норме и F-норме (Фробениуса) для векторов. Поумолчанию norm(A) есть 2-норма.

Page 241: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

240 Глава 16. Матрицы и решение линейных систем

16.4. Анализ возмущений системы Ах = b

Вообще говоря, точность решения х = А\Ъ зависит от свойстваматрицы А, называемого ее обусловленностью. Мерой обусловлен-ности является число обусловленности, которое определяется какcond(A) = НА"1!! !|A|j, где \\ • || может быть любой матричной нор-мой. Для вычисления числа обусловленности в 2-норме MATLABимеет команду1' cond, так что достаточно набрать cond(A). Для«хороших» матриц число цифр t не влияет сильно на точность вы-числений, но для «плохих»2' (или плохо обусловленных) матрицзначение t заметно влияет на результаты.

Теперь рассмотрим точность решения при t < 16. Пусть Ах = bобозначает истинную линейную систему, не использующую окру-гления при вычислении Аи Ь. Однако из-за округлений и ошибокпри сборе данных наше численное решение у на самом деле удов-летворяет только так называемой возмущенной (близкой) системе

(А + ДА)у = Ь + ЛЬ.

Здесь (А + ДА) рассматривается как матрица А с i-разрядной точ-ностью и аналогично для b + ДЬ. Погрешности ДА (матрица) и ДЬ(вектор) обычно известны. Например, когда мы используемt-разрядную арифметику, то

\\AA\\ = norm(A - Al) и ||ДЪ|| = norm(b - Ы),

где А\ = chop(A,£) и Ы = chop(b,t).Точность решения говорит о том, насколько близко численное

решение у к точному решению х. Линейная система хорошо об-условлена, если малые значения |(ДА||/!|А|| и |(ДЬ||/{|Ь|| приводятк малым значениям для ||х — у||/||х||. В противном случае систе-ма плохо обусловлена. Конечно, мы хотим знать, как эти величинысвязаны между собой. Имеется следующий результат.

Теорема 16.1 Допустим, что точная система есть Ах — b, aмы фактически решаем систему

(А + ДА)у = b + ДЬ.

^ Чтобы вычислить cond(A) в других нормах, мы можем воспользовать-ся определением, содержащим Л " 1 , но это может стоить много флопов. Для1-нормы попробуйте condest(A).

2 ' Для «плохих» матриц, чтобы достичь хорошей точности, стратегия реше-ния заключается в преобразовании этой матрицы в «хорошую», а не в требова-нии неограниченного увеличения t. Такой метод называется предобусловлива-нием.

Page 242: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

16.4. Анализ возмущений системы Ах = b 241

Тогда для относительной ошибки имеем

|х-уЦ < г Л1АЛЦVV P I I I N ; '

гдеc = сопс!(Л)

Следовательно, мы говорим, что система Ах = Ъ хорошо обусло-влена, если константа С не слишком велика, и плохо обусловлена,если она велика. Для целей нашей работы будем называть задачуплохо обусловленной, если С > 50.

Пример. Решите случайную линейную И х 11-систему Ах — b в t-разрядной арифметике при t — 2; об использовании rand см. гл. 6.Определите обусловленность этой системы. Следующий файл выможете найти под именем solv6.m:

randC'seed',1998); n=ll; У, Задаем 'seed'А = 10*rand(n,n) ;Ъ = rand(n,l); '/, Генерируем системуt = 2 ; У. Задаем число разрядовх = А \ Ъ ; У. 'Точное' решение

у = lin_solv( 'Iu3', A, b, t) ; У, Численное решениеA_rel=norm(A-chop(A,t))/norm(A) ;*/, Относит, ошибка в Аb_rel=norm(b-chop(b,t))/norm(b) ;У, Относит, ошибка в bk = cond(A) ; '/, Число обусловленности

С = к / ( 1 - к * A_rel ) ;if С >= 50, dispС'Задача плохо обусловлена . . . ' ) ,else, dispС'Задача хорошо обусловлена.'), end

error „theory = C*(A_rel+b_rel) У, Погрешность по формуле

7, из теоремыerror_found = norm(x-y)/norm(x)'/, Погрешность по точному х

'/. и численному у

Вы увидите, что С — 97.561, так что задача плохо обусловлена;error.theory = 0.7618 —ошибка, предсказываемая теорией (боль-шая), error_found=0.3381 — полученная в расчете ошибка (она мень-ше).

16-4196

Page 243: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

242 Глава 16. Матрицы я решение линейных систем

16.5. Разреженные матрицы, упорядочение графа иперестановки

Матрицы, встречающиеся в задачах прикладной математики, ча-сто оказываются разреженными: под «разреженными» мы понима-ем матрицы, у которых много (скажем, 50%) нулевых элементов.Следовательно, если в выполнении операций с такими матрицамибудут участвовать в основном ненулевые элементы, то это приведетк ускорению работы алгоритмов. Один из общих подходов состоитв использовании перестановочных матриц для передвижений нену-левых элементов таким образом, чтобы привести матрицу к жела-тельному виду (например, ленточному, когда матрица имеет нуливсюду, кроме главной диагонали и небольшого числа поддиагона-лей).

Для графического изображения разреженной матрицы можноиспользовать команду MATLAB'a spy. Например, выполните сле-дующее (это М-файл spar_ex.m)

» А = diag(0:9); % Формируем матрицу размера 10» spy(A); grid У. Посмотрите, как это выглядит>> а = eye(10,l)*ones(l, 10)*2; У, Ненулевая строка 1>> b = ones(10, l)*eye(l, 10)*3; 7. Ненулевой столбец 1> > А = А + а + Ь ; '/, Формируем матрицу

7. «наконечник стрелы>>>> spy(A); grid % Посмотрите, как это выглядит

'/, теперь

Чтобы оценить методы работы с разреженными матрицами, вы-

полните

» А1 = А; У, Это та же матрица, что и выше

» flops (0) 7, Установим счетчик в нуль7. (можно также tic/toe)

>> [LI Ul]=lu3(Al); 7. Разложите А как полную матрицу>> Work_l = flops '/, Число выполненных операций>> al = symrcm(Al) 7, Найдите новое упорядочение

7, для матрицы А1

» А2 = Al(al,al) 7. Переупорядочение А2=Р*А1*Р>» flops (0) 7. Установим счетчик в нуль

У, Сможно также tic/toe)

>> [L2 U2]=lu4(A2) ; У, Разложите А как разреженную матрицу» Work_2 = flops У, Число выполненных операций Сновых)

Page 244: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

16.5. Разреженные матрицы, упорядочение графа и перестановки 243

Вы обнаружите, что Work.l = 8434 и Work_2 = 1506. Вся хитростьздесь в том, что мы нашли новое упорядочение (строк и столбцов)матрицы Л1; чтобы увидеть и применить перестановочную матри-цу, выполните

>> Р = еуе(10); '/, Создайте единичную матрицу 10 х 10» Р = Р ( а 1 , : ) '/, Переупорядочиваем ее строки» A3 = Р*А1*Р' '/. Здесь A3 = А2

Как мы знаем, Р — ортогональная1' матрица, и поэтому А, А2и A3 имеют одни и те же собственные значения. Очевидно, приопределении собственных значений удобнее работать с A3.

Наконец, покажем, как представить разреженные матрицы с по-мощью графов. Разреженную матрицу АпХп можно рассматривать,как состоящую из нулевых и ненулевых элементов, и каждый не-нулевой элемент представляет собой взаимосвязь (или взаимодей-ствие) между двумя числами (т.е. индексами строк и столбцов, при-нимающими значения из одного и того же множества 1, 2, . . . , п).В теории графов граф Gen узлами (не все узлы связаны друг сдругом) может иметь переменное число ребер, каждое из которыхпредставляет собой связь между двумя узлами.

Следовательно, разреженная матрица А естественным образомможет быть сопоставлена с графом G(A), если мы отождествим ин-декс первой (индекс матрицы) с узлом последнего (узлом графа),а также ненулевой элемент первой с ребром последнего. Очевидно,нулевые элементы матрицы А соответствуют несуществующим ре-брам графа G(A). Таким образом, связности (ребра) п узлов графамогут представлять структуру разреженной матрицы. Более точно,ребра графа G(A) представляют ненулевые элементы матрицы А,т. е. узел графа % связан с узлом j тогда и только тогда, когда уматрицы элемент Aij ф 0.

Например, трехдиагональная матрица может представлять п уз-лов, образующих незамкнутую цепь (связность), в которой каждыйвнутренний узел связан только с его непосредственными соседями,т. е. первый конечный узел 1 связан только с узлом 2, внутреннийузел к связан лишь с узлами к — 1 и & -Ь 1, а последний конечныйузел п связан только с узлом п — 1. И наоборот, для такого G(A),у которого узел к связан лишь с узлами j = к ~ 1 и j = к + 1, в

*' Проверьте это, выполнив Рт Р — /. Замечание: Опытные пользователиМАТЪАВ'а могут использовать speye вместо eye, чтобы сформировать еди-ничную матрицу: выполните также help sparse, чтобы больше узнать о по-строении разреженных матриц.

16*

Page 245: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

244 Глава 16. Матрицы и решение линейных систем

соответствующей матрице элемент Akj Ф 0 только для \к — j\ < 1.Отсюда следует, что А должна быть трехдиагональной.

В приведенном выше примере матрицы 10 х 10 исходная мат-рица А представляет связности 10 узлов в естественном порядкеа — 1 : 10, а .42 представляет связности в новом порядке al —[10 9 8 4 6 5 2 7 1 3].

Для симметричной матрицы А ее граф G(A) может быть изобра-жен на графике с помощью команды MATLAB'a gplot. Для приве-денного выше примера с Аюхю выполните следующее(М-файл spar-ex.m)

>> ху = [ 0 01.5 1.30.35 2.0

-1.0 1.7-1.9 0.68-1.9 -0.68-1.0 -1.7

0.35 -2.01.5 -1.32.0 0.0 ], figure(2)

» gplot (A,xy); hold on '/. Изображаем все ребра

» gplot (А, ху,'о') '/, Изображаем все узлы как 'о'» for k=l:10,

tt = sprintf O'/.dW ,k);text (xy(k,l) ,xy(k,2) ,tt) '/, Печатаем числаend; axis off

>> titleC'MaTpmja А в исходном порядке а')» hold off; figure(3) */ Теперь изображаем G(A2)

» xy2 = xy(al,:); '/, Переупорядочиваем узлы в'/, соответствии с al

>> gplot (A2, ху2); hold on */, Изображаем все ребра>> gplot(A2,xy2,'о') У, Изображаем все узлы как 'о'

» for k=l:10,tt - sprintf (' y.dNn^k);

text(xy2(k,l) ,xy2(k,2) ,tt)'/ ( Печатаем числаend; hold off; axis off

» t i t l e С'Матрица Al в новом порядке a i ' )

Изучение методов разреженных матриц имеет важное значение дляприкладной науки. Заинтересованный читатель может обратитьсяк [4] и [15).

Page 246: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Упражнения 245

Упражнения

16.1 Создайте по крайней мере три случайных матрицы Апхп сослучайными порядками от п = 50 до п — 170 и случайнымвектором Ь размера п. Затем примените f lops, чтобы пока-зать, что следующие результаты приближенно выполняются,и в каждом случае оцените константу С:

х — A\b требует Сп3 операций;у = det(A) требует Сп3 операций;z = inv(A) требует Сп3 операций;t — b * b' * b требует Сп2 операций;u = b * (Ъ' * Ь) требует Сп операций;v = b * 9 + 6 требует Сп операций;

• w = А * Ъ требует Сп2 операций.

16.2 Решите следующую систему: Ах = Ь с помощью как Л\Ь, таки двух отдельных шагов LU-алгоритма (эти решения тождес-твенны?):

16.3

1231

11

- 12

0- 1- 1

3

312

- 1

' Х\ \

х2

/ 41

—^

1 4

С помощью подхода из § 16.2.2 решите новые системы Ay = eи Ах — f сразу после решения Ах — b из упражнения 16.2, се ^ ( 4 2 - 2 1 ) т n f = {34 10 1 36) т .

16.4 С помощью [L U P]=lu(A) из упражнения 16.2 вычислитеследующие относительные ошибки:

Hill u

где L2, U2 получены из L, U с помощью chop.m при £=1, а|| • У —норма, вычисленная командой MATLAB'a norm: напри-мер, | |L| | вычисляется командой norm(L).

16.5 Применив lin_solv.m вместе с Iu2.m и ГиЗ.т, выполните уп-ражнение 16.2 опять с t = 1-разрядной арифметикой. Срав-ните оба решения. Какое из них точнее? Воспользуйтесь ко-мандой norm из упражнения 16.4.

Page 247: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

246 Глава 16. Матрицы и решение линейных систем

16.6 Рассмотрите систему линейных уравнений Лх = Ь, где

А =

/ 1.1756 4.0231-4.0231 1.0002-10.179 -5.2107

\ 886.19 7.0005

-2.14170 5.19674.5005 1.19731.1022 0.10034

-6.6932 -4.1561 )

Возьмите хе =и b = ( 15.721 19.392 2.9507 -38.089 )

Л\Ь в качестве точного решения.(а) Найдите приближенное решение у для Ах = b в t = 4-

разрядной арифметике методом исключения Гаусса с ча-стичным выбором ведущего элемента. Вычислите относи-тельную ошибку

ег =хе

где |j • || обозначает 2-норму.(b) Выполните одно итерационное уточнение на основе (а) и

вычислите новую относительную ошибку.(c) Следуя (Ь) и снова принимая t = 4, выясните, насколь-

ко больше шагов итерационных уточнений нужно сде-лать, чтобы достичь предела итерационных уточнений,т. е. чтобы получить | |е | | < 10~9 при выполнении шагау + е ->• у в алгоритме итерационных уточнений. Пока-жите все промежуточные невязки, их нормы и относи-тельную ошибку окончательного решения.

Подсказка: примените команду while как в

у = l in_solv( . . . );count = 0

while С norm(e) > 1.0Е-9 )г = Ъ - А * у

у = у + е ;count - count + 1norm_e_is = norm(e)

end

16.7 Следуя упражнению 16.6, решите две модифицированные за-дачи, приведенные ниже, с помощью исключения Гаусса счастичным выбором ведущего элемента в ( = 5-разряднойарифметике. Выясните обусловленность в каждом случае.(а) Оставьте без изменения приведенную выше матрицу Л, а

Page 248: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Упражнения 247

элементы вектора b замените числами, равномерно рас-пределенными на интервале [—0.001,0.001].

Подсказка: Ъ <- b + 0.002*rand(4,1) -0.001 *ones(4,1).(b) Оставьте без изменения Ь, но элементы А выберите слу-

чайно из интервала [—0.002,0.002].

16.8 Дополнение. Выясните с помощью help h i lb , как созда-вать матрицы Гильберта. Пусть А — матрица Гильберта по-рядка 6 и Ь т = 2 : 1 : 7 . Найдите относительную ошибкуЕ численного решения у путем численного решения Ах = bметодом исключения Гаусса без частичного выбора ведущегоэлемента и используя t = 8-разрядную арифметику.

Измените ваш М-файл так, чтобы он выполнялся дляt = 1 : 12, и в каждом случае выведите относительную ошиб-ку определения у.

16.9 Для следующей разреженной 9 х 9-матрицы

1 0 1 1 0 0 0 1 1

0 1 1 0 0 0 0 0 0

1 1 1 0 0 0 0 0 0

1 0 0 1 1 0 0 0 0

. 4 = 0 0 0 1 1 0 0 0 0

0 0 0 0 0 1 0 0 1

0 0 0 0 0 0 1 1 0

1 0 0 0 0 0 1 1 0

1 0 0 0 0 1 0 0 1

воспользуйтесь командой symrcra, чтобы получить новое упо-рядочение а и новую матрицу А\ = А(а, а) с переставленнымирядами. Постройте графики G(A) и G(Ai), используя gplot впредположении, что граф G(A) имеет такие положения узлов:

ху =

00000

- 11

0.5-0.5

01

0.5-0.5

- 10000

Page 249: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

248 Глава 16. Матрицы и решение линейных систем

16.10 Следующую И х 11-матрицу А разложите с помощью 1и3.ти1и4.т и найдите в каждом случае необходимое число флопов:

/1 - 2 0 30 0 о 3 -20002302

fi

406320

4fi

20640

43^0040

000

403

300

- 2

03

- 2- 2

64

- 2/i

0

000

- 200и

0000004

3004

- 24

—2

0000003

0 0 0 0 -2 0 60 - 2 3 3 -2

0 0 0 - 20 0 /л 0

0 - 2 - 2 0 /z J

где \i = 999. Затем примените команду переупорядочивания1*symrcm, чтобы получить новую матрицу А\. Сравните чис-ло флопов, необходимых для разложения матрицы А\ с по-мощью Iu4.ni, с двумя предыдущими случаями и вычислитепроцентные отношения. С помощью spy покажите на графи-ке все ненулевые элементы матриц А и А±. Можете ли выпредложить упорядочение, лучшее, чем symrcm?

*' Обратите внимание, что хотя эта матрица не является симметричной, ко-манда symrcm может все же оказаться полезной.

Page 250: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

17Интерполяция и приближение функций

Приближение функций является центральным разделом вычисли-тельной математики, поскольку всегда есть надежда, что неизвест-ные или сложные функции можно будет заменить более простыми.Интерполяция — это простой и удобный способ аппроксимации, аполиномы являются самым полезным, самым известным и самымпростым1' классом функций.

Цель работыЦель этого исследования — найти полиномиальные приближениядля функций общего вида. Мы обсудим методы интерполяции иприближения методом наименьших квадратов. Сначала будет рас-смотрен одномерный случай (ID), а затем — многомерный (главнымобразом 2D). Эти два случая могут рассматриваться как разные ра-боты.

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

Используемые возможности MATLAB'aЭта работа посвящена функциям и их приближениям. Здесь исполь-зуются команды MATLAB'a interpl, interp2, polyf it и polyvalи М-файлы polyfit2.m и polyval2.m. Мы будем широко приме-нять графические возможности MATLAB'a для изображения раз-личных функций; все это можно найти в М-файлах intdemol.m иintdemo2.m.

1 ' Не следует думать, что с полиномами {даже второго порядка) всегда легкообращаться. Например, выше уже отмечалось, что появление небольшой ком-плексности в корнях такого полинома принципиально меняет характер поведе-ния основанного на нем итерационного процесса. — Прим. перев.

Page 251: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

250 Глава 17. Интерполяция и приближение функций,

17.1. ID: Введение

В случае одной переменной полином степени m может быть записанкак

рт{х) = С{\)хт + С(2)хт'1 + ••• + С{т)х + С{т + 1),

где С = [С(1) С(2) ••• С(т) С(т+ 1)] —вектор коэффициентов.В MATLAB'e значения таких полиномов вычисляются с помощьюкоманды polyval:П р и м е р 1. Пусть

РА{Х) = 2х4 - 5х3 + Зх2 + 8а; - 1,

т. е. т = 4, С = [ 2 —5 3 8 — 1 ]. Вычислим Р4 в точках х =-9.0 : 4.5 : 10 и изобразим результат в виде пунктирной линии награфике

» С = С 2 -5 3 8 -1 ] ; 7. Ввод коэффициентов» х = -9.0 : 4.5 : 10.0 ; V» Вектор с элементами

% из [-9,10]>> у = polyval (С, х) ; '/, Значения полинома в х» plot (х,у, 'ow') ;hold on; У, [0] Разбросанные точки» plot (x,y,'-w') ; 7, [1] График сплошной линией>> хр = -9.0 : 0.01 : 10.0 ; V. Длинный вектор с элементами

7. из [-9, 10]>> ур = polyval (С, хр) ; '/, Вычисление в хр для графиков>> p l o t С хр, ур, ' : g ' ) ; Я [2] Пунктирная линия (лучше)» a x i s ( [ - 9 10 -2000 17500]);% Задание осей>> CQ = p o l y f i t ( x , y , 2 ) ; % Квадратичная подгонка на

7. множестве точек (х,у)» у2 = polyval (CQ, xp) ; 7. Значения приближения>> p l o t ( x p , у2, ' — г ' ) ; 7. [3] График в виде штриховой

7. линии» t i t l e ( 'Пример 1 - построение графиков кривых'); hold off

Здесь сплошная линия plot1 ' не является изображением полинома,поскольку это вообще не кривая и полином — далеко не прямая ли-ния. Поэтому приходится брать больше точек, чтобы представитьего в виде надлежащей кривой (пунктирная линия). Это первыйважный момент для построения графика, который следует отме-тить при выполнении данной работы; см. рис. 17.1.

*) Здесь мы предполагаем, что график имеет черный фон. На тех системах,где это не так, выполните aetfgca, 'Color', ' k ' ) , чтобы установить черный цветфона, или замените 'white' (белое) в ('ow' и '-w') на 'black' (черное) в ('ok' и '-к').

Page 252: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

17.1. ID: Введение 251

16OOO

14000

12000

10000

8ООО

6ОО0

40ОО

2ООО

0

1

• \

\ ' \

- -Жх

-•-

• 1

• ' -

/ -

/ f -

/ / • • • -

Рис. 17.1. Пример 1—построение графиков кривых (сплошная ли-ния— полином С с небольшим числом точек, пунктирная—с большимчислом точек, штриховая — результат квадратичной подгонки).

Обозначения и соглашения. Материалом для всех аппроксима-ций служат дискретные значения данных, а для анализа мы спе-циально выбираем контрольные точки. Чтобы избежать путани-цы, мы используем обозначения х, у (векторы длины п) для точекданных, xi, yi (векторы длины Т) для контрольных точек и хр,ур (векторы длины L) для точек графика. Очевидно, L должнобыть достаточно большим (скажем, L » п), но Т может бытьлюбым числом. Так, в приведенном выше примере было п = 5 иL = 1901.

В практических задачах можно выделить две области приложе-ний, где полиномы могут быть полезными: (i) дана сложная функ-ция, и нужно найти простой полином определенной степени, разум-но представляющий эту функцию; (и) дано дискретное множествоточек, скажем, (ii,j/i), (£2,3/2), ••• Лхп,Уп)> и нужно найти поли-номиальную функцию, представляющую эти данные.

В главе 4 мы использовали polyf it для подгонки полиномом вслучае (ii). Этот метод, использующий для приближения один поли-ном, называется глобальным методом; примером служит рис. 17.1,где показано приближение квадратным полиномом. Мы сравнимтакой глобальный метод с так называемым методом кусочных при-ближений, где соединены воедино несколько кусочных интерполя-

Page 253: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

252 Глава 17- Интерполяция и приближение функций

ционных полиномов. Здесь в первом случае используется polyf i t ,а в последнем — i n t e r p l .

17.2. ID-пример: М-файл intdemol.m

Чтобы продемонстрировать работу intdemol. m, возьмем у = cos(2a:)на отрезке [—2,4] с п = 13.Пример 2. Пусть

х = - 2 : 0.5 : 4у = cos{2 * х).

Все приближения этой функции сравниваются в 16 точках xi =—2 : 0.4 : 4, но изображаются в 151 точке хр = -2 : 0.04 : 4.Предлагаем вам распечатать и изучить демонстрационный файлintdemoi.m, в основе которого лежит этот ID-пример; см. рис. 17.2и 17.3.

17.3. ID-подгонка данных

Пусть дано множество точек данных (хг,у\), (£2,2/2), •• • Лхп,Уп)->и нужно найти полином, аппроксимирующий их. Эта задача рас-сматривалась в гл. 5.

17.3.1. Глобальный подход (метод наименьшихквадратов)

Если мы рассматриваем полином степени т, т. е.

Рт(х) = С{1)хт + С(2)хт~1 +••• + С{т)х + С(т + 1),

то коэффициенты (вектор С) неизвестны и будут определены путемнекоторой минимизации разностей Pm{%i) — УГ- Метод наименьшихквадратов дает возможность минимизировать квадратичную ошиб-ку

относительно неизвестных С(г)> где Yi = Pm{^i)- Если т = 1, тополучается линейное приближение Pi(x) = С(1)х + С(2), котороеобсуждалось в гл.5.

Page 254: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

17.3. lD-подгонка данных 253

- 2 - 1 0 1 2 3 4Файл intdemoi.m — пример 1D {пунктирная линия — истинная кривая)

Р и с . 17.2. ID-глобальное приближение — линейное (о), кубическое (*)и 6-го порядка (х) .

- 2 - 1 0 1 2 3 4Файл Intdemoi.m — пример 1D (пунктирная пиния — истинная кривая)

Рис. 17.3. ID-кусочное приближение — линейное (о), кубическое (*)и сплайнами (х).

Page 255: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

254 Глава 17. Интерполяция и приближение функций

Команды MATLAB'a, реализующие этот метод для примера 2 сполиномом пятой степени (т = 5), суть

>> х = -2 : 0.5 : 4 ; */. Задается вектор х

>> у = cos(2*x) ; % Вычисляется вектор у

>> С = polyfit(x,y,5); % Вычисляются коэффициенты C(i)

У, полинома Р_5(х)

» хр = -2 : 0.04 : 4; '/, Задаются точки для графика

» fp = polyval(C, хр) ; */, Вычисляются значения Р_т

У, для графика

>> plot(xp, fp) У, График кривой приближения

17.3.2. Кусочные приближения

Вы должны понять из примера 1 (или упр. 17.1), что полиномы(точнее, глобальные полиномы) могут оказаться осциллирующимии тем самым неудовлетворительными. Поэтому рассмотрим теперьальтернативные методы приближений.

Интерполяция хотя и похожа, но все-таки отличается от подгон-ки по методу наименьших квадратов. Здесь мы хотим, чтобы поли-ном без отклонений проходил через все п точек данных. Но степеньm такого полинома будет очень большой, а именно та = п — 1 (т.е.на единицу меньше числа пар данных). Глобальная интерполяцияполиномами высоких порядков может быть неудовлетворительной,она может оказаться не лучше метода наименьших квадратов, заисключением точного совпадения с данными.

Оказывается, что полиномы могут давать хорошие приближе-ния локально (т.е. не глобально, а на небольшом отрезке), и поли-номы других или даже тех же порядков могут стать эффективны-ми, если мы разобьем множество данных на небольшие непересе-кающиеся подмножества. Это приводит к рассмотрению кусочных(кусочно-полиномиальных) приближений1*.

Поэтому вместо построения полиномов2' степени тп = п—1, как вгл. 5, мы рассмотрим принципы кусочных приближений на примереинтерполяции.

*) Современный метод конечных элементов является одним из лучших при-меров приложения концепции кусочных приближений.

2) Заинтересовавшийся читатель может найти подробности и формулы в лю-бом руководстве по численному анализу. Проведите свое исследование, исполь-зуя polyfit.

Page 256: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

17.3. ID-подгонка данных 255

17.3.2.1. Кусочные линейная и кубическая интерполяции

При кусочно-полиномиальном подходе выбирают несколько поли-номов невысоких порядков и соединяют эти кусочки вместе (отсю-да и название «кусочный»). Полное приближение обычно недиф-ференцируемо1), хотя и непрерывно, но оно эффективно и точно.Приведем два примера кусочной линейной и кубической интерпо-ляции.

Команда MATLAB'a interpl может выполнить оба вида интер-поляции, линейной и кубической, как показано ниже с даннымипримера 2:

>> х = -2 : 0.5 : 4; '/, Задается вектор х>> у = cos(2*x); У, Вычисляется вектор у>> хх = -2 : 0.04 : 4; */, Для интерполяции и графика>> FL = interpl(x,y, x x , ' l i n e a r ' ) ; '/• Для графика» FC = interpl(х,у, хх, 'cubic ') ; У. Для графика» plot(xx,FL, ' - r ' , xx.FC'-g 1 )

Здесь вектор хх выбран с малыми промежутками для построенияграфика двух интерполяционных кривых, но он может быть любогоразмера, например, хх — — 1 : 0.3 : 1.

17.3.2.2. Непрерывно дифференцируемая интерполяция —сплайны

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

Команда MATLAB'a interpl может выполнить интерполяциюкубическими сплайнами для данных примера 2:

>> х = -2 : 0.5 : 4; У, Задается вектор х>> у = cos(2*x) ; У, Вычисляется вектор у>> хр = -2 : 0.04 : 4; '/, Абсциссы для графика» FS = interplCx.y, xp,'spline') ; '/, Ординаты для графика» plot(xp,FS,'-Ъ')

J) При желании полное приближение можно сделать дифференцируемым:см. §17.3.2.2.

Page 257: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

256 Глава 17. Интерполяция и приближение функций

17.4. Насколько точно мое приближение?

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

Предположим, что Х\,Х2,... ,жт (в виде вектора xi) есть нашиконтрольные точки с соответствующими им известными значения-ми уг,У2, • • • )Ут (в виде вектора yi). Тогда, если /; (в виде вектораfi) являются значениями приближения в xi, то можно оценить ра-боту метода через среднеквадратичную ошибку

Error = J-\\u-yi |2 —\2 ~

\

Если эта ошибка достаточно мала, мы можем сказать, что соответ-ствующее приближение хорошее. В принципе можно взять Xi — Х{для всех i (т.е. контрольные точки и точки данных совпадают вме-сте с Т = п), но тогда это не даст никакой информации, так какпри интерполяции в этом случае Error = 0. (Вспомните определе-ние интерполяции.)

Для примера 2 в случае приближения полиномом пятой степенипо методу наименьших квадратов для оценки ошибки приближенияв среднеквадратичной норме выполним

>> х = -2 : 0.5 : 4; '/, Задаются точки данных х» у = cos(2*x) ; '/, Вычисляются значения у» С = p o l y f i t ( x , y , 5 ) ; '/, Вычисляются коэффициенты C(i)

7, полинома Р_5(х)>> xi = -2 : 0.4 : 4; 7, Задаются контрольные точки» fi = polyvalCC, xi) ; 7, Значения приближения в

7. контрольных точках>> yi = cos(2*xi); '/, Точные значения в контрольных

7« точках» Т = length(xi); 7. Длина xi» Error = sqrt( normCfi - yi)"2 / T) '/. Среднеквадра-

'/, тичная ошибка

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

Page 258: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

17.5. Введение в многомерные приближения 257

Вспомните здесь, что norm —команда MATLAB'a. Заметим, что впоследней строке, если f i заменить вектором, полученным с помо-щью i n t e r p l (например, FL), прежде чем вычислять разность1'fi — yi, следует проверить, не нужно ли транспонирование.

17.5. Введение в многомерные приближения

В §17.1 для ID мы рассмотрели различные способы нахожденияполинома Рт(х) (определяемого его вектором коэффициентов С).Однако в задачах реального мира часто используется более однойпространственной переменной; общий полином m-й степени с п пе-ременными из (R n ) можно представить в виде

р _ р (Т ~ . . . г \ _ V" 4 fi. . . „Ч ™*2 . . . ™tn

где if. = 0 , 1 , . . . ,m для к = 1,2,... ,n. Для простоты сосредото-чимся на 20-задачах с п = 2 и на двух специальных полиномах ст = 1 (линейный) и 3 (кубический).

В случае т = 1 мы рассматриваем так называемую билинейнуюфункцию вида

Z(x, у) ~ а + Ьх + су + dxy,

в то время как в случае т — 3 приблилсаем функции с помощьютак называемой бикубической функции

Z(x,y) = а + Ьх + су + dxy + d\xy2 + d2x2y + eix2 + e2x

3 + fay2 + f2y3

На практике, как и в случае ID, снова можно выделить две си-туации, где полиномы оказываются полезными: (i) дана сложнаяфункция z ~ z(x,y), и нужно найти простой полином Z — Z(x,y)определенной степени (т~1 или 3) для ее разумного представле-ния (на базе N точек); (ii) дано дискретное множество точек данных(xi,y1,z1), {x2,y2,Z2), ..., (xiv,yjv>2jv), и нужно найти полиноми-альную функцию Z = Z(x,y), представляющую эти данные.

Сначала исследуем пути определения таких полиномов, а затемизучим методы измерения качества каждой подгонки.

^ Более точно, в MATLAB'e версии 4 команда FS = interpKx.y, xp,' spline') всегда порождает вектор-столбец, даже если хр — вектор-строка. Этоне так в версии 5.

17-4196

Page 259: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

258 Глава 17. Интерполяция и приближение функций

Вам потребуются два основных М-файла, специально разрабо-танных для оставшейся части этой работы:

polyfit2.m - подгонка по методу наименьших квадратов

в 2D (линейная и кубическая)

polyval2.m - вычисления по результатам "polyfit2.m"

(линейный и кубический)

вместе с демонстрационными М-файлами intdemo2.m, cont4.m иcont7.m.Обозначения и соглашения. Внимательный читатель, возмож-но, заметил, что

• m степень полиномов;• п число независимых переменных;• N число точек данных.

17.6. 2D М-файл intdemo2.ni

Чтобы показать работу указанных выше М-файлов, для вас былприготовлен демонстрационный М-фаЙл intdemo2. m, в котором рас-сматривается следующий пример (N = 25):Пример 3

Пусть

{ х = 0 : 0.25 : 11/ = 0 : 0.25 : 1z = rln(r),

где г = л/{х — 1/2)2 + (у — 1/4)2. Как и раньше, прежде чем идтидальше, вы должны запустить и распечатать этот М-файл intdemo2. m.

17.7. Графики линий уровня, ЗБ-графики и графикисечений

Поскольку мы должны работать с функциями п = 2 переменных,придется изучить, как сделать зримыми (визуализировать) такиефункции.

В MATLAB'e можно изображать графики линий уровня и трех-мерные ЗБ-графики после определенной подготовки данных, однойи той же в обоих случаях. Предположим, что мы хотим изобразитьфункцию

z = z(x,y) = {х& - у3 - 0.5)ехр(~х2 - у2)

Page 260: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

17.7. Графики линий уровня, ЗП-графики и графики сечений 259

о о

Рис. 17.4. Сетчатый график.

в области П = [—2, 2] х [—2, 2]. Сначала будет выполняться командаmeshgrid, задающая сетку, за ней следуют вычисления значений(если они еще неизвестны):

» хО = -2 : 0.4 : 2;» уО = -2 : 0.25 : 2; '/,% хО, уО - два ID вектора» [х у] = meshgrid (xO,yO); У,'/, Создаются две матрицы» ZZ=(x."6-у."3-0.5) .* ехр(-х.~2-у.~2) ; % Матрица ZZ

SD-графики. Две команды mesh и surf (и их варианты1)) могутбыть использованы для визуализации ZZ; реальные графики см. нарис. 17.4 и 17.5.

>> mesh(ZZ); t i t l e ( ' С е т ч а т ы й график')>> dispC'Pause . . . ' ) ; pause» surf (ZZ) ; title('fl4eiicTbni график')

Чтобы повернуть график, воспользуйтесь командой view, напри-мер, view(20, 70) 2 ) .

*) Наберите help mesh, чтобы увидеть много ссылок на другие команды. Не-которые команды, как surf и plot3, доступны только в MATLAB'e версии 4.

2> Параметры команды view задаются в градусах широты и долготы, отсчиты-ваемых от некоторых стандартных нулевых уровней, и определяют положениеточки наблюдения— см. help view. — Прим. перев.

17'

Page 261: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

260 Глава 17. Интерполяция и приближение функций

Рис. 17.5. Ячеистый график.

График линий уровня. Команду contour можно использовать,чтобы нарисовать график линий уровня, но нужно указывать зна-чения уровней (или их число), контуры1^ которых требуется изо-бразить (посмотрите также М-файл cont4.m). Выполните строки

» M=max(ZZ) ; mi=min(ZZ); 7, Векторы-строки

» V=[mi mi/2 О М/2 М] ; '/, Некоторые значенияУ, уровней ZZ

» Cl = contour(x,у,ZZ, V , ' - r J ) ; У. ГЛАВНЫЙ шаг>> c labe l (Cl) ; У, Метки уровней (числа)>> titleCTpai^HK линий уровня z ( x , y ) ' )>> С2 = contourCx,y,ZZ, 7 , ' - g ' ) ; У. Простейшие 7 уровней

Результат первых четырех командных строк, когда используетсявектор уровней V, показан на рис. 17.6.Замечание: Вы, должно быть, заметили, что для хО — —2 : 0.4 : 2 иуО — — 2 : 0.25 : 2 график поверхности и график линий уровня вы-глядят очень негладкими. Чтобы повысить гладкость, т.е. изобра-зить искривленные поверхности более плавно, нужно уменьшить

^ Мы заметили, что в более ранних версиях MATLAB'a (скажем, в верси-ях 4-), доступны другие способы задания входных данных, например, С1 =coatour(ZZ,7, хО.уО, ' - г ' ) , или С1 = contour(ZZ,V, хО.уО, ' - г 1 ) , или С1 =contour(xO.yO.ZZ,7, ' - г ' ) . Только самый последний вариант имеет смысл вMATLAB'e версии 5.

Page 262: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

17.7. Графики линий уровня, ЗО-графики и графики сечений 261

-2 -1.5 -1 -О.5 О

Рис. 17.6. График линий уровня.

длину шага, например, взять хО = — 1: 0.01: 2 и уО — —2 : 0.02 : 2 иполучить больше точек сетки.

Г р а ф и к и сечений. Графики сечений1 '—это плоские графики,являющиеся сечениями ЗБ-поверхности вдоль одной из координат-ных осей. Для данных примера 3 можно провести сечение черезсередину интервала в каждом направлении и затем построить гра-фики отдельно для каждого сечения (см. рис. 17.7):

>> х = 0; у = -2 : 0.25 : 2; VI, Число х, вектор у>> Zx=(x. "6-у. "3-0.5) .* ехр(-х.~2-у."2); У, Вектор Zx>> subplot(211);plot(y, Zx,'-r'); title('График сечения')

>> ylabelС'Сечение при x=0J)

>> у = 0; х = -2 : 0.25 : 2; '/, Фиксируем у

» Zy=(x. "6-у. "3-0.5) .* ехр(-х.~2-у."2); °/, Вектор Zy

» subplot(212); plotCx, Zy, ' - g ' ) ;>> ylabelС'Сечение при у=0')

Другой {и, может быть, лучший) метод изображения сечений состо-ит в использовании команды p l o t 3 . Повторим приведенный вышепример в виде

» subplot(ill)

1> В MATLAB'e версии 5 вводится новая удобная команда slice для тех жецелей. Наберите help slice, чтобы узнать подробности.

Page 263: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

262 Глава 17. Интерполяция и приближение функций

-0.5-2 -1,5 -1 -0.5

Рис. 17.7. Графики сечений.

0.5

» х = 0; у = -2 : 0.25 : 2;

» Zx=(x.~6-y.~3-0.5) .* ехр(-х.~2-у."2) ;

>> hl=plot3(zeros(size(у)), у, Zx, '-r');

>> hold on У,'/,'/, Необходимо

» у = 0; х = -2 : 0.25 : 2;

» Zy=(x.~6-y.~3-0.5) .* ехр(-х.~2-у."2) ;

>> h2=plot3(x, zeros(size(x)), Zy, J

- g ' ) ;

» zlabeK'Сечения плоскостями х=0 и у=0')

» grid on; hold off '/. Ниже изменяется точка наблюдения

» view(10,50) '/, Попробуйте view(80,50) или

7, view(175,50)

» setChl.'Linewidth', 3); set(h2,'Linewidth', 2)

» set(gca,'Ytick', -2:1:2)

Page 264: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

17.8. Глобальный '\'-метод 263

Здесь посяедние две строки устанавливают атрибуты графика спо-собом, требующим от вас большей подготовки: наберите get(gca)и help set, чтобы узнать, какие другие атрибуты графика можноизменять. Поскольку сечения не представляют график полностью,их нужно применять с осторожностью, но они могут быть полез-ны при сравнении разных приближений. Конечно, сечение можносделать в любом подходящем направлении, например, плоскостьюх + у = 1.

17.8. Глобальный ;\'-метод

Пусть Z(x,у) —приближение функции z(x,y) и z^ = z(xi,yj); приэтом может случиться так, что сама функция z(x,y) неизвестна, ноизвестны ее дискретные значения.

С помощью метода наименьших квадратов можно минимизиро-вать квадратичную ошибку (полагая 2ц — Z(x{,yj) для всех i,j)

Минимизация проводится по параметрам приближающей функции(например, это а, Ь, с, d в случае билинейной функции из § 17.5).Этот метод реализован в двух М-файлах, где был использован \-подход (теорию см. в гл. 5). Синтаксис использования polyf it2.mи polyval2.m для примера 3 таков (см. cont7.m):

хО = 0:0.25:1; уО = хО; VI, Интерполяц. узлы[х у] = meshgridfxO, уО);

R = sqrt ( (х-1/2).~2 + (у-1/4)."2 );z = R. *log(R+eps) ; VI* Истинные и данные

VI, значенияCl = polyfit2( x,y,z, 'linear');С2 = polyfit2C x,y,z, 'cubic' );

V/XIX/X/XIX/X/. Вычисления только для графиков Ш'/.ШхО = 0:0.02:1; уО = хО ; '/, Задание узлов[xi yi] = meshgrid(xO, yO);Zl = polyval2( Cl, xi,yi, 'linear'); % Билинейное

'/, приближениеZ2 = polyval2( C2, xi,yi, 'cubic' ); '/. Бикубическое

У, приближение

yX/XIX/XIX/Xa Графики линий уровней Ш Ш Ш Ш Ш Ш Шcontour(Zl ,9 , xO.yO, ' - g ' ) ; hold on; */, 9 уровнейcontour(Z2,9, xO.yO, ' : r ' ) ; hold off

Page 265: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

264 Глава 17. Интерполяция и приближение функций

17.9. Кусочный метод

Глобальный метод может давать плохие результаты для некото-рых сложных функций, поскольку полиномы высоких порядков ос-циллируют1). Другой подход, как и в Ш, состоит в использова-нии кусочных методов, преимущество которых заключается в глад-кости полиномов низкого порядка и разумной локальной точно-сти.

Здесь мы рассмотрим интерполяцию кусочными полиномами не-большой степени. Команда MATLAB'a interp2 может быть исполь-зована как для билинейной, так и для бикубической интерполяции.Как мы знаем, пересечение двух кусков поверхности является кри-вой, имеющей несчетное число точек. Невозможно получить одно-временно непрерывность и дифференцируемость2) для всех точекэтой кривой, поскольку число степеней свободы полинома любо-го порядка ограничено. Поэтому существуют только одномерные«сплайны».

Сейчас мы покажем, как использовать interp2 в примере 3 (см.cont7.m)

» х=0 :0.25: 1; у=х; [х y]=meshgrid(x, у);» R=sqrt ( (х-1/2).~2 + (у-1/4)."2 ); z = R.*log(R+eps);>> ха=0 :0.05: 1 ; уа=ха ; У, Новый ID-вектор>> [xi yi] = meshgrid(xa, ya) ; '/, Новые 2Б-матрицы>> zL = interp2(x,y,z, x i ,yi , ' l i n e a r ' ) ;>> zC = interp2(x,y,z, x i ,yi , ' cubic ' ) ;» contour(zL,9, xa.ya, '-w'); hold on;» contour(zC,9, xa,ya, J - b ' ) ; hold off

17.10. Сравнение приближений

Для функции z = z(x,y), мы обсудили четыре вида приближенийZ ~ Z(x,y). Попробуем выяснить, какое из них ближе всего к ис-ходной функции, сравнив их в некоторых отобранных точках.

1* Непосредственное использование в методе наименьших квадратов команды\ вместо polyfit не дает осцилляции, но тогда приближение не будет совпа-дать с точными значениями в заданных для его построения точках, что ужеотмечалось в гл.5. — Прим. перев-

2 ' Однако в таких случаях можно довольствоваться неполной дифференци-руемостью (дифференцируемостью лишь в некоторых, а не во всех точкахкривой). Такого результата можно достичь, используя тензорные произведе-ния.

Page 266: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

17.10. Сравнение приближений 265

Этими отобранными точками, называемыми контрольными, каки в Ш. могут быть точки, которые мы использовали при постро-ении различных графиков, но только не начальные точки данныххО и уО.

Предположим, что приближение Z и соответствующие ему зна-чения z истинной функции представлены в виде матриц (скажем,размеров iV3 x Лг

2). В примере, рассмотренном в последних двухразделах, таким приближением Z могут быть Zl,Z2,zL,zC, а привычислении z используется исходная функция z(x,y). Теперь мож-но приступить к рассмотрению следующих двух методов.

Геометрическое сравнение. Используя оператор hold on, мыможем наложить приближение Z на изображение линий уровня ис-тинных значений z (конечно, применяя разные цвета). Тогда боль-шие расхождения будут указывать на то, что рассмотренное при-ближение не очень хорошее, и наоборот.

Замечание: Трудно совмещать графики непосредственно коман-дами mesh и surf.

Прежде чем произвести сравнения с помощью графиков сече-ний, можно построить график линий уровня, чтобы узнать, где рас-положены главные особенности функции. Заключения, сделанныена основе геометрического сравнения, могут быть субъективными,но такой подход дает эффективный способ установить, какой методприближения самый плохой.

Алгебраическое сравнение. Более полезный, но и более утоми-тельный метод измерения расхождения между двумя матрицамизаключается в использовании норм, например1', Е = norm(Z ~ z) вкачестве показателя величины погрешности2' — малое значение Еуказывает на хорошее приближение, и наоборот.

В технических приложениях, как и для случая ID, чаще всегоиспользуют так называемую среднеквадратичную норму ошибки,определяемую как

Е =

Чем меньше эта величина, тем лучше метод.1 ' Здесь это норма вектора, получаемого из матрицы ее вытягиванием в один

столбец. — Прим. перев.2 ' О других нормах упоминается в гл. 16.

Page 267: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

266 Глава 17. Интерполяция и приближение функций

Оказывается, что эта формула напоминает норму Фробениусадля матрицы (Z — z), которую молено вычислить с помощью ко-манды MATLAB'a norm(Z-z, ' f r o ' ) . Поэтому величина Е можетбыть вычислена следующим образом:

>> [m n] = s i z e ( Z ) ; 7, Размеры матрицы» inn = m * п ; У, Общее число узлов>> format compact; °/, Удаляются лишние пустые строки>> dispC'Среднеквадратичная ошибка равна ');» Е = s q r t ( normC Z-z, ' f r o ' ) "2 / ran )

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

Имеется много других глобальных функций, которые мож-но подставить вместо полиномов (таких, как тригонометрическиефункции, радиальные базисные функции и совсем недавнее изо-бретение -—вэйвлет-функции). И снова в каждом из этих случаевможно увидеть некоторые варианты кусочного подхода — в функ-циях с относительно малым компактным носителем. Вообще го-воря, применение робастных (устойчивых) методов приближениятребует тщательного экспериментирования и анализа результатов,но это должно предопределяться математическим исследованиемкаждой задачи.

Упражнения

17.1 Дана функция f(x) — 1/(1 + 25х2) на отрезке [—1,1] и девятьточек данных х = —1:0.25:1; выведите график функциивместе с ее приближением полиномами 3 и 7 степеней.

17.2 Для функции f(x) из упр. 17.1 постройте ее график вместес ее кусочными линейным, кубичным и сплайновым прибли-жениями.

Page 268: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Упражнения 267

17.3 Для следующих функций, заданных на отрезке [0,1]:

(a) f(x) = -(x + a)R + [aR{l-x) + {l+a)Rx] при а=10~2 иR — — I

(b) f{x) = (l-x){tan-1[b(x-xQ)]+tzn-1[bx0]} при Ь = 100 их0 = 1/4,

(c) /(z)=tanh[20(a:-l/2)].(d) Дополнение. f{x)=10000{fi(x)+f2(x))\{x-l/4){x-Z/4)\3

при fi(x) ~~(x + a)R + [aR(l-x) + {l+a)Rx] и f2{x) =-(l-x + a)R + [aRx + {l+a)R(l-x)]. где а = 0.3 и Д =-1/4.

(i) Сравните результаты (эффективность) четырех прибли-жений: метода наименьших квадратов с т = 1 : 2 0 , ку-сочно-линейного метода, кусочно-кубического метода иметода кубических сплайнов, используя п — 10 равномер-но распределенных точек данных (х = 0 : 1/9 : 1).

(ii) Постарайтесь улучшить результаты хотя бы двух при-ближений: метода наименьших квадратов с т — 1: 20 икусочно-линейного метода, выбирая «вручную» п=10 не-равномерно расположенных точек данных (например, х —[0:0.1:0.4 0.6 : 0.1 : 1] или х = [0 0.26:0.15:0.44 0.47:0.035:0.65 1]). Изобразите оба приближения на одномграфике.

Замечание. В каждом случае, чтобы упростить задачу, выдолжны:

(1) найти среднеквадратичную ошибку для Х = 10п +1 равномерно распределенных контрольных точек(т.е. контрольных точек с шагом 1/10);

(2) ранжировать методы от лучших к плохим в видетаблицы эффективности (в соответствии с пока-зателем величины ошибки для контрольных точек);

(3) изобразить всех конкурентов на одном графике.

Подсказка:

(i) Для метода наименьших квадратов рассмотрите полино-мы вплоть до т = 20 степени, но для сравнения возьмителишь лучший результат,

(ii) Если вы не уверены, как «выбрать вручную неравномер-

Page 269: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

268 Глава 17. Интерполяция и приближение функций

но расположенные точки данных», то может помочь сле-дующее:

• изобразите данную функцию,• изобразите первую производную данной функции,затем выберите больше точек вблизи области наиболь-шей вариации функции или вблизи области больших зна-чений ее производной.

(iii) —i~^ = 1 - tanh 2(x) и к ; ~dx y ' dx 1+x2

(iv) По завершении вы должны получить

(1) 6 графиков;(2) таблицу 3 x 4 среднеквадратичных погрешностей и

результаты после использования равномерно распре-деленных точек;

(3) таблицу 3 x 2 среднеквадратичных погрешностей ирезультаты после использования неравномерно распо-ложенных точек.

17.4 Изобразите следующие две функции, а также постройте гра-фики их сечений в некоторых подходящих местах (в каждомслучае требуется один ЗЭ-график и один график сечения):• gi{x,y) = tanh[20(x + у - 1)] в области [0,1] х [0,1];• 92(х,у) = t a n h [ 2 0 ( a : 2 + y 2 - l / 2 ) ] в области [0,1] х [0,1].

17.5 Для функций из упр. 17.4 постройте графики линий уровня(для пяти уровней) их линейного и кубического приближе-ний; используйте N = 11 точек в каждом координатном на-правлении, т.е. хО = уО = О : 0.1: 1.

17.6 Для функций из упр. 17.4 постройте график линий уровня(для пяти уровней) их кусочных линейного и кубическогоприближений; используйте N — 9 точек в каждом координат-ном направлении, т.е. хО = уО = 0 : 1/8 : 1 .

17.7 Для одной из функций из упр. 17.4 сравните ее глобальныелинейное и кубическое приближения на основе JVj = ЛГ2 = 13точек (см. упр. 17.5 при хО = уО = 0 :1/12 :1) с ее кусочнымилинейным и кубическим приближениями на основе JVi = N2 =8 точек (см. упр. 17.6 с хО = уО = 0 : 1/7 : 1):(а) Сначала выполните алгебраические сравнения и в каж-

дом случае ранжируйте четыре метода от лучшего к худ-

Page 270: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Упражнения 269

шему. Число контрольных точек должно быть больше,чем 4 * N\ * N2.

(b) Затем получите соответствующие графики, подтвержда-ющие ваши заключения. (Определенно графики сеченийбудут полезны, но попробуйте получить хотя бы один гра-фик уровней или ЗБ-график.)

Page 271: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

18Обыкновенные дифференциальные

уравнения

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

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

Используемые возможности MATLAB'aВсе необходимые здесь средства были введены в гл. 7. Например,анализ полей направлений (или графиков в фазовой плоскости) ичисленное решение систем уравнений первого порядка. Может ока-заться, что вы найдете полезными М-файлы, связанные с этой ра-ботой (fodesol.m, species , m, vderpol .m,...). Можно прямо вос-пользоваться ими или скопировать и внести в них требуемые изме-нения.

18.1. Стратегия

Ваша цель для каждого уравнения из списка упражнений — подго-товить надлежащим образом следующую информацию:

(а) Для уравнений первого порядка постройте график полей на-правлений типичного решения. Для уравнений второго поряд-ка или систем уравнений первого порядка сделайте набросоктипичного графика в фазовой плоскости.

Page 272: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Упражнения 271

(b) Общее аналитическое решение, если сможете его найти.(c) Частное решение для заданных начальных условий.(d) Любые другие соображения, которые вы пожелаете сделать, о

природе решений, их устойчивости и т.д.

В каждом случае начинайте с определения типа дифференциаль-ного уравнения. Линейное? Какого порядка? Имеет постоянные ко-эффициенты? Однородное? Если оно знакомого вам типа, то попы-тайтесь решить его «аналитически», т. е. с карандашом и бумагой.Если не можете, то посмотрите, нельзя ли воспользоваться однимиз методов, описанных в гл. 7. Если вы сможете решить уравнениеточно, то сравните это решение с численным или графическим, ис-пользуя MATLAB. В каждом упражнении вам надо найти частноерешение. Приложите все ваши силы, чтобы решить эти задачи.

Упражнения

18.1 Найдите у при х — 1 для частного решения уравнения

— = — 2ху,

удовлетворяющего начальному условию у(0) = 1.

18.2 Найдите у при х = 1 для частного решения уравнения

dx

удовлетворяющего начальному условию у(0) = 1.18.3 Найдите у при х — 5 для частного решения уравнения

{х - 2 у ^ ) ~ ^ - у = 0, {х > 0,з/ > 0),ах

удовлетворяющего начальному условию у(1) = 10.18.4 Найдите у при х = 1 для частного решения уравнения

+ 3

удовлетворяющего начальным условиям у(0) = 1, у'(0) = 0.18.5 Найдите у при х = 4 для частного решения уравнения

удовлетворяющего начальным условиям у(0) = 1, з/(0) = 0.

Page 273: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

272 Обыкновенные дифференциальные уравнения

18.6 Найдите у при х = 4 для частного решения уравнения

удовлетворяющего начальным условиям t/(0) = 1, у'(0) = 0.18.7 Найдите у при х = 4 для частного решения уравнения

удовлетворяющего начальным условиям у(0) = 1, у'(0)=0.(Подсказка: Вы можете встретиться с трудностями при опре-делении численного решения, когда х находится вблизи 0 (этоназывается «регулярной особой точкой»). Рассматривая раз-ложение в ряд Маклорена вида у(х) жа + Ьх + сх2, вы смо-жете определить поведение у и его производной при оченьмалых х, и использовать это в вашем М-файле.)

18.8 Найдите х при t ~ 1 для частного решения уравнений

— =x(2x + i/-3), -£=у(х + 2у-3),at at

удовлетворяющего начальным условиям ж(0) = | , у(0) = 1.(Ло^сказка. Вспомните о неподвижных точках и устойчиво-сти, рассмотренных в гл. 7.)

18.9 Найдите у при х = 1 для частного решения уравнения

удовлетворяющего начальным условиям у(0) = 0, у'(0) = —|.(Подсказка. Воспользуйтесь рекомендацией из упр. 18.7, есливы столкнетесь с трудностями при нахождении решения в не-которых точках х.)

Page 274: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Часть III

Моделирование

19. Кассовые очереди: длинные и короткие 27519.1. Имитация очередей 27619.2. Придорожная заправочная станция 28019.3. Кафетерий 283Упражнения 284

20. Рыбное хозяйство 28720.1. Предварительный взгляд на проблему 28820.2. Модели роста рыбы 28820.3. Построение матрицы Лесли 29120.4. Стратегия рыбной ловли 293Упражнения 294

21. Эпидемии 29621.1. Предварительные замечания о некоторых данных 29721.2. SIR-модель динамики эпидемии 29821.3. Аналитическое исследование поведения 29921.4. Анализ данных 301Упражнения 302

22. Динамика сноуботинга 30422.1. Предварительные замечания о задаче 30522.2. Уравнения движения 30622.3. Исследование рабочих параметров 308Упражнения 309

23. Приливы 31123.1. Предварительные замечания о данных по приливам 31223.2. Ряды и методы Фурье 31223.3. Анализ электрического сигнала 31423.4. Фурье-анализ данных о приливе 315Упражнения 315

18-4196

Page 275: Чен, Джиблин, Инвирг - Matlab в математических исследованиях
Page 276: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

19Кассовые очереди:

длинные и короткие

В повседневной жизни мы встречаем много примеров очередей ти-па «первым прибыл — первым обслужен», т.е. очередей обслужива-ния в порядке поступления (fifo — first-in-first-out), которые обычноявляются простыми системами массового обслуживания. Болеесложная система с несколькими очередями может, с одной сторо-ны, включать в себя структуру с объединением по входу, в которойнесколько отдельных очередей соединяются в последнем устрой-стве, а с другой стороны, содержать структуру с разветвлениемпо выходу, где единственная очередь разветвляется на несколькоразличных подочередей. Люди, объекты, клиенты, которые прохо-дят через систему, известные как объекты, могут иметь различныеатрибуты (признаки, свойства, такие, как этилированный или не-этилированный бензин, оплата наличными или чеками), с которымиони проходят через систему.

Цель работыМоделирование очередей имеет двойное назначение. Во-первых, какклиенты, мы предпочитаем иметь дело с короткими очередями, что-бы экономить время. Во-вторых, в качестве управляющих делами,мы стремимся к рентабельности обслуживания, когда отношениеполезного времени обслуживания ко всему доступному времени об-служивания приближалось бы к 100%, чтобы максимизировать при-быль, но при этом избегаем длинных очередей, чтобы не отпугнутьклиентов. Поэтому важно уметь предсказывать пиковые временадлинных очередей до принятия решения по улучшению обслужи-вания.

Используемые математические понятияСтатистические распределения и вероятности, использованныездесь, обсуждались в гл. 6. Разреженные векторы из нулей и единицдля извлечения данных порождаются при различных условиях, инам придется более аккуратно обрабатывать такую информацию.

18'

Page 277: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

276 Глава 19. Кассовые очереди: длинные и короткие

Используемые возможности MATLAB'aГлавным образом используется М-файл queue. m с тремя вспомога-тельными М-файлами exprand. m, normrand. m, unirand. m; основныекоманды MATLAB'a —plot, bar, sort, rand.

Работа делится на три части. В § 19.1 рассматриваются некото-рые приемы моделирования простых очередей и объясняется рабо-та основного М-файл queue.ш. В §19.2 моделируются очереди набензозаправочных станциях напряженных автострад, а в § 19.3 рас-сматриваются очереди в кафе у площадки для временной парковкиавтомобилей. Каждая из этих задач представляет собой отдельнуюработу, в которую может входить принятие решений по численностиперсонала, увеличению размеров прибыли и затратам на рекламу.

19.1. Имитация очередей

Имитация осуществляется в виде последовательности событийдвух типов

• Поступление. Объект поступает в службу обслуживания и при-соединяется к очереди. Если очередь до этого была пуста и об-служивание не проводилось, то для поступившего объекта ононачинается немедленно, а в противном случае объект становитсяв конец очереди и ждет обслуживания.

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

Если есть другие стадии1^, объект прямо переходит в следующуюочередь, и это поступление в новую очередь не фиксируется какотдельное событие. Если следующей стадии нет, объект покидаетсистему- В примерах, приведенных в следующем разделе, «сред-ство передвижения» —это объект, а «бензонасос» —обслуживание,в то время как в § 19.3 «люди» —объект, а «продажа товаров в ма-газинах и кафе» — обслуживание.

Все объекты различаются по некоторым признакам. В случае од-ной очереди и одного устройства обслуживания нам обычно нужны

• вектор 1 — последовательность интервалов времен и между по-ступлениями;

1* Например, слияние или разветвление. — Прим. перев.

Page 278: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

19.1. Имитация очередей 277

• вектор 2—последовательность интервалов времен и обслужи-вания (атрибуты).

Заметьте, что команда cumsum преобразует интервал времени меж-ду поступлениями в момент времени поступлений. Как уже отме-чалось, необходимо обращать внимание одновременно и на объект(или объекты), и на общую рентабельность обслуживания, чтобысделать лежащую в основе коммерческую деятельность удобной иквалифицированной и в то же время экономически выгодной. Двауказанных выше вектора могут быть использованы для получе-ния требуемой информации — с этой целью мы разработали М-файлqueue.m. Но сначала напомним, как мы моделировали интервалывремени между поступлениями и интервалы времени обслужива-ния.

19.1.1. Статистическая теория

Промежуток времени между поступлениями It можно описать экс-поненциальным распределением. Как и в гл. 6, запишем его в виде

где г — равномерно распределенная переменная, L — средний интер-вал времени между поступлениями, a It — интервалы между посту-плениями (имитированные).

Интервалы времени обслуживания обычно определяются дис-кретными характеристиками (такими, как: 40% поворачивает нале-во, а 60% поворачивает направо) и могут имитироваться с помощьюгенератора случайных чисел MATLAB'a, как в гл. 6.

19.1.2. М-файл queue.m и некоторые связанные с нимМ-файлы

Заранее подготовленный М-файл queue .m создан, чтобы вычислятьвремя ожидания и время окончания обслуживания для заданныхвремени поступления и времени обслуживания. Обращение кМ-файлу имеет вид

» [Mean_q Serv_u Wait_t Stop_t] = queue(Arr_t, Ser_t)

где два входных вектора суть

• Arr_t — вектор времен поступления,• Ser_t —вектор времен обслуживания,

Page 279: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

278 Глава 19. Кассовые очереди: длинные я короткие

а четыре выходных параметра —это

• Mean.q —скаляр, показывающий среднюю длину очереди за вре-мя имитации;

• Serv_u — скаляр, показывающий долю общего времени, когда об-служивание было востребовано;

• Wait_t — вектор времен ожидания обслуживания в очереди безучета времени обслуживания;

• Stop_t— вектор времен окончания обслуживания.

Например, для двух поступлений Агг = [2 8] и соответствующихвремен обслуживания Ser = [7 4] (в минутах) будем иметь

» [М S Wait Stop] = queue(Arr, Ser)M - 0.9231S = 0.8462Wait = 0 1 °/, 1-й не ждет, а ждет только 2-йStop = 9 13 7, Время окончания обслуживания

М-файл queue.m, использованный выше, разработан для имитациипростой очереди. Для более сложных примеров придется уже неодин раз обратиться к программе queue.m ^.

Для упрощения получения случайных чисел вы можете восполь-зоваться М-файлами exprand. m, normrand. ш и unirand. m. Их легкопонять, поскольку они рассматривались в гл. 6, но все же, если нуж-но, наберите help, чтобы вспомнить обращение к ним. Для вычис-ления экспоненциально распределенных элементов п х fc-матрицы ссредним fi = mu наберите

>> matrix = exprand(ти,п,к)

Чтобы вычислить нормально распределенные элементы п х ^-мат-рицы с средним (х = mu и стандартным отклонением a ~ sigma, на-берите

» matrix = normrand(mu,sigma,n,k)

Чтобы вычислить п х ^-матрицу с равномерно распределеннымимежду а и Ь, наберите

» matrix = unirand(a,b, n,k)

1 ' Мы заметили, что с точки зрения прибыльности время обслуживания долж-но достигать 100%, чтобы минимизировать стоимость, но это неизбежно при-водит к длинным очередям, чего следует избегать, максимально поддерживаязаинтересованность клиента.

Page 280: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

19.1. Имитация очередей 279

19.1.3. Лучшее время делать покупки

Покупатели встают в очередь к кассе супермаркета в соответствии сэкспоненциальным распределением времен поступления со среднимзначением L ~ 50 сек. Каждый делает / = 10 или меньше покупок,а время обслуживания покупки кассой есть 5 = 10 сек. Здесь времямежду поступлениями клиентов может быть имитировано посред-ством IT = exprand(5, L) для пяти покупателей, а число их поку-пок имитируется с помощью N = ceil(unirand(5,0,10)). Некоторыевыборочные данные показаны в табл. 19.1.

Время поступления AT может быть вычислено командой cumsumпо времени между поступлениями I T . Далее, мы можем вычислитьвремена того, когда посетитель отходит от кассы супермаркета, какдолго каждый посетитель должен стоять в очереди, а также сред-нее время ожидания и процент времени, когда касса работает. Всяэта информация может быть получена всего одним обращением кМ-файлу queue.m следующим образом:

» IT = [47 94 58 103 3 ] ;» AT = cumsumC IT )» ST - [90 70 70 30 60] ; У. Время обслуживания>> [Mean.q Ser_u Wait_t Stop_t] = queue(AT,ST)

Решение, найденное M A T L A B ' O M , будет

AT = 47 141Mean_q = 0,

Ser_u = 0.Wait_t =

.9158

.81630 0

Stop_t = 137 211

199

12

281

302

0332

305

27392

Это означает, что в среднем клиента ожидает очередь длиной вMean_q = 0.9158 и 1 человек (т.е. кассовое обслуживание работает

Таблица 19.1. Имитация данных по кассовой очере-ди супермаркета

Время между Число Время обслуживанияпоступлениями IT покупок N ST = S * К

9070703060

479458103

3

97736

Page 281: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

280 Глава 19. Кассовые очереди: длинные и короткие

Таблица 19.2. Результаты имитирования работы очереди в кассусупермаркета

Событие В , р е м * N ST QL С л е ДУ ю Щ е е EoS(сек) ^ поступление

Началопоступление(1)поступление(2)поступление(3)поступление(4)поступление(б)

047

141199302305

97736

9070703060

011212

47141199302305343

Свободно137211281332392

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

19.1.4- Таблица событий

После окончания имитации мы можем построить таблицу событийна основе полученной информации. Таблица событий представляеткаждый из объектов во всех подробностях: время поступления, де-тали атрибутов, длина очереди и время окончания обслуживания.Таким образом, мы имеем возможность отслеживать ход событий,чтобы обеспечить эффективное функционирование и управлениеобслуживанием.

В рассмотренном выше примере о покупках большая часть ре-зультатов наблюдений над очередью может быть отражена в табли-це событий (см. табл. 19.2), содержащей время поступления, времяожидания, время окончания обслуживания и т.д., где N обозначаетчисло покупок и EoS — время окончания обслуживания, тогда какQL —это длина очереди, вычисляемая вручную (замечание: сред-нее этих QL определяется в queue. m, а последний столбец EoS естьвремя окончания обслуживания, полученное с помощью queue.ш).

19.2. Придорожная заправочная станция

Придорожная заправочная станция (см. рис. 19.1) располагается удорожной развилки и имеет один въезд с автострады и один с бо-ковой дороги. У каждого въезда находится по одному бензонасосу,причем автомобили с автострады образуют очередь у одного насо-са, а машины с боковой дороги —у другого.

Page 282: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

19.2. Придорожная заправочная станция 281

Рис. 19.1. План заправочной станции (главный насос на автостраде).

Все клиенты, предварительно заправившись бензином, стоят вочереди, чтобы заплатить в единственную кассу, причем 20% пла-тят наличными, 30% — кредитными карточками и 50% — чеками(подумайте, как вы смогли бы распознать их). Интервалы временимежду поступлениями автомобилей распределены по экспоненци-альному закону со средним временем 100 сек для автострады и 150сек для боковой дороги. Время обслуживания для каждого насо-са имеет нормальное распределение, изменяясь от 10 до 100 сек вслучае насоса у автострады и от 30 до 150 сек в случае другого на-соса. Время, затрачиваемое на кассовые расчеты, равно 30 сек дляналичных, 40 сек для кредитных карточек и 60 сек для чеков.

Исходя из малой выборки первых нескольких поступлений, мож-но определить их моменты времени поступлений, время заправок икассовых расчетов (с округлением до ближайшей секунды), исполь-зуя псевдослучайные числа, как показано в табл. 19.3, где «глав-ный» относится к насосу у автострады, а случайный вектор г ис-пользуется для задания способа оплаты (вектора s). Время в таб-лицах данного раздела дано в секундах. Далее в табл. 19.4 приведе-на соответствующая таблица событий, чтобы показать результаты

Таблица 19.3. Выборочные данных для придорожной заправочнойстанции

Поступления AT Обслуживание ST Способ оплаты Время

главный боковой главный боковой случайный г символ s кассовыхрасчетов

2

246

344

400

17

72

98

356

405

56

52

94

• 33

46

129

74

19

0.96

0.96

0.07

0.22

0.11

+1

+11

0

60

60

30

40

30

Page 283: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

282 Глава 19. Кассовые очереди: длинные и короткие

Таблица 19.4. Выборочная таблица событий для примера с автостра-дой ('ml.p' означает первое поступление 'ml' к насосу со стороны авто-страды (обозначаемому как главный), 'ml.k' означает первое поступле-ние 'ml' к кассе и аналогично 'sl.p' и 'sl.k' для боковой дороги).

Кодсобытия

началоml.psl.p

ml.ksl.ks2,ps3.ps2.k

m2.ps3.k

m2.km3.ps4.p

Время(сек)

02

1758637298

201246275298344356

Времяоплаты

6060

30

4030

Длина очередиш

главная боковая0110000011011

0011012110001

кассы0001222101210

Следующеепоступление

главная2

246246246246246246246344344344400400

боковая171772727298

356356356356356405405

(выход)

5863118178201275231298315345438375

(замечание: EoS — время окончания обслуживания — соответству-ет событию в столбце 1). Мы снова можем использовать queue.m,чтобы проверить правильность столбца EoS:

» Arr = С 58 63 201 275 298] ; У.'/, Поступления в очередь

V/, к кассе

» Ser = [ 60 60 30 40 30];» [mq su wait_t EoS] = queue(Arr, Ser)

где Arr и Ser выбраны из строк с меткой к табл. 19.4 (фактиче-ские общие поступления в очередь к кассе). Результаты (для EoS)согласуются с соответствующими элементами последнего столбцатабл. 19.4, как и следовало ожидать:

[mq su] = 0.8464 0.6377 '

wait_t 0 55 0 0

EoS = 118 178 231 31517

345 7. Хорошо '/.

Замечание: Пусть для времен кассовых расчетов через г обозна-чен вектор равномерно распределенных чисел из [0,1], так что приоплате наличными 0 < г < 0.2, для кредитных карточек 0.2 < г <0.5 и для чеков 0.5 < г < 1. Тогда для получения единиц при г <0.2 и нулей при г > 0.2 нужно просто положить kl = (r<=0.2).

Page 284: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

19.3. Кафетерий 283

Кафетерий

Рис. 19.2. Расположение кафе.

Здесь (г < = 0.2) — логическое выражение, a fcl принимает значение1 или 0.

19.3. Кафетерий

Кафетерий расположен у стоянки автомобилей для посетителей де-лового центра розничной торговли, объединяющего три главныхкоммерческих предприятия: супермаркет, магазин «Сделай сам» исадовый центр. Посетители посещают эти магазины прежде, чемзаглянуть в кафе и что-нибудь поесть и выпить. Как показано нарис. 19.2, они заходят в один из трех магазинов, чтобы купить раз-личные товары, и через некоторое время большинство из них закан-чивает свое посещение торгового центра в кафе, входя туда черезпереднюю (главную) дверь. Кроме переднего входа есть еще и зад-ний вход, но касса в кафе только одна. Предварительные данныеговорят о том, что:

(a) Интервалы времени между приходами покупателей в каждыймагазин подчиняются экспоненциальному распределению сосредними mi, m<i и т$ сек соответственно.

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

(b) 40% покупателей супермаркета потом посетят кафе.

Page 285: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

284 Глава 19. Кассовые очереди: длинные и короткие

50% покупателей магазина «Сделай сам» потом посетят кафе.60% покупателей садового центра потом посетят кафе.

(c) У покупателей время посещения супермаркета, магазина «Сде-лай сам» и садового центра занимает соответствено d±, 6.2 и ^зсек от момента, когда они сначала входят в один из магазинов,до момента их появления в кафе.

(d) Для всех покупателей, приходящих в кафе, время, затрачива-емое на кассу, равно 20 сек при оплате наличными и 40 секпри оплате по кредитной карточке. На деле 90% посетителейрасплачиваются наличными и только лишь 10% —кредитнымикарточками.

Упражнения19.1 Предположим, что среднее время L между поступлениями

рыбацких лодок в морской порт равно 3 мин. Рассмотритетри вида распределений для интервалов времени между по-ступлениями /(:(a) равномерное распределение на [0,6];(b) нормальное распределение со стандартным отклонением

а = 1 ;(c) экспоненциальное распределение.Для каждого распределения возьмите первые 100 поступле-ний и, используя queue.mвременем обслуживания 2 мин длякаждой лодки, постройте на одном графике все три кривыевремени ожидания как функции от индекса. Найдите пико-вое значение времени ожидания для каждого распределенияи отметьте его на графике.

19.2 В примере о супермаркете из § 19.1.4, взяв L = 45, / = 12, S =8, воспользуйтесь queue.m чтобы имитировать девять посту-плений, и постройте соответствующую таблицу событий.

19.3 Для придорожной заправочной станции из § 19.2:(а) Сгенерируйте 145 поступлений со стороны главной доро-

ги (автострады) и 96 поступлений со стороны боковой до-роги и выполните имитацию до вычисления всех трех ин-тервалов времени ожидания (у двух насосов и у кассы) спомощью queue. m. Далее:• постройте столбцовую диаграмму (или диаграмму лю-

бого другого подходящего вида), чтобы отобразить ин-

Page 286: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Упражнения 285

формацию о временах ожидания как функцию временипоступления (для каждого насоса и для кассы);

• рассчитайте пиковое время (с точки зрения наибольше-го времени ожидания) для каждого из насосов, а так-же для кассы. Отметьте пиковые интервалы временина соответствующих графиках.

Подсказка. Результатом будут три вектора времениожидания. Таблица событий здесь не требуется, но ука-жите используемые методы. Время прибытия для кассыесть сочетание двух EoS-времен (времен окончания обслу-живания) для двух насосов. Эти моменты времени при-бытия должны быть упорядочены. В MATLAB'e простойспособ объединения двух векторов-строк а и b в с естьс = [аЬ].

(b) Сгенерируйте случайные числа для каждой очереди и за-полните (опять вручную) таблицу событий, подобнуютабл. 19.4 для показаний часов во временном диапазонепо крайней мере 500 сек.

Подсказка. Проведите большую имитацию, а потомопределите, как много фактически необходимых показа-ний часов, близких к 500 сек или превышающих.

(c) Пусть в задаче об автостраде каждый из клиентов платитот £2 до £18 в соответствии с равномерным распределе-нием. Вычислите общий доход за первые полчаса. Пред-положите, что дополнительные затраты в £70 изменятсреднее время между поступлениями до 80 сек и 130 секдля насосов на автостраде и боковой дороге соответ-ственно.

• Решите, оправданы ли эти затраты.• Выполните ваш М-файл п раз (где п > 10) и вычислите

вероятность V того, что принятое вами решение верно(V и k/n, если одно и то же решение принимается краз в п испытаниях).

Подсказка. Для этого последнего вопроса вы долж-ны воспользоваться переменной seed в генераторе rand.Можно выполнить

>> use_seed = sum(100*clock);» randCseed', use_seed) ;

перед каждым выполнением вашего М-файла.

Page 287: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

286 Глава 19. Кассовые очереди: длинные и короткие

19.4 Для примера с кафетерием из § 19.3, используя mi = 44, m2 =55, 77i3 = 36, m4 = 100 и d\ = 145, d2 = 108, d3 = 69:(a) Сгенерируйте 100 поступлений для каждого из трех мага-

зинов и 50 поступлений через заднюю дверь кафе. Затемвычислите, как много покупателей из каждых 100 дей-ствительно посещают кафе. Покажите все четыре видапоступлений (в минутах) в кафе на одном и том же гра-фике (используя различные цвета и типы линий).

(b) Чему равно общее число посетителей кафе в условиях(а). Постройте график времени обслуживания (сек) в ка-фе как функцию времени поступления (мин). Далее, по-сле вызова queue.m на другом графике покажите времяожидания (сек) как функцию времени поступления (мин).Найдите максимум времени ожидания (или высшую точ-ку графика) и отметьте эту точку символом 'о' на второмграфике.

(c) В условиях (а) и (Ь)найдите, как много покупателей длякаждого из способов попадания в кафе заходят туда впервые 40 мин? Каково общее число покупателей в пер-вые 40 мин? Предположите, что количество денег, котороепокупатель тратит в кафе, удовлетворяет нормальномураспределению с средним £1.49 и стандартным отклоне-нием 30 пенсов. Вычислите выручку за первые 40 минут.Какова прибыль, если стоимость эксплуатации кафе рав-на £90?

Подсказка 1 Для времени обслуживания кассой, как в§ 19.2, пусть клиенты платят наличными, если s = (г <=0.9), и по кредитным карточкам, если s = (0.9 < г), гдег — равномерно распределенный случайный вектор.

Подсказка 2 Команда MATLAB'a nnz подсчитываетчисло ненулевых элементов вектора, а команда sort мо-жет быть использована для засылки всех его ненулевыхэлементов в другой вектор, так что

» агг = [ 2 0 1 5 0 0 4 0 9 ]» arr_l = - sor t (-ar r ) , number = nnz(arr)» arrival .2 = sort( arr_l(l:number) )

что дает1' number = 5 иarr_l = 9 5 4 2 1 0 0 0 0

arrival_2 = 1 2 4 5 9

1J Поскольку команда sort довольно дорогая, здесь лучше выполнитьarrival-2 = sort(arr(arr~ = 0)). — Прим. перев.

Page 288: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

20Рыбное хозяйство

Цель работыВы получите данные о текущем распределении размера и возрастарыбных особей в некотором промысловом хозяйстве. Вам предлага-ется помочь в установлении разумной стратегии лова рыбы (размерячеек сети и частота лова), так чтобы рыбные запасы не истоща-лись. В частности, от вас потребуется разработать модель темпаприроста рыбы.

Используемые математические понятияПри описании эволюции возрастного распределения используют-ся матрицы Лесли (гл.2) и дифференциальные уравнения (гл.7),описывающие прирост рыбы. Дополнительно используется техникаподгонки по методу наименьших квадратов (гл.5).

Используемые возможности MATLAB'aМногое из упомянутого ранее может быть выполнено с помощьюМ-файлов, перечисленных ниже. Вы можете изменить некоторыеиз них в ходе ваших исследований. В каждом случае, набрав help,вы получите информацию о назначении файла и его использова-нии. Вы можете также воспользоваться стандартными командамиMATLAB'a, такими, как eig (собственные значения), plot и bar{столбцовые диаграммы). Вот перечень этих файлов:

fishy.m -загружает данные о рыбе,leslie.m -пример развития популяции (см. гл. 2),Imfish.m -базовая матрица Лесли для популяции рыбы,iodesol.m-численное решение ОДУ первого порядка с

выводом на график,mparft.m -многопараметрическая подгонка по методу

наименьших квадратов,mparst4.m-установочные данные примера на такую

подгонку,

Page 289: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

288 Глава 20. Рыбное хозяйство

resid4.m -функция невязок для этого примера,f ishdat .m-использует fishy.m, чтобы загрузить данные

для указанной выше подгонки

20.1. Предварительный взгляд на проблему

Воспользуйтесь программой fishy, чтобы загрузить данные по ры-бе. Набрав help fishy, вы узнаете, что там. Можно воспользовать-ся обычной командой plot, чтобы увидеть, как вес особи и ее пло-довитость зависят от ее возраста. Точно так же можно построитьграфик или столбцовую диаграмму (гистограмму) числа рыб в за-висимости от их возраста. (Наберите help bar.)

Теперь нужно получить в первом приближении матрицу Лесли{см. гл.2). Наберите help lmf ish, чтобы увидеть, что делает этотфайл. Для полного его обозрения воспользуйтесь блокнотом1'. Вынайдете, что требуется сделать несколько изменений и добавлений,например, чтобы учесть тот факт, что показатель производстваикры (коэффициент фертильности) относится только к женскимособям, или чтобы более реалистично смоделировать зависимостьпоказателя убыли от лова. Последний явно зависит от размеровячеек рыболовной сети, распределения особей по размерам и пе-риодичности лова. Часть этой процедуры потребует от вас создатьматематическую модель для описания связи веса особей с их воз-растом и оценки размера поперечного сечения особи от ее возраста.

Мы еще вернемся к каждому из этих заданий по ходу дела. А по-ка попробуйте выполнить первые два упражнения из приведенныхв конце этой главы.

20.2. Модели роста рыбы

Есть две простые модели, которые мы предлагаем вам рассмотреть.Подробности можно найти в [3]. Предсказания каждой из них нуж-но сравнивать с приведенными данными о весе особи в зависимостиот возраста. Но сначала определим несколько переменных и пара-метров, которые будут использоваться в дальнейшем:

m(t)- масса особи на момент времени t,V{t) -объем особи на момент времени t,t -возраст особи в годах,

Или выполните type lmf ish. — Прим. перев.

Page 290: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

20.2. Модели роста рыбы 289

р -плотность особи в г/см3

(для чистой воды это 1 г/см3),h, w,l -высота, ширина и длина особи (см).

(Замечание. В быту термины масса и вес часто взаимозаменяемы.В действительности вес и масса численно совпадают, только еслипервый выражен в граммах.)

Вы оцените значение р, исходя уже из того факта, что рыбаплавает в воде без видимых трудностей. Указание размеров h, w иI предполагает очень простую форму особи в виде прямоугольнойкоробки. Вы сможете сделать лучше. Коробочная модель означает,что объем V = hlw. Но в любом случае m = pV. Мы еще вернемсяк этому.

20.2.1. Модель роста Гомперца

В этой модели скорость роста (увеличение массы) пропорциональ-на количеству растущей ткани особи, но коэффициент пропорцио-нальности экспоненциально убывает со временем. Это моделируетпроцесс старения и дает формулу

— =re-xtm, (20.1)

где параметры г и А (оба > 0) определяются в зависимости от ря-да обстоятельств. Ясно, что г отражает полную скорость роста, аЛ определяет продолжительность периода быстрого роста. Вы мо-жете грубо оценить 1/А по имеющимся у вас данным, взглянув наваш график приращения веса, чтобы увидеть, в каком возрасте на-блюдается быстрый рост. Подобным же образом вы можете грубооценить г, применив формулу (20.1) к паре значений t, для которыхможно определить значение т и ее производной. Сделайте эти гру-бые оценки для каждого из них и воспользуйтесь f odesol, чтобыисследовать поведение модели. Обратите внимание, что вы должнызадать начальные условия. Выберите значение t, для которого вызнаете соответствующее значение т (t= 1?). Подберите параметрыв свете увиденного вами.

Но ясно, что вы можете решить ОДУ (20.1) интегрированиеми получить аналитическое решение для m(t). Хороший план состо-ит в том, чтобы найти аналитическое решение, а затем применитьf odesol вместе с соответствующей fnxt, чтобы получить график ичисленное решение в качестве перекрестного контроля. Таким обра-

19-4196

Page 291: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

290 Глава 20. Рыбное хозяйство

зом вы можете убедиться в правильности ответов. Если вы плохопомните f odesol, еще раз просмотрите гл.7.

20.2.2. Модель роста фон Берталапфи

Эта более изощренная модель, описывающая увеличение объема, ане массы, характеризуется уравнением

^ = а И - / З У , (20.2)

где параметры а и /3 положительны. В основу модели положен энер-гетический баланс. Первый положительный член представляет со-бой энергетический (подпитывающий) входной поток и пропорци-онален площади поверхности (отсюда Уз), в то время как отри-цательный второй член представляет собой расход ресурсов присоздании тканей тела и поэтому пропорционален самому объему.И опять, вы должны попытаться решить это уравнение численно спомощью f odesol и аналитически, воспользовавшись заменой пере-менной L — V's, Здесь L, очевидно, имеет размерность длины. Что-бы оценить параметры в этом случае, подумайте о максимальномразмере, достигаемом при dVjdt = 0. Если это вам поможет, рассмо-трите значения производной. (Используйте пары соседних точек.)

20.2.3. Выбор лучшей модели и параметров

Используя эти методы, постарайтесь получить разумный набор па-раметров для описания имеющихся у вас данных о росте особи[fish(:,2) в зависимости от f ish(: Д)]. Если вам удастся полу-чить правильные аналитические решения, вы можете пойти дальшеи получить приближение для данных по методу наименьших ква-дратов. Это покажет вам, какая из моделей роста лучше, и позволитопределить наиболее подходящие для нее параметры.

Метод наименьших квадратов обсуждался в гл.5 в контексте по-строения линейных приближений. Та же самая идея минимизациифункции невязок R2 относительно выбранных параметров можетбыть применена к любой параметризации, если у вас есть способминимизации. MATLAB конечно позволяет выполнить это, и вамнужно лишь воспользоваться М-файлами mparst4.m и (для много-параметрической подгонки) mparf t . m. Наберите mparst4, чтобы за-дать необходимый нам здесь пример. Подгонку выполнит mparf t . m,

Page 292: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

20.3. Построение матрицы Лесли 291

в котором используется математическая модель

m = aebVi + c. (20.3)

Получив приглашение, наберите [1 1 1] в качестве начальных зна-чений параметров [abc]. Как вы увидите из последнего графикаи приведенного значения невязки R2. подгонка окажется доволь-но плохой. Теперь вы можете изменить подбираемую функцию вresid4.ni, чтобы получить обе ваши модельные параметризации(решения уравнений (20.1) и (20.2)).

Лучшую параметризацию можно определить либо на глаз, еслиразница заметна, либо выбрав ту, у которой меньше невязка R2,равная сумме квадратов разностей между моделью и данными.

Теперь проделайте упражнения, связанные с моделями роста иих параметрами.

20.3. Построение матрицы Лесли

Вам может потребоваться еще раз просмотреть гл.2, чтобы вспо-мнить структуру и использование матриц Лесли. М-файл leslie.mдает простой пример. Файл 1ш11зЬ.тявляется начальным пунктомдля дальнейших разработок в соответствии с вашими потребностя-ми. Он уже обладает следующими свойствами:

(i) В нем используются данные из fishy.m о производстве икры идополнительная информация, что только одна икринка из 5000развивается до годовалой особи. Однако необходимо учесть, чтоэти данные из fishy.m относятся только к женским особям.

(и) В нем содержатся также вероятности невыживания, свои длякаждой возрастной группы. Здесь вероятности есть просто бо-лее или менее произвольные числа (конечно, меньшие единицы),возрастающие с возрастом/размером особи, поскольку при этомувеличивается вероятность попадания в рыболовную сеть.

(iii) Ключевая особенность матрицы Лесли состоит в том, что осо-би, пережившие один возрастной диапазон, становятся старшеи попадают в следующий возрастной диапазон.

(iv) Ни одна особь не живет больше 10 лет.

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

••9'

Page 293: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

292 Глава 20. Рыбное хозяйство

20.3.1. Поперечное сечение рыбы

Итак, у нас есть хорошая модель с данными о массе и, следова-тельно, об объеме V особей на любой момент времени t. Если выеще не преуспели в получении достоверной модели для этого, вамнужно продолжить работу, воспользовавшись данными f i s h ( : ,2)непосредственно (изменив при необходимости плотность), так какобычно вам будут нужны лишь величины V(t) для целых значе-ний t.

Чтобы оценить, пройдет ли особь сквозь ячейки сети, скажем,размера d см, нужно связать V с ее поперечными размерами. Про-стейшей возможной моделью особи является прямоугольная короб-ка. Тогда придется сделать предположения об отношениях длины квысоте (l/h) и ширины к высоте (w/h). На основе этого из V можнополучить значение h. Ясно, что при h> d особь будет поймана. Увас может быть лучшая модель для формы рыбы. Если так, то по-пробуйте, как и выше, получить формулу, связывающую максимум«высоты» особи с ее объемом.

20.3.2. Вероятность поймать рыбу

Даже если h<d, особь может запутаться в движущейся сети. Са-мое лучшее —придумать формулу для вероятности того, что особьвысоты h будет поймана сетью с ячейками размера d. Например,вероятностная функция

Pc = mm{l,{h/d)2} (20.4)

отражает непременную поимку особи размера, превосходящего раз-мер ячейки, и убывающую возможность этого с уменьшением раз-мера особей. Применение (h/d)2, а не какой-нибудь другой функ-ции, оправдывается тем, что уместнее использовать площадь попе-речного сечения, а не линейные размеры. Вы должны включить ввашу модель еще одну деталь, а именно эффективность траления(лова) в том или ином году. Даже если используется очень густаясеть, общий улов зависит от того, как часто и как полно он про-водится. Вы можете объединить эти факторы в один множитель«эффективности» / е//, на который умножается Рс перед вычисле-нием вероятности 1 — Р не поймать рыбу в указанном году.

Вы должны переделать lmf ish.m, чтобы ввести столько упомя-нутых выше условий, сколько вы сможете. Соответствующие места,куда нужно сделать вставки, указаны в примечаниях к М-файлу.Добавьте ваши собственные комментарии (они должны начинаться

Page 294: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

20.4. Стратегия рыбной ловли 293

с %) по мере добавления условий. Это поможет вам вспомнить, чтовы сделали. Поскольку вы захотите использовать эту программуеще раз, чтобы получить и исследовать матрицу Лесли Н, хорошобы заставить М-файл приглашать вас ввести необходимые значе-ния d и feff. Вы можете сделать это с помощью строки вроде

d=input(' Укажите размер сети d ' ) ;

которая и будет приглашением и сделает значение d (например, 10)доступным для последующих строк из lmf ish.ra. Таким образом высможете повторно использовать этот М-файл, не внося в него изме-нений всякий раз, когда вам потребуется задать новое значение.

20.4. Стратегия рыбной ловли

Если вы хорошо усвоили материал о матрицах Лесли из гл.2, товы вспомните, что судьбу популяции определяют собственные зна-чения матрицы. Если наибольшее значение превышает 1 (в общемслучае по модулю — перев.), то популяция будет процветать. Еслиже оно меньше 1, то популяция в конце концов вымрет. Это даетвам быстрый способ определения, приведет ли ежегодный вылов(вектор популяции, умноженный на Н) со временем к уничтоже-нию рыбных запасов. Вы можете явно удостовериться в том, чтопроизойдет после первого года, взяв текущую популяцию, напри-мер,

>> pO=fish(:,3)

и выполнив годовую рыбную ловлю с помощью

» pl=H*pO

и так далее, образуя [рО pi р2 рЗ. . . ] . Может быть, вы захотитевывести на экран этот единственный график, чтобы получить пред-ставление о том, что случится на самом деле. Вы обнаружите, чтосудьба рыбных запасов решающим образом зависит от размера яче-ек сети d и частоты лова рыбы в течение года / е//. Есть нескольковозможностей для установления разумных правил рыбной ловли.Можно продолжать лов рыбы на постоянном низком уровне сетямиразумных размеров с тем, чтобы молодая рыба имела шанс выра-сти. И, напротив, можно проводить интенсивный лов около года,а затем оставить рыбные запасы в покое. Вы можете смоделиро-вать это, взяв две разные матрицы Лесли Н\ к Щ и перемножив

Page 295: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

294 Глава 20. Рыбное хозяйство

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

Имеется много возможностей, с которыми стоит поэксперимен-тировать. Рыбная промышленность не заинтересована непосред-ственно в количестве рыбы, плавающей где-то, а в максимальномколичестве биомассы (общей массы рыбы), которая может бытьвыловлена в течение продолжительного периода времени. В иде-але ваша стратегия должна состоять в максимизации этого улова.Вы должны показать, как определить количество вылавливаемойкаждый год рыбы в каждой возрастной группе. Возможно, про-стейший способ — сделать вариант lmfish.m, чтобы сформироватьдиагональную матрицу, применение которой к популяции указан-ного года давало бы вектор выловленной рыбы. Умножение (.*) навектор веса рыбы даст вектор выловленной биомассы.

Такая модель имеет много недостатков, о которых вы должныподумать. Например, если вы положите d= 100 и /е// = 0, модельпокажет экспоненциальный рост популяции рыбы. Конечно, на са-мом деле это не так, поскольку запасы пищи конечны и рыбы под-вержены болезням. Однако если популяция находится под контро-лем, можно не обращать внимания на эти ограничения.

Упражнения

20.1 Воспользуйтесь данными, полученными с помощью fishy,чтобы построить столбцовую диаграмму общей массы рыбы(биомассы) как функции возраста.

20.2 Найдите полную биомассу (в некоторых разумных единицах)рыбы всех возрастов, плавающей на морской площади околоодного квадратного километра.

20.3 Оцените плотность рыбы р (г/см3), а затем постройте графи-ки высоты, ширины и длины рыбы как функции возраста всоответствии с моделью рыбы в виде прямоугольной коробки.

20.4 Решите уравнения (20.1) и (20.2) методом разделения пере-менных.

20.5 Используя fodesol, получите численные решения уравнений(20.1) и (20.2) с приближенными значениями параметров. По-том, сравнив решения с данными массы или объема особи,попытайтесь найти лучшие значения параметров.

20.6 Если вам удастся для любой модели получить (интегриро-ванием) выражения в явном виде для V(t), воспользуйтесь

Page 296: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Упражнения 295

mparft, чтобы получить «наиболее подходящие*» параметрыи сравните их с полученными вами с помощью f odesol.

20.7 Дайте ваши оценки параметров [то,г, А] или [то,а,/3] моде-лей (20.1) или (20.2), которые, по вашему мнению, наилуч-шим образом описывают данные о росте особи. Дайте такжеоценку максимумов веса и длины, которых одна из вашихмодельных особей может достичь.

20.8 Оцените, как поперечное сечение особи меняется с возрастом.20.9 Измените матрицу Лесли lmfish.m, чтобы учесть влияние

размера сети, размеров особей и эффективности лова в со-ответствии с приведенными обсуждениями.

20.10 Дайте пример реальной стратегии рыбного промысла (раз-мер сети и коэффициент эффективности, которые обеспечатхороший улов, но сохранят ресурсы после пяти лет подрядрыбного промысла). Сколько биомассы за год может дать вашлов с каждого квадратного километра?

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

Page 297: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

21Эпидемии

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

Используемые математические понятияОт вас требуется: уметь работать с системами дифференциальныхуравнений первого порядка (гл.7); находить линейные приближе-ния; знать, как интегрируются простые линейные уравнения пер-вого порядка; понимать основные идеи подгонки по методу наи-меньших квадратов (гл.5).

Используемые возможности MATLAB'aЗдесь используются методы решения дифференциальных уравне-ний, первоначально рассмотренные нами в гл.7. Пакет по много-параметрическому методу наименьших квадратов был упомянут вгл. 20.

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

f ludat.m -данные по эпидемии гриппа в школе,plagdat.m-данные по бомбейской чуме,

Page 298: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

21.1. Предварительные замечания о некоторых данных 297

colddat .m-данные по эпидемии островной простуды,sirepi.m -программа решения уравнений SIR-модели

эпидемии,sirfn.m -вычисление производной функции для этой

программы,mparft.m -многопараметрическая подгонка по методу

наименьших квадратов,mparst3.m-установочные данные примера на такую

подгонку,resid3.m -функция невязок для этого примера,lagsum.m -кумулятивная сумма.

21.1. Предварительные замечания о некоторыхданных

Воспользуйтесь командой f ludat, чтобы загрузить некоторые вы-борочные данные о числе мальчиков, зараженных гриппом, какфункции времени в днях при вспышки болезни в средней шко-ле. Вы можете рассматривать школу как замкнутый социум из N(= 763) индивидуумов, в котором первоначально зараженным быллишь один человек [1=1] и было S = N — 1 = 762 потенциально«восприимчивых» индивидуумов. По прошествии некоторого вре-мени, число I зараженных возрастает, но не охватит всех, посколь-ку все меньше остается восприимчивых к инфекции. Благополучновыздоровевшие хотя бы временно приобретают иммунитет и могутрассматриваться как «выбывшие» из системы {их число R). Разде-ление N учеников на эти три категории индивидуумов

N = S(t) + I(t) + R{t) (21.1)

используется в так называемой SIR-модели, описанной в следующемразделе.

М-файл plagdat .m также загружает некоторые данные, на этотраз о числе смертей в неделю, зарегистрированных во время эпиде-мии чумы в Бомбее в 1905 и 1906 гг. В отличие от рассмотренноговыше случая категория «выбывших» индивидуумов R(t) состоит,к сожалению, в основном из умерших, а не из приобретших им-мунитет. Но текущий результат с точки зрения построения моделиостается тем же: они уже не могут заболеть или заразить кого-нибудь1'. Загруженные данные представляют собой, грубо говоря,интенсивность убыли (смертности), т. е. dR/dt.

г) Это, конечно, неизбежное огрубление. — Прим. перев.

Page 299: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

298 Глава 21. Эпидемии

Третья выборка данных colddat подобна двум первым и каса-ется распространения вспышки насморка среди населения удален-ного атлантического острова после одного из нечастых посещенийего судном снабжения. На сей раз ежедневно записывалось числоновых случаев насморка. Все население острова составляло 280 че-ловек.

21.2. SIR-модель динамики эпидемии

Эта модель, сформулированная в работах Кермака и Мак-Кендрика30-х гг., использует систему дифференциальных уравнений для опи-сания эволюции популяций на основе переменных 5, / и R, опре-деленных выше, от которых и происходит ее название. В качествевведения в такие модели эпидемий просмотрите, например, рабо-ты [10] или [3]. Поскольку сумма этих трех переменных равна кон-станте (см. (21.1)), только два из следующих уравнений действи-тельно независимы:

ft (21.2)

^•=rSI~aI, (21.3)

f=O7. (2L4)

Еще раз напомним смысл переменных:

• S(t)~ число «восприимчивых к заболеваниям», т.е. число пред-ставителей социума из N человек, находящихся в ожидании за-болеть на момент времени t.

• I(t) — число действительно заболевших и способных заразитьдругих (восприимчивых), но сами они восприимчивыми уже неявляются.

• R(t) есть число «выбывших» из системы потому, что они ли-бо вообще не подвержены инфекции, либо стали невосприимчи-выми, приобретя иммунитет в результате выздоровления, илипотому, что они в тяжелых случаях умерли.

Происхождение этой простой модели, представленной правыми ча-стями данной системы, легко понять в свете приведенных вышепримеров. Взгляните на уравнение (21.4). Оно говорит, что интен-сивность, с которой люди убывают (умирают или выздоравливают)

Page 300: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

21.3. Аналитическое исследование поведения 299

пропорциональна числу случаев /. Здесь

а = интенсивность убывания зараженных (а > 0). (21.5)

Второй член справа в уравнении (21.3) является следствием это-го утверждения, поскольку именно эти индивидуумы выбывают, изкатегории I. Первый член этого уравнения выражает тот факт, чточисло новых случаев заболевания в единицу времени пропорцио-нально как числу потенциальных жертв (восприимчивых) S, таки числу уже заболевших / и потому способных заразить других.Коэффициент пропорциональности есть

г = интенсивность заражения (г > 0). (21.6)

Наконец, правая часть уравнения (21.2) является следствием это-го утверждения, поскольку именно эти индивидуумы выбывают изкатегории S.

Любая конкретная модель теперь полностью определяется ин-тенсивностями выбывания и заражения а и г и набором началь-ных условий. Обычно полагают Я(0) = 0, поскольку тогда еще ни-кто не может выздороветь или умереть. Теперь выбора /(0) = /одостаточно, чтобы определить систему на момент t = 0, посколькуSo = N — IQ. Обычно момент t = 0 выбирают так, чтобы I = IQ = \,если эпидемия запускается одним зараженным индивидуумом.

21.3. Аналитическое исследование поведения

Прежде всего заметим, что dS/dt < 0 для всех значений времени,так что S(t) монотонно убывает, тогда как

dl/dt = 0 при некотором S = р, (21-7)

и, таким образом, I(t) имеет стационарную точку при некотором*тах- Легко видеть, что это максимум, поскольку исходное значениеI(t) обычно довольно малое. Здесь

р = а/г (21.8)

называется относительной интенсивностью выбывания. Такимобразом, если 5 0 < р, то условие (21.7) может никогда не выпол-няться и инфекция заглохнет. И нет эпидемии. Величина /э, следо-вательно, является ключевым параметром модели. Эпидемия опре-деляется условием I(t) > IQ В некоторый момент времени t.

Можно частично решить систему, исключая ( из числа явных пе-ременных и решая получившееся в итоге дифференциальное урав-

Page 301: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

300 Глава 21. Эпидемии

нение. Например, из уравнений (21.2) и (21.3)

откуда, как вы можете проверить,

£=>»(§). (21.10)В общем случае вам нужно численно решить систему, чтобы

установить зависимость решения от t. Однако при определенных об-стоятельствах вы можете допустить некоторые приближения, что-бы далее находить решение аналитически. Например, если вы под-ставите точный результат (21.10) в дифференциальное уравнение(21.4) для R(t), то получите уравнение

~=a(N-R-Soe~f). (21.11)

В этом виде оно требует численного решения. Например, мы можемиспользовать f odesol.m и методы гл. 7. Но когда R/p << 1, мож-но разложить экспоненту по R, скажем, с точностью до второгопорядка, что приведет к уравнению с разделяющимися переменны-ми, которое разрешимо. Для выполнения интегрирования можновоспользоваться «дополнением до квадрата», чтобы получить соот-ношение вида

A2-(R-R)2 ~ a d t - (21.12)

Вы должны проделать это сами (см. упражнения). Результатом бу-дет явная функция #(£}, которая является приближенным решени-ем уравнения (21.11).

Если далее вы попробуете вычислить dR/dt, то получите выра-жение, которое может быть использовано, например, для прямогосравнения с данными о чуме, полученными с помощью plagdat.m.Результат имеет вид

JD

— = Аа sech2 (at + 0). (21.13)

Уравнение (21.10) может быть использовано при изучении окон-чательного исхода эпидемии, когда I становится практически рав-ным нулю при t —J- со. В этом случае уравнение (21.10) может бытьпереписано как

/ Г ЛТ О/ \\ \

(21.14)

Page 302: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

21.4. Анализ данных 301

и затем может быть решено численно, например, с помощью функ-ции MATLAB'a f zero. Если известны число восприимчивых в концеи общая численность социума, то их можно использовать при оцен-ке р. Уравнение (21.10) можно также объединить с условием (21.7),чтобы получить дополнительные соотношения между параметра-ми и максимальным значением /тах- Имеется много других путейприменения таких соотношений в зависимости от вида доступныхданных.

21.4. Анализ данных

В случае данных о чуме вам мало что известно о параметрах мо-дели—неизвестна даже численность рассматриваемого населенияБомбея. Однако, предполагая, что R/p не слишком велико, вы мо-жете исследовать эту модель по ее предполагаемому виду (21.13),где параметры А, а и 0 можно найти подгонкой данных по ме-тоду наименьших квадратов. В главе 5 было описано применениеэтого метода при подгонке прямой линией. Здесь и в гл. 20 исполь-зуется более сложная параметризация, но на тех же принципах:наилучшее приближение минимизирует сумму квадратов «невя-зок» между теоретической кривой и данными. М-файл mparft.mвыполняет это. Вам надо набрать mparst3, чтобы загрузить ранееподготовленные данные о чуме, и задать параметрическую кривуюподгонки этих данных в виде

%=Ке~^. (21.15)

Затем наберите mparft, чтобы начать подгонку, и далее следуйтеуказаниям этого файла. «Невязки» вычисляются с помощьюМ-файла resid3.m. Когда вы успешно выполните все это, внеси-те изменения в копию resid3.m, чтобы ввести в модель уравнение(21.13).

Полное численное решение SIR-модели достигается применени-ем М-файла sirepi.m. Вам надо найти значения параметров а и г,дающие разумное описание данных по эпидемии гриппа в школе.Чтобы получить грубые оценки этих значений, вы можете исследо-вать данные отдельно для малых и больших значений t. Для малыхг, пока R не стало большим, вы можете аппроксимировать 5 разно-стью N — I, так что уравнение (21.3) примет вид

(21.16)

Page 303: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

302 Глава 21. Эпидемии

Решив это уравнение и сравнив результат с данными для малых£, можно получить оценку для г. Аналогично для больших t, когдаразвитие эпидемии зашло далеко, 5 и I становятся небольшими, такчто поведение dl/dt определяется последним членом. И опять, мож-но проинтегрировать это уравнение и получить на этот раз оценкудля а. Далее, можно использовать эти грубые оценки в качественачальных значений при выполнении s i r e p i .

В случае данных по атлантическому острову colddat . m дает вамчисло новых случаев заболевания на каждый день, которое конеч-но связано с интенсивностью его распространения. Чтобы получитьреальное число зараженных больных I(t), вам надо знать, как дол-го сохраняется инфекция. Это бывает по-разному, но в разумноймодели можно взять этот период равным 7 дням. Из этого вы най-дете не только I(t), но и R(t) и, следовательно, S(t). Вы можетеработать с данными вручную или воспользоваться возможностямиMATLAB'a. Может оказаться полезным и заранее подготовленныйМ-файл lagsum.m. Задавая полное разбиение популяции на три ча-сти 5, / и R, вы можете исследовать детали SIR-модели. Так, срав-нив ваши результаты с предсказанными SIR-моделью, вы сможетерешить, является ли семидневный инфекционный период слишкомбольшим или слишком коротким и т. д.

Упражнения

21.1 Охарактеризуйте природу экстремальной точки, определяе-мой условием (21.7), используя I(tmax).

21.2 Выведите формулу (21.10) из уравнения (21.9), используя на-чальные условия, обсуждавшиеся в конце §21.2.

21.3 Проинтегрируйте уравнение (21.12), используя табличный ин-теграл

! I h - 1 ^ ) (21.17)

чтобы получить уравнение (21.13), и попытайтесь найти вы-ражения для А, а и Р через параметры модели а, г, N и SQ.

21.4 Найдите параметры, разумно описывающие данные об эпи-демии гриппа в школе, предполагая, что 7 = 1 при t = 0 и чточисленность в школе N = 763.

21.5 Оцените R/p для пика эпидемии гриппа.21.6 Сколько человек избежали гриппа за пятнадцать дней?

Page 304: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Упражнения 303

21.7 Найдите параметры А, а и 0, которые наилучшим образомописывают данные о чуме, используя приближенное выраже-ние (21.13).

21.8 Внесите изменения в копию sirepi-тдля построения графи-ка dRjdt и найдите замкнутую модель (N, г и а) для данныхо чуме. Вам нужно определить численность населения, под-вергшегося чуме в Бомбее.

21.9 Сравните параметры, найденные в соответствии с этой мо-делью, с параметрами, полученными ранее при наилучшейподгонке.

21.10 Внесите изменения в colddat.m , необходимые для выводатаблицы и графиков S(t), I(t) и R(t) для данных по простудена атлантическом острове. Оцените R(oo).

21.11 Найдите разумные SIR-параметры, описывающие данные попростуде на острове. Прокомментируйте результаты вашегомоделирования.

Page 305: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

2 2

Динамика сноуботинга

Цель работыЗдесь дается математическое описание новой зимней спортивнойигры — «сноуботинга» — скатывания со склона снежной горы на по-чти неуправляемом снаряде наподобие резиновой лодки, и вы при-глашаетесь помочь в разработке динамики этой игры. Вам нужнобудет получить подходящие параметры, чтобы установить условиябезопасного спуска.

Используемые математические понятияВам дается довольно реалистическая динамическая модель, в осно-ве которой лежат законы Ньютона. Движение описываются систе-мой дифференциальных уравнений.

Используемые возможности MATLAB'aВы можете решать дифференциальные уравнения, используя чи-сленные методы и программы MATLAB'a из гл. 7- Для удобстваприведен список относящихся к делу М-файлов, как стандартных,так и специально написанных для данной работы. По ходу иссле-дований вы можете внести необходимые изменения в некоторые изних. При этом с помощью help можно получить информацию оназначении и использовании этих программ. Вот эти файлы:

topog —3-мерный график и графики линий уровнейсклона горы,

snowsl —определение топографической поверхности,snowboat —решение уравнений движения сноубота,snbtfn —вычисление производных этого решения,fsnowO —функция поверхности / (от скалярных

аргументов),fsnowl — fx и fy,fsnow2 —fxx, fXy и fyy,snowmn —определение минимумов поверхности,snowmx —определение максимумов поверхности.

Page 306: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

22.1. Предварительные замечания о задаче 305

22.1. Предварительные замечания о задаче

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

z = /(x,y), (22.1)

где / — гладкая функция, которая далее изучается в snowsl.ru илиfsnowO.m. М-файл topog.m также позволяет вам определить, гденаходятся вершины холмов (максимумы) и низины (минимумы). Внем используется М-файл fmins, минимизирующий функции —/ и/, чтобы найти экстремальные точки. На самом деле у вас естьвозможность использовать первые и вторые частные производные(см. f snowl .ши f snow2.m), так что вы можете найти экстремальныеточки аналитически. Но если вы заглянете внутрь этих программ,то увидите, что вычислять производные слишком долго и затруд-нительно, так что общая программа численной минимизации fminsоказывается более удобной.

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

Е = Ер + Ек~ const, (22.2)

где

ЕР - mgz, Ек = -^mv2. (22.3)

Вы найдете, что скорость, которую сноубот получит, скатившиськ самой нижней точке, слишком велика и опасна. Конечно, в реаль-ности имеются силы сопротивления:

• трение между сноуботом и снегом, которое будет более или ме-нее постоянным;

• сопротивление воздуха, возрастающее с ростом скорости.

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

20-4196

Page 307: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

306 Глава 22. Динамика сноуботинга

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

Прежде чем продолжить, выполните три первых упражненияиз приведенных в конце главы. Это поможет вам получить четкоепредставление о задаче.

22.2. Уравнения движения

Определим сначала некоторые ключевые константы и переменные.Пусть

m —масса сноубота: примите ее равной 150 кг вместес пассажиром;

Л —площадь поперечного сечения: 1.5 х 0.5 м2;д —ускорение силы тяжести 9.81 м/сек2;fi — коэффициент трения скольжения между ботом

и снегом;к —коэффициент сопротивления воздуха (Fk = kv2);г — радиус-вектор сноубота;F — суммарная сила, действующая на сноубот;Тд — сила тяжести;Fp —сила трения скольжения;Ffc —сила сопротивления воздуха;N —сила реакции по внешней нормали к поверхности

снега.В соответствии со вторым законом Ньютона

mv = F = F g + F p + F f c + N , (22.4)

где силы действуют так, как показано схематически на рис. 22.1.Пока сноубот остается на склоне, его движение описывается

уравнениями (22.4) и (22.1). Если же он, подпрыгнув на кочке илисвалившись с обрыва, оторвется от земли, то будет вести себя по-добно пуле в среде с сопротивлением, подчиняясь только уравнению(22.4) с F M = N — 0. При скольжении силу трения разумно взять ввиде

F, = - j ^ | N | . (22.5)

Заметьте, что трение всегда действует в направлении, противопо-ложном скольжению. Поэтому эта простая модель перестает рабо-тать при г = 0, когда сила изменяется скачком. В численном методе

Page 308: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

22.2. Уравнения движения 307

Рис. 22.1. Силы, действующие на сноубот (они не масштабированы)

из гл. 7 здесь могут возникнуть проблемы. К счастью, нас не инте-ресует судьба сноубота после его остановки (г = 0). Оставляем вамустановить разумное значение для ц (см. упражнения). Относитель-но сопротивления воздуха известно, что на автомобили, велосипе-дистов, свободно падающих парашютистов действует сила вида

F f c = -jferjf|. (22.6)

И опять, она всегда противодействует движению, но уменьшает-ся при уменьшении скорости до нуля. Вы должны вычислить под-ходящее значение к, используя экспериментальные данные о том,что свободно падающий парашютист весом 70 кг, распластавшись,достигает конечной скорости около 54 м/сек. Чтобы из значенияк для парашютиста получить соответствующее значение для сно-убота, вам нужно оценить площадь лобового сечения каждого изних и использовать то, что сила пропорциональна этой площади.Чтобы получить уравнение конечной скорости, просто воспользуй-тесь уравнением для свободно падающего тела, описанным выше,и исследуйте его при г = 0, поскольку (по определению) при до-стижении конечной скорости парашютист больше не испытываетускорения.

Силу тяжести моделировать легко:

,~l) (22.7)

в тех же координатах, что и при описании снежной горы.

20'

Page 309: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

308 Глава 22. Динамика сноуботинга

Заметьте, что N - f = 0, так как N —нормаль к поверхности, аг —вектор скорости; он направлен по касательной к поверхности.Если вы знакомы с элементами векторного анализа, то знаете, чтонормаль к поверхности (22.1) параллельна градиенту grad от функ-ции ф — z — f(x,y). Это указывает легкий путь найти ее численно.

Следовательно, уравнения Ньютона (22.4) представляют собойсистему из трех дифференциальных уравнений второго порядка,где лишь две координаты (например, х и у) являются независи-мыми ввиду (22.1). Если, используя это, мы исключим z, z и z,то получим два уравнения второго порядка относительно х и у. Ис-пользуя прием из гл. 7, эту систему можно записать в виде четырехуравнений первого порядка относительно, например, х, т/, и и и, где

и = х, v = у.

Уравнения первого порядка суть

* ) = ( U У ( { ? ) = А - 1 ( - ? М ? + 9 ' * ) , (22.8)

где

Здесь

д __ | -1 Qxjx Qxjy

~QyJx A ~ QyJy

к9 = 9 + fxxU2 + Zfxyuv + fyyv

2 + —\t\(fxu + fyv),

Qx 5 Px lx ПТ

Pz Mи вектор (nx,ny,nz), параллельный grad ф, — это нормаль N к по-верхности.

Если вы захотите проверить эти уравнения, то будьте готовы кнекоторой работе из области анализа и алгебры.

М-файл snowboat. m решает эти уравнения тем же способом, чтои примеры из гл. 7. Функция snbtfn.m просто вычисляет производ-ные в соответствии с уравнениями (22.8).

22.3. Исследование рабочих параметров

Вы выяснили, где находятся вершины холма, сделали приемлемуюоценку коэффициента сопротивления воздуха к и установили проб-

Page 310: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Упражнения 309

ное значение для f.i (коэффициент трения скольжения), так что те-перь можете рассчитать реальный спуск по программе snowboat.Обратите внимание, что если вы стартуете со сравнительно ров-ной площадки, вам потребуется весьма большой толчок (большоезначение у/и^ + VQ), чтобы начать спуск. Помните, что модель тре-ния не очень надежна при низких скоростях на пологих склонах уоснования, где сноу бот остановится под воздействием трения.

Для продолжения исследования полезно выбрать функцию по-верхности / в уравнении (22.1) в виде простой наклонной плоско-сти. В этом случае вы можете решить уравнения аналитически ипроконтролировать работу численного метода. Чтобы выполнитьэто, нужно создать новые копии snowsl.m, fsnowsO.m, fsnowsl.mnfsnows2.m, соответствующие выбору такой плоскости, скажем,

z = f(x,y)=y/2. (22.9)

Частные производные вычислить нетрудно. Задача становится од-номерной, поскольку все может быть выражено, скажем, через у.Лучший метод решения единственного уравнения второго порядкасостоит в использовании v и у вместо у и t в качестве, соответствен-но, зависимой и независимой переменных, связав их уравнением

dvy^v—. 22.10

dy

Таким образом вы можете проверить обоснованность примененно-го формализма и увидеть, насколько хорошо работает численныйметод.

М-файл snowboat. ш запросит у вас параметры (л и к, начальнуюскорость (горизонтальные компоненты) uo и ^ и шаг по времени Stдля численного интегрирования. Заметьте, что вы управляете стар-товым направлением с помощью ио и VQ, при необходимости делаяих отрицательными. Направление последующего движения опреде-ляется топографическими особенностями снежных склонов черезуравнения движения (22.8). В идеале вам захочется начать спусквблизи от вершины холма и остановиться в самой нижней точкерассматриваемой области. Экскурсии в соседние овраги обходятсядорого.

Упражнения

22.1 Распечатайте или сделайте грубый набросок 3-мерного гра-фика и графиков линий уровней, полученных с помощью topog.

Page 311: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

310 Глава 22. Динамика сноуботинга

22.2 Укажите положение всех вершин холмов и низин на площади2 км х 2 км. Дайте также значения их высот.

22.3 Сделайте набросок пары трасс, подходящих для сноуботинга.22.4 Приведите вашу оценку вероятного значения к, основанную

на данных о свободно падающем парашютисте, и вашу оценкуплощади лобового сечения.

22.5 Измените программу вычисления функции поверхности так,чтобы она описывала наклонную плоскость (22.9), обсуждав-шуюся выше. Воспользуйтесь snowboat для описания спус-ка по плоскости из точки (0,2000) с начальной скоростью(0, —2) м/сек и сравните ваши результаты с точным ответом,полученным аналитически интегрированием уравнений дви-жения.

22.6 Если вместо этого наклонная плоскость будет иметь уравне-ние z = у/10, то при каком значении /л (коэффициента трениямежду сноуботом и снегом) спуск с холма будет происходитьс нулевым ускорением?

22.7 Найдите подходящие значения коэффициента трения /i и на-чальной скорости, которые позволят сноуботу достигнуть днадолины, плавно стартовав из самой высокой точки снежногохолма (используйте исходную версию snowsl.m и т.д.). При-ведите исходные параметры, приблизительные значения за-траченного на спуск времени и максимальной скорости, до-стигнутой при спуске.

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

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

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

Page 312: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

2 3

Приливы

Цель работыВам предоставляются данные, состоящие из ряда измерений прили-вов в течение некоторого периода времени, и требуется проанали-зировать их, вывести некоторые заключения и сделать некоторыепредсказания. Конкретнее, данные представляют собой измерениявысоты (в метрах) уровня моря, взятые через заданные равные ин-тервалы времени (в часах) в определенном месте. От вас требуетсянайти такие величины, как среднее значение уровня моря, среднююамплитуду прилива, среднее значение периода между приливами,характеризующие уровень моря в определенный час определенногодня и т.д. Время отсчитывается от 0:00 часов 1 января 1992 г.

Используемые математические понятияПоскольку приливные явления периодичны по своей природе, вампредоставляется возможность узнать кое-что о рядах Фурье и ихприложениях.

Используемые возможности МАТХАВ'аИмеется несколько встроенных MATLAB-программ, которые могутбыть использованы при проведении анализа Фурье и работе с век-торами данных. Это:

f ourier-демонстрация применения рядов Фурье к волнампрямоугольной формы;

fitdemo-демонстрация применения рядов Фурье канализу сигналов;

fft -преобразование Фурье;ifft -обратное преобразование Фурье;spline -интерполяция точек данных сплайнами;mean -вычисление среднего значения данных;шах -нахождение максимумов данных.

Page 313: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

312 Глава 23. Приливы

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

tides.m -загружает данные о приливе tm(l:nt)и hm(l:nt);

fourdat.m -загружает выборочные данные о сигнале;fouran.m -Фурье-анализ данных;foursig.m -только для целей проверки и контроля;locmax.m -локальные максимумы данных;times.mat -вектор времен измерения прилива;heights.mat-вектор измерений высоты прилива;noisyt.mat -вектор времен выборки сигнала;noisys.mat -вектор выборочных данньгх о сигнале.

23.1. Предварительные замечания о данныхпо приливам

Воспользуйтесь командой tides, чтобы загрузить информацию оприливе из файлов данных times.mat и heights.mat. Теперь взгля-ните на эти данные. Время (tm) выражено в часах, а высота (1ш) —в метрах. Первые несколько упражнений из приведенных в концеглавы помогут вам составить общую картину того, о чем пойдетречь.

Исследовав эти и другие особенности, вы убедитесь, что высотаприлива приближенно удовлетворяет уравнению

Л(*) - Ло + Asin(w£ + 0). (23.1)

Оцените ho, А, ш и ф так хорошо, как сможете, и выскажитесь поповоду достоверности каждой из этих оценок. Чтобы сделать это,начните оценивание А с «амплитуды» основного колебания, котороеравно половине разности между максимумом и минимумом. Затемопределите ф, отметив, где начинается каждый период колебания.Вы можете оценить h0 по уровню воды в середине приливной волны.

23.2. Ряды и методы Фурье

Если бы приливы проявляли в точности синусоидальное поведение,как в уравнении (23.1), то таблицы с данными о приливах были бы

Page 314: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

23.2. Ряды и методы Фурье 313

не нужны. На самом деле амплитуда Л и частота ш, определен-ные таким образом, меняются со временем. Другой, более точныйспособ описания заключается в осознании того, что должна присут-ствовать более чем одна частота с соответствующей амплитудой. Вобщем случае любое периодическое возмущение, подобное звуку, со-стоит из многих типов колебаний. В случае оркестра это очевидно.Однако даже самая чистая нота классного певца содержит многочастот помимо «основной гармоники». Вы легко можете убедитьсяв этом, воспользовавшись осциллографом, чтобы получить и ото-бразить частотный состав человеческого голоса или другого звука.

Математически звуковой или любой другой сигнал общего ви-да f(t) может быть представлен в виде ряда Фурье (вариант дис-кретной временной выборки) или в виде интеграла Фурье (вариантнепрерывного времени) составляющих его компонент. Ряд Фурьевыглядит как

f(t)= ]Г Лпе^-, (23.2)п=~ со

где Т — полный временной интервал, в течении которого произво-дятся измерения, и п принимает все целочисленные значения. Выиногда видите эти суммы выраженными через sin и cos, посколькупоследние тесно связаны с комплексной экспонентой:

2тгп*\—JJ . (23.3)

Так как sin(27rni/X) и cos(2imt/T) имеют период Т/п как функ-ции от t, каждая компонента с индексом п соответствует часто-те п/Т. В силу ортогональности функций е~1~^~ при различныхп можно записать частотные коэффициенты Ап в виде интегралапо t:

U ^ (23.4)

Если сигнал f(t) известен лишь в дискретные (с равномерным ша-гом) моменты времени, интеграл заменяется суммой. Сказанноележит в основе команды MATLAB'a fft (fast fourier transform —быстрое преобразование Фурье) и ее обращения iff t. Имеются дведемонстрационные программы MATLAB'a, которые помогут вампонять, как работают ряды и преобразования Фурье.

• fourier показывает, как периодическая волна «прямоугольной

Page 315: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

314 Глава 23. Приливы

формы» может быть представлена (бесконечной) суммой сину-соидальных составляющих. Поскольку здесь форма периодиче-ского сигнала далека от синусоидального, вам потребуется мно-го синусоидальных волн, чтобы хорошо представить исходныйсигнал. На самом деле в случае разрывов ряды Фурье неизбеж-но дают плохую сходимость1' в точках разрыва —это так назы-ваемое «явление Гиббсак

• fftdemo; эта демонстрационная программа начинает свою рабо-ту с построения сигнала, в основе которого лежит сумма двухсинусоидальных (т. е. имеющего две частоты), но добавляет не-который случайный шум, чтобы сигнал выглядел похожим натот, с которым вы могли бы столкнуться, слушая музыку по за-шумленной телефонной линии. Данные выглядят очень похожи-ми на случайные (даже более, чем данные о приливе). Но когдавы взглянете на частотные коэффициенты (преобразование Фу-рье от данных), то ясно увидите исходные частоты. Заметьте,что единица измерения частоты 1 герц есть просто 1 сек"1.

Ясно, что такой анализ Фурье поможет понять, какие периодыили частоты доминируют в данных о приливе.

23.3. Анализ электрического сигнала

Предваряя анализ информации о приливах, мы подготовили неко-торые данные (fourdat), подобные данным из fftdemo, совместнос М-файлом основного анализа (f ouran). Как обычно, ввод helpf name окажет вам некоторую помощь в начале работы. Вы должныустановить, какие частоты присутствуют в исходных данных о сиг-нале, и оценить относительную значимость каждой из частотныхкомпонент. Чтобы сделать это, рассмотрите квадраты компонентвектора, полученного в результате преобразования Фурье от дан-ных. Вероятно, вы захотите проделать некоторые манипуляции скопией f ouran.m, чтобы она выводила на экран или на график же-лаемую вами информацию. Вы также можете организовать выводна печать интересующих вас графиков.

Оцените, какие частоты присутствуют в исходном сигнале. По-сле того, как вы сделаете это, загляните в М-файл f oursig.m, что-бы проверить ваш ответ и узнать, как сигнал был создан на самомделе.

1 ' Она сходится там к полусумме левого и правого предельных значений функ-ции. — Прим. перев.

Page 316: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Упражнения 315

23.4. Фурье-анализ данных о приливе

Вникнув в основной процесс работы М-файла fouran.m, вы може-те теперь изменить его, чтобы справиться с данными о приливе.Воспользуйтесь командой load, чтобы ввести данные о приливе(times.mat и heights.mat). Обратите внимание, что подходящейединицей времени для частот и периодов в этом случае будет час, ане секунда. Вы установили, какая переменная содержит «сигнал»,а какая содержит время для данных о приливе? В первоначаль-ной версии fouran.m сигнал находился в s, а время —в t. Чтобыувидеть данные о приливе, просто введите, например,

» clear» load times.mat

» load heights.mat

>> whos

» plotC . .. .) и т.д.

При выполнении упражнений можно использовать различныесочетания методов. Среди них:

• отображение данных в виде графиков (с различными областямиопределения, если это необходимо);

• изучение как графиков результатов Фурье-анализа, так и самихспектров;

• определение простых параметризаций поведения основных си-нусоидальных составляющих, как в уравнении (23.1);

• использование команды spline при интерполяции подмножествданных.

Упражнения

23.1 Сравните временной интервал между измерениями с общимвременем, затраченным на проведение измерений прилива.

23.2 Рассмотрите максимумы, минимумы и среднее данных.23-3 Постройте график высоты как функции времени для различ-

ных временных масштабов—день, неделя и т.д.23.4 Воспользуйтесь функцией locmax для оценки величин самого

высокого и самого низкого приливов. Действительно ли этозначения высокого прилива?

23.5 Оцените как можно лучше типичное время между последо-вательными самыми высокими значениями прилива.

Page 317: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

316 Глава 23. Приливы

23.6 Определите дни, когда колебания прилива наиболее силь-ные/слабые.

23.7 Определите даты, к которым относятся данные о приливе, исреднее значение измеренной высоты прилива за этот период.

23.8 Определите абсолютные максимальное и минимальное значе-ния измеренных высот и время, когда они были зарегистри-рованы.

23.9 Оцените самый высокий прилив (измеренный прямо или нет)и время, когда он наблюдался. Проделайте то же для самогонизкого прилива.

23.10 Найдите основные частотные компоненты в порядке убыва-ния их значимости. Прокомментируйте численные значениясоответствующих периодов.

23.11 Оцените среднее время между последовательными низкимиили высокими приливами.

23.12 Оцените уровень моря в 3 часа 10 мин пополудни 13 январяи в 6 часов пополудни 4 марта 1992 г.

23.13 Постройте график скорости (м/сек), с которой прилив уходилв полдень 22 января 1992 г. с берега, который имеет уклон1 к 200 (предполагая приливные изменения не зависящимиот географического положения). Какова максимальная ско-рость, достигнутая на песчаном берегу, и когда она была до-стигнута? В качестве помощи можете воспользоваться пара-метризацией (23.1).

Page 318: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Приложение 1Краткий перечень команд MATLAB'a

Более полную информацию о командах можно найти с помощьюhelp, а здесь мы приводим лишь краткий перечень использован-ных в тексте команд. Чтобы получить детальное описание команды,наберите help command.

Основные команды

help fname выводит строки-комментарии в начале М-файлаfname

quit завершает работу системы MATLABexit то же, что и quittype fname выводит листинг М-файла fnamewho выводит список текущих переменныхwhos выводит более подробную информацию о текущих

переменныхclear удаляет переменные и функции из оперативной

памятиwhat выводит список всех М-файлов, находящихся

на дискеwhich выводит местоположение М-файловformat устанавливает формат вывода результатов в

командном окнеdemo запускает демонстрационные программы MATLAB'a

Встроенные значения

piinfflops

GO

подсчитывает числоопераций с плавающей точкой

ans текущий результатclock текущее время

Page 319: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

318 Приложение 1

Арифметические и матричные операции

+ сложение чисел (скаляров), векторов и матрицвычитание чисел (скаляров), векторов и матриц

* умножение чисел или совместимых матриц и векторов.* поэлементное умножение векторов и матриц одного

размера/ деление чисел, правое (обычное) матричное деление. / поэлементное деление векторов и матриц одного

размера\ левое матричное деление" возведение числа или квадратной матрицы

в степень."" поэлементное возведение в степень вектора

или матрицы' транспонированиеsize размеры матрицы или вектораlength число компонент вектораsum сумма элементов вектораnorm вычисление нормы матрицы или вектора

Стандартные математические функции

sin, cos, tan обычные тригонометрические функцииacos, asin обратные тригонометрические функцииexp, log экспонента и натуральный логарифмsqrt квадратный кореньrand генерирует числа на отрезке [0,1)round округляет до ближайшего целогоfix округляет, отбрасывая дробные частиabs модуль вещественного или комплексного

числаangle аргумент комплексного числаreal , imag вещественная и мнимая части комплексного

числаconj комплексное сопряжение

Page 320: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Краткий перечень команд MATLAB'a 319

Матричные функции

det определитель квадратной матрицыeig собственные значения и собственные векторы квадратной

матрицыinv обратная матрицаrref приведение матрицы к верхней треугольной формеrank ранг матрицы

Команды вывода графиков

plot

hold on/offclgmeshmeshdom

contourbartitlexlabel, ylabelaxistextprint

построение графика по точкам, заданнымвекторами (кусочно-линейный Х,У-график)наложение графиковочистка графического окнаграфик ЗБ-поверхности в виде сетки линийобласть определения сеточного графикаЗБ-поверхностиграфик линий уровнейстолбцовая диаграммавывод текстовой строки над графикомвывод текстовых строк вдоль осей х и умасштабирование осейнадпись на графикевывод на печать текущего графика

Команды вычисления функций

fmin минимизация функции одной переменнойimins минимизация функции нескольких переменныхizero нахождение нуля функции одной переменнойspline интерполяция с помощью кубических сплайнов вектора

данныхquad численное интегрированиеode23 решение системы ОДУ методом Рунге—Кутты 2-го

и 3-го порядков

Page 321: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

320 Приложение 1

Статистические операции

mean среднее вектора данныхstd стандартное отклонениеСШПБШП кумулятивная суммаcov ковариация векторов данныхinin, max минимум и максимум

Операции загрузки/сохранения

save запись переменных в файлload загрузка переменных из файлаdiary fname запись протокола сеанса MATLAB'a в файл fnamecd установка текущей директорииdir вывод каталога текущей директории

Page 322: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Приложение 2

Символьные вычисления в MATLAB'e

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

Дифференцирование и решение нелинейныхуравнений — Глава 4

Чтобы найти д = •§£ для f = х + 2ty — t — 2t3, а затем решить отно-сительно у уравнение д — 0, проделайте следующее:

» mapleC f := х + 2*t*y - t - 2*t~3 ;' )» mapleC g := d i f f ( f . t ) ')>> mapleC h := solve(g,y) ')

Здесь можно не ставить точку с запятой, так как MATLAB сам по-ставит их в соответствии с синтаксисом Maple. В ответ вы получите

f := x+2*t*y-t-2*t"3g := 2*y-l-6*t~2h := l/2+3*t"2

Решение дифференциальных уравнений — Глава 7

Чтобы решить ОДУ ^ | = | — х, выполните следующее:

» mapleC a := diff (x(t) , t )=x(t)/ t - x(t) ')>> mapleC b := dsolve(a,x(t)) ')

1 ' Программный пакет Maple для MATLAB'a разработан и распространяетсякомпанией Waterloo Maple Software, Inc. Более подробно о ©Waterloo Mapleможно узнать на сайте: http://www.maplesoft.on.ca/ .

21-4196

Page 323: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

322 Приложение 2

Ответ будет таким (_С1 обозначает произвольную константу):

а := d i f f ( x ( t ) , t ) = x( t )/ t-x( t )b := x(t) - t*expC-t)*_Cl

Интегрирование — Глава 11

Чтобы проверить, что Г 1 -A^dвыполните

= 2 (у/с - г/о - у/с-уг) при с = 2,

» maple( 'с := 2' )

>> mapleC 'а :- int(1/sqrt(с-у), у=у_0..у_1) ')

Результатом будет

а := -2*(2-у_1)~(1/2) + 2*(2-у_0)"(1/2)

Решение систем линейных уравнений — Глава 16

Чтобы проверить, что решение системы

1 1 0 32 1 - 1 13 - 1 - 1 2

- 1 2 3 - 1

\

х2

v

4 \1

-3

V 4 Уравно х = [—1 2 0 1] т , выполните

>> maple(' А := matrixC[[1,1,0,3],[2,1,-1,1],[3,-1,-1,2],[-1,2,3,-1]]) ')

>> maple(' print(A) ')» maple(' х := 3 ) х " } )» maple С Ъ := array(1..4, [4, 1,-3,4])')>> maple(J x := linsolve(A,b)' )

Обратите внимание, что первые две строки, определяющие Л, долж-ны быть набраны в одну строку — у нас строка "разорвана" по чистотехническим причинам. Окончательный результат имеет вид

х := VECTDR([-1, 2, 0, 1])

Чтобы получить дополнительную информацию о Maple, наберите

>> mhelp У, можно mapleC'help')

>> mhelp solve '/, Здесь информация о "solve"

Page 324: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Приложение 3Список всех подготовленных М-файлов

Следующие М-файлы, которые мы подготовили для читателя, мож-но найти в интернете по адресам

http://www.cup.cam.ac.uk/Scripts/webbook.asp?isbn=0521639204или

http://www.cup.cam.ac.uk/Scripts/webbook.asp7isbii~0521630789Ниже мы распределили их по главам, где они впервые появляются.Некоторые из них, конечно, используются и в следующих главах.

Чтобы найти точный номер страницы, на которой упоминаетсяМ-файл или команда MATLAB'a, посмотрите в алфавитном указа-теле разделы «М-файлы» и «команды MATLAB'a».

Часть 1: ВВЕДЕНИЕ

Глава 1

нет

Глава 2

• leslie.m

Глава 3

• fibno.m• hail.m• gcdiv.m• pow.m

Глава 4

• tsine.m• tsine2.m• polyex.m

• goatgr.m• goatfn.m• parnorm.m• linenv.m• cubics.m• hypocyc.m

21*

Page 325: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

24 Приложение 3

Глава 5

• tomato, m• toms.m• diabetic, m• marks.m• mannheim.m

Глава 6

• сбехр.т• exprand.m• normrand.m• randme.m• unirand.m

Глава 7

• fodesol.m• fnxt.m• odegr.m• mode23.m• species.m• specfn.m• ode23k.m• vderpol.m• vdplfn.m• diffeqn.m• dfeqfn.m

Часть 2: ИССЛЕДОВАНИЯ

Глава 8

нет

Глава 11

• zzl.m• slide l.m• slidelfn.m• slide4.m• slide4fn.m

Глава 9

• gcdran.m• primes.m• psp2.m• miller .m

Глава 10

• hypocy.m• linenv.ra• paramc.m

Глава 12

• mobius.m• mobiusl.m• cobm.m• cobq.m• matit2.m• matit3.m• quadn.m• perdoub.m

Page 326: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Список всех подготовленных М-файлов 325

Глава 13

• cnrl.m• cnr2.m

Глава 14

• randperm.m• cycles.m• riffle l.m• riffle 1 a. m

• remm.m• riffle 1 c m• rufflel.m• rufflelc.m• ruffle2.m

Глава 15

• fulLnew.m

• gauss_ja.m• Lrate.m• cont4.m

Глава 16

• Iin_solv.m• chop.m• Iu2.ra• Iu3.m

• Iu4.m• solv6.m• spar_ex.ra

Глава 17

• intdemol.m• intdemo2.m• cont4.m• cont7.m• polyfit2.m• polyval2.m

Глава 18

См. гл. 7

Часть 3: МОДЕЛИРОВАНИЕ

Глава 19

• queue, m• exprand.m• normrand.m• unirand.m

Глава 20

• fishy, m• lmfish.m• mparft.m• mparst4.m• resid4.m• fishdat.m

Page 327: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

326 Приложение 3

Глава 21

• fludat.m• plagdat.m• colddat.ra• sirepi.m• sirfn.m• mparst3.m• resid3.m• lagsum.m

Глава 22

• topog.m• snowsl.ra• snowboat.m• snbtfn.m• fsnowO.m• fsnowl.m• fsnow2.m• snowmn.m• snowmx.m

Глава 23

• tides.m• fourdat.m• foursig.m• locmax.m• times.mat• heights.mat• noisyt.mat• noisys.mat

Page 328: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Приложение 4

Как получить М-файлы с решениями

При составлении курсов на основе этой книги можно с помощьюпароля найти в Интернете применяемые М-файлы и наброски не-которых простых решений. Руководители курсов должны связатьсяс издателем — CUP — по адресам:если книга в мягкой обложке,

http://www.cup.cani.ac.uk/Scripts/webbook.asp?isbn=0521639204или, если книга в твердой обложке,

http://www.cup.cam.ac.uk/Scripts/webbook.asp7isbn~0521630789

Page 329: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Приложение 5

Избранные ресурсы MATLAB'a вИнтернете

Название MATLAB означает: matrix laboratory — матричная лабо-ратория. Первоначально MATLAB создавался, чтобы обеспечитьлегкий доступ к пакетам LINPACK и EISPACK, представлявшимсобой последнее достижение искусства программирования опера-ций с матрицами. MATLAB преобразует пользовательские коман-ды (включая М-файлы) в коды С или C++, а затем обеспечиваетвызов других программных модулей (подпрограмм). Сегодняшниеразработки MATLAB'a покрывают большие области приложений.

Чтобы узнать о продуктах разработок, просмотрите web-стра-ницу

• http://www.mathworks.com/

Если вам этого недостаточно или вы хотите воспользоваться непо-средственно пакетами LAPACK и EISPACK, посмотрите

• http://www.netlib.org/Iapack/

Пользователям, желающим найти простое введение в MATLAB,будут полезны

• http://www.ius.cs.cmu.edu/help/Math/vasc-help-matlab.html• http://www.unm.edu/cirt/info/software/apps/matlab.html

Начинающим пользователям, предпочитающим краткие руко-водства по MATLAB'y с конкретными и простыми примерами, сто-ит посмотреть

• http://www-math.cc.utexas.edu/math/Matlab/Matlab.html• http://www.liv.ac.uk/pollol/karen/document/486.dir/486.html• http://www.indiana.edu/~statmath/smdoc/Matlab.html• http://classes.cec.wustl.edu/~cslOO/lab5/

Page 330: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Избранные ресурсы MATLAB'a в Интернете 329

Продвинутый пользователь MATLAB'a может заглянуть на сле-дующие страницы в поисках более всесторонних руководств:

• http://wwwcache.rrz.uni-hamburg.de/RRZ/software/math/Matlab/• ftp://ftp.math.ufl.edu/pub/matlab/

В Интернете можно найти и более сложные примеры; например,посмотрите М-файлы на следующих страницах:

• ftp://ftp.cc.tut.fi/pub/math/piche/numanal/• ftp://ftp.mathworks.com/pub/mathworks/toolbox/matlab/

sparfun/

На следующих сайтах содержится техническая информация поМАТЪАВ'у и страницы FAQ (frequently asked questions - часто за-даваемые вопросы):

• http://www.mathworks.com/digest/digest.htrnl• http://www.mathworks.com/newsletter/nn.html• http://www.math.ufl.edu/help/matlab-faq.htrnl• http://ftp.mathworks.com/support/faq/faq.shtml• http://www.uni-karlsruhe.de/~MATLAB/FAQ.html

Page 331: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Список литературы

1. Н. Abelson and A.diSessa, Turtle Geometry, Cambridge, Mass: MIT

Press, 1981.

2. J. W. Bruce, P. J. Giblin and P.J.Rippon, Microcomputers and

Mathematics, Cambridge: Cambridge University Press, 1990.

3. P. Doucet and P. B. Sloep, Mathematical Modelling in the Life Sciences,

Chichester; Ellis Horwood, 1992.

4. I. S.Duff, A.M.Erisman and J.K.Reid, Direct Methods for Sparse

Matrices, Oxford: Clarendon Press, 1986.

5. G.Fischer, Mathematical Models, Braunschweig: Friedrich Vieweg Sohn,

1986 (Commentary volume, p.53.)

6. M.Gardner, Mathematical Carnival, Washington DC: Mathematical

Association of America, 1989.

7. P. J. Giblin, Primes and Programming, Cambridge: Cambridge University

Press, 1993.

8. L. M. Hall, "Trochoids, roses, and thorns—beyond the spirograph', College

Mathematics Journal 23 (1992), 20-35.

9. L. Haws and T. Riser, 'Exploring the brachistochrone problem', American

Mathematical Monthly 102 (1995), 328-336.

10. F. C. Hoppensteadt, Mathematical Theories of Populations:

Demographics, Genetics and Epidemics, Philadelphia: Society for

Industrial and Applied Mathematics, 1975.

11. J. F. Humphreys and M.Y.Prest, Numbers, Groups and Codes,

Cambridge: Cambridge University Press, 1989.

12. N. Koblitz, A Course in Number Theory and Cryptography, New York:

Springer-Verlag, 1987.

13. J. C. Lagarias, 'The Зх + l problem and its generalizations', AmericanMathematical Monthly 92 (1985), 3-23.

14. H.-O.Peitgen and P. H- Richter, The Beauty of Fractals : Images ofComplex Dynamical Systems, Berlin: Springer-Verlag, 1986. (Имеетсярусский перевод: ПайтгенХ.-О., РихтерП.Х. Красота фракталов.Образы комплексных динамических систем. — М.: Мир, 1993.)

Page 332: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Список литературы 331

15. Y. Saad, Iterative Solution for Sparse Linear Systems, Boston: PWS Int.

Thompson Pub. (ITP), 1996.

16. A.C.Thompson, 'Odd magic powers', American Mathematical Monthly

101 (1994), 339-342.

17. В. М. Тихомиров, Рассказы о максимумах и минимумах. — М.: Наука,

1986. (Английский перевод: V- M.Tikhomirov, Stories About Maxima

and Minima, Washington DC: Mathematical Association of America,

1990.)

Page 333: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Список дополнительной литературыпо MATLAB'y на русском языке

1. ГультяевА. MATLAB 5.2. Имитационное моделирование в средеWindows.—СПб.: Коронспринт, 1999, 288 с.

2. ДьяконовВ. П., АбраменковаК. В. MATLAB 5. Система символьнойматематики. — М.: Нолидж, 1999, 633 с.

3. ДьяконовВ. П. MATLAB: учебный курс.— СПб.: Питер, 2001, 560 с.4. ЛазаревЮ.Ф. MATLAB 5.x. К. Изд. группа BHV, 2000, 384 с. («Би-

блиотека студента».)

5. Мартынов Н.Н., Иванов А. П. Matlab 5.x. Вычисления. Визуализация.Программирование.— М.: Кудиц-образ, 2000, 332 с.

6. Медведев В. С, Потёмкин В. Г. Control System Toolbox. MATLAB 5для студентов. — М.: Диалог-МИФИ, 1997, 287 с.

7. ПотёмкинВ.Г. Введение в MATLAB.-M.: Диалог-МИФИ, 2000,350 с.

8. ПотёмкинВ.Г. Система инженерных расчетов MATLAB 5.x. В 2-хтомах. —М.: Диалог-МИФИ, 1999, 366 с. + 304 с.

9. ПотёмкинВ.Г. Система MATLAB. Справочное пособие. — М.:Диалог-МИФИ, 1997, 350 с.

10. РудаковП. И., Сафронов В.И. Обработка сигналов и изображений.MATLAB 5х. - М . : Диалог-МИФИ, 2000, 413 с. (Пакеты прикладныхпрограмм.)

Page 334: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Предметный указатель

М-файл-функдия (functionM-file) 25

М-файлы (M-files) 21- сбехр 96- chop 238- cnrl 188- cnr2 189- cobm 169- cobq 179, 182- colddat 297- cont4 225, 260- cont7 263, 264- cubics 68- cycles 196- dfeqfn 113- diffeqn 113- exprand 96, 278- Lrate 221, 228- fftdemo 311- fibno 45, 52- fishdat 287- fishy 287- fludat 296- fodesol 106, 287- fouran 312- fourdat 312- fourier 311- foursig 312- fsnowO 304- fsnowl 304- fsnow2 304- fulLnew 215, 223- gaussja 216, 224- gcdiv 49- gcdran 124

- goatfn 64- goatgr 64- hail 46, 52- hypocy 69- hypocy 133- intdemol 252- intdemo2 258- lagsum 297- leslie 39, 287- lin_solv 238- linenv 66, 137- lmfish 287, 291- locmax 312- Iu2 238- Iu3 238- Iu4 238, 248- matit2 174, 176- matit3 174- miller 130- mobius 166, 168, 174- mobiusl 166, 174- mparft 287, 290, 297- mparst3 297- mparst4 287, 290- normrand 94, 278- paramc 138- parnorm 65- perdoub 180- plagdat 296- polyex 63- polyfit2 263- polyval2 263- pow 50, 53, 56- primes 126, 128- psp2 129

Page 335: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

334 Предметный указатель

- quadn 179- queue 284, 286- randrae 101- remm 206- resid3 297- resid4 288- rifflel 205- rifflela 205- rifflelc 209-rufflel 211-rufflelc211-ruffle2 211- sirepi 297- sirfn 297- slidel 159- slidelfn 159- snowboat 304- snowbtfn 304- snowmn 304- snowmx 304- snowsl 304- solv6 241- spar_ex 244- species 109- tides 312- topog 304- tsine 61- tsine2 61- unirand 94, 278- vderpol 111- vdplfn 111- zzl 149

Алгоритм Евклида (Euclid'salgorithm) 47

анализ возмущений(perturbation analysis)240

- данных (data analysis) 74- Фурье (Fourier analysis) 314арифметика (arithmetic) 15

- основные операции (arithmeticbasic operations) 15

База данных (database) 77биты, их вычисление (bits

calculation of) 56блокнот (notepad) 22брахистохрона

(brachistochrone) 156быстрое тасование (ruffle) 209

Вектор- представление полинома

(vector representingpolynomial) 57

векторы (vectors) 18, 30, 44- столбцы (vectors column) 19- строки (vectors row) 19вероятность (probability) 90,

124взаимно простые числа

(coprime) 124-126вращение (rotation) 149время между поступлениями

(inter-arrival time) 277- наступления события (arrival

time) 96- ожидания (waiting time) 277- поступления (arrival time) 277выступ (cusp) 70, 145, 155

Гипоциклоида (hypocycloid) 69,73

глобальные переменные (globalvariable) 159

граф (graph) 244- ребро (edge) 243- связности (connectivi-

ties) 243- узел (graph node) 243график (plot) 20- ЗО-линии (3D line) 261

Page 336: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Предметный указатель 335

- линий уровня (contour) 260- поверхности (surface) 259- подграфик (subplot) 261- поля направлений (grain plot)

107- сечений (plot sliced) 261- установка атрибутов (graph

annotation) 263

Дверь гаража (garage door) 139двигатель Ванкеля (Wankel

engine) 140деление поэлементное (division

element-by-element) 40десятичные разряды значащие

(digits significant) 237дифференциальные уравнения

(differential equations)105

- автономные (autonomous) 108- высшего порядка (higher

order) ПО- обыкновенные (ordinary) 270- первого порядка (first order)

107, 108- система (coupled) 304, 308- системы первого порядка

(coupled first order) 296

Задача о козе (goat problem)64, 69, 72

Интеграл (integral) 158- несобственный (improper) 158- Фурье (Fourier) 313интервалы между

наступлениямисобытий (inter-arrivaltime) 96

итерации (iterations) 214, 221- ID (interpolation ID) 249- 2D (interpolation 2D) 257

- линейная и кубическая (linearand cubic) 254

- сплайны (interpolationspline) 255

итерационное уточнение(iterative refinement)239

Касательные параллельные(tangents parallel) 140

квадратичный функционал(quadratic functional) 89

квадратное уравнение(quadratic equation) 188

кинетическая энергия (kineticenergy) 157

команд повторение (commandsrepeating) 17

команды MATLAB'a-\ 223- abs 36- acos 31, 65- angle 36- axis 59, 68- axis('equal') 60- axis ('square') 60- axis(axis) 61- bar 46, 76, 287- ceil 92- clear 26- comparison (==) 47- cond 240- condest 240- conj 36- contour 304- cumsum 75- det 32- diag 33- diary 26- eig 35, 287- exp 29

Page 337: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

336 Предметный указатель

- fft 311-fix 92- floor 48, 92- flops 235-fauns 161,304- for 44, 45- format 16, 31, 266- fprintf 99- fsolve 163, 232- fzero 65, 301- get 261- gplot 244- help 21, 24- hist 76, 196-hold 20, 21,58, 62, 265-135- if...else 46- ifft 311- iraag 36- Inf 168- input 293- interpl 255- interp2 264- inv 32- length 59- load 28- magic 118- max 46, 75, 311- mean 75, 311- median 75- mesh 259, 304- meshdom 226- meshgrid 226, 259- min 75- nnz 286- norm 31, 257, 266- ones 33-pi 16- plot 20, 58, 59, 76, 217- plot3 261- polyfit 63, 69, 80

- polyval 58, 63, 69, 81, 250- prod 75- quad8 158, 159- rand 55, 90, 91, 94, 95, 101,241- randn 94, 95, 103- randperm 92, 195, 197- real 36- rem 46, 48, 50, 55, 206- roots 69, 179, 180- round 92-rref 34, 119, 236- rrefmovie 236- save 27- set 250, 261- sin 16- slice 261- sort 75, 195, 203, 286- sparse 243- speye 243- spline 311- sprintf 244- spy 242- sqrt 30, 36, 266- std 75- sum 30, 75- surf 259- symrcm 242- tic 235- title 20- toe 235- type 23- view 259, 263- what 24- while 45, 49, 246- who 18- whos 18- xlabel 20- ylabel 20- арифметические операции

(arithmetic operations)318

Page 338: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Предметный указатель 33"

- вывода графиков (graphoperations) 319

- вычисления функций(function operations) 319

- матричные операции (matrixoperations) 318

- матричные функции (matrixfunctions) 319

команды оболочки (shell) 28- операции

загрузки/сохранения(load and saveoperations) 320

- основные команды (basicoperations) 317

- стандартные функции(common functions) 318

- статистические операции(statistics operations)320

- точка с запятой (semicolons)47

комплексные числа (complexnumbers) 35, 187

- аргумент {argument 36- действительная часть (real

part) 36- мнимая часть (imaginary

part) 36- модуль (modulus) 36- расстояние (distance) 188- сопряженное (conjugate) 36конструкция педали (pedal

construction) 141кривая (curve) 57- гипоциклоида (hypocycloid)

69, 73, 133- график (plotting) 59- квадратного корня (square

root) 164

- лепестки розы (rose) 133- нормаль (normal) 65- парабола (parabola) 65, 158- параметрическая (parametric)

60- постоянной ширины (constant

width) 140- синус (sine) 61, 64- спирограф (spirograph) 69,

153- циклоида (cycloid) 156- эллипс (ellipse) 154- эпициклоида (epicycloid)

135, 154кубическое уравнение (cubic

equation) 68, 191- двойной корень (double root)

68

Лестница (ladder) 138ломаная (zigzag) 147ломаная (line broken) 160

Магический квадрат (magicsquare) 118

- пандиагональный(pandiagonal) 120, 123

- произведение (product of) 121масштабирование для двух

кривых (scale with twocurves) 61

- изменение командой axis(scale change by axiscommand) 60

- фиксация (scale freezing) 61матрица (matrix) 31- Лесли (Leslie) 37, 288, 291- верхняя треугольная форма

(reduced echelon form)119

- вращение (rotation) 149

22-4196

Page 339: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

338 Предметный указатель

- диагональная (diagonal) 33- единичная (identity) 32- магический квадрат (matrix

magic square) 118- невырожденная (nonsingular)

35- обратная (inverse) 32- определитель (determinant) 32- перестановок (permutation)

122- разреженная (sparse) 242, 243- расширенная (augmented) 33- треугольная форма (echelon

form) 34- умножение (multiplication) 32метод Гаусса—Якоби

(Gauss—Jacobi) 216- Ньютона—Рафсона

(Newton—Raphsonmethod) 186, 215, 222

- расходящийся (divergent) 191- комплексный (complex) 187- исключения Гаусса (Gauss

elimination method) 236- метод наименьших квадратов

(least squares method)252

- ID (least squares method ID)252

- 2D (least squares method 2D)263

методы Фурье (Fouriermethods) 313

минимизация (minimisation) 87минимум (minimum) 87- функции (function) 161многоугольник правильный

(polygon regular) 150множество данных (data set) 74- Мандельброта (Mandelbrot

set) 192

Наибольший общий делитель(greatest commondivisor) 47, 124, 131

- трех чисел (three numbers) 54,126

наименьшее общее кратное(least common multiple)151, 197

нелинейные системы (nonlinearsystems) 221

- уравнения (equations) 214неподвижная точка (fixed

point) 177неравенство Коши- Шварца

(Cauchy—Schwarzinequality) 87

- доказательство (proof) 87нормаль к кривой (normal to a

curve) 65нулевой вектор (zero vector)

262

Область притяжения (basin ofattraction) 188, 189, 191

- сходимости (convergenceregion) 218

обозначения черезнепересекающиесяциклы (disjoint cyclenotation) 195

огибающая (envelope) 65, 71,135, 137, 139, 141

операции с плавающей точкой(флопы) (floating pointoperations (flops)) 234

определитель (determinant) 32остаток (remainder) 46- для больших чисел (when

numbers are large) 50, 53остаточная коррекция (residual

correction) 239

Page 340: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Предметный указатель 339

отверстие, квадратное (hole,square) 140

очередь (queue) 275ошибки, неопределенная

переменная (errorsundefined variable) 17

Парабола (parabola) 158паутинообразная диаграмма

(cobweb diagram) 169,175, 180, 182

перестановка (permutation) 92,122, 195, 200

- мест (position) 201, 203- непересекающиеся циклы

(disjoint cycles) 195, 209- порядок (order of) 205- транспозиция (transposition)

195- циклическая (cyclic) 208- число циклов (number of

cycles) 198перестановочная матрица

(permutation matrix)243

перпендикулярные биссекторы(perpendicular bisector)137

печать (print) 28полином (polynomial) 57, 250- n переменных (in n

dimensions) 257- корни (roots) 57, 68- Тейлора (Taylor) 61популяция (population) 176порядок (order) 205- сходимости (convergence)

217, 228последовательность Мёбиуса

(sequence Mobius) 166,169, 174, 185

- Ньютона—Рафсона(Newton—Raphson) 187

- квадратичная (quadratic)169, 178, 182, 185

- область притяжения (basin ofattraction) 188, 189, 191

- периодическая (periodic)167, 175, 182

- притягивающийцикл (attracting cycle)178,183

- сверхпритягивающий цикл(superattractingcycle) 182

- сильно расходящаяся (wildlydivergent) 167

- сходящаяся (convergent) 174,180,182

- удвоение периода (perioddoubling) 180

- хаотичная (wildly divergent)182

- экспоненциальная(exponential) 183

построение графиков (plotting)20

потенциальная энергия(potential energy) 157

приближение (approxima-tion) 249

- ошибка (error) 256- по методу наименьших

квадратов (least squaresfitting) 78, 290, 301

- доказательство (least squaresmethod proof of) 88

- нелинейное (least squaresfitting nonlinear) 82

- обоснование (least squaresfitting formulaederivations) 87

22'

Page 341: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

340 Предметный указатель

- полиномами (polynomialfunction fitting) 80

приливы (tides) 311, 312производная частная

(derivative partial) 308,309

простое число (prime) 126, 128процесс Пуассона (Poisson

process) 103псевдопростое число

(pseudoprime) 52, 128

Разностные уравнения второгопорядка (differenceequations second order)113

- первого порядка (first order)111

разреженная матрица (sparsematrix) 242

- граф (graph) 244распечатка (printing) 28распределение нормальное

(distribution normal) 94- равномерное (uniform) 91, 277- случайное (random) 277- экспоненциальное

(exponential) 95, 277редактирование файлов (edit a

file) 22рыба (fish) 288- лов (catching) 292- рост (growth) 288ряд Тейлора (Taylor

polynomial) 222

Сила тяжести (gravity) 157скользящая бусинка (sliding

bead) 157скрипт-файл (script) 21, 23след (trace) 123

случайные пары (random pairs)124

- переменные (variable) 102- распределения (distribu-

tions) 96- тройки (triples) 126- целые (integers) 92- числа (numbers) 90собственное значение (eigen-

value) 35, 121, 173, 176,243

собственный вектор(eigenvector) 35, 121,173, 176

совпадение (congruence) 131создание запросов (querying) 77сопротивление (resistance) 306сортировка (sorting) 76сохранение файлов (saving

work) 26спирограф (spirograph) 69, 153среднеквадратичная ошибка

(root mean square error)256, 265

статистика (statistics) 75степени матрицы (matrix

powers) 171степенной алгоритм (power

algorithm) 50, 53, 55,129

сумма Фурье (Fourier sum) 313

Таблица событий (event table)280

тасование (shuffle) 201- быстрое (ruffle) 209- внахлест (riffle) 201- внутрь (in) 203, 207, 208, 213- колоды с нечетным числом

карт (for odd pack) 207- поверх (out) 205, 207, 209, 213

Page 342: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Предметный указатель 341

- порядок (order of) 205- снятие сверху (shuffle cut)

202, 207, 213теорема Ферма (Ferraat's

theorem) 50, 128тест Миллера (Miller's test) 51,

130транспозиция (transposition)

195транспонирование (transpose)

19трение (friction) 165, 306треугольная форма (echelon

form) 119, 236

Удвоение периода (perioddoubling) 180

умножение поэлементное(multiplication element-by-element) 19, 30

- скалярное произведение(scalar product) 30

уравнения движения (equationsof motion) 306

Фазовая плоскость (phaseplane) 108

- неподвижная точка (fixedpoint) 109

- орбита (orbit) 109- предельный цикл (limit cycle)

111- седловая точка {saddle point)

109

файлов редактирование (filesedit) 22

- сохранение (save) 22фрактальное множество

(fractal set) 193функции многих переменных

(multiple variables) 82- распределения (distribution

function) 102функционал (functional) 89

Циклоида (cycloid) 156, 162цифры, применение степенного

алгоритма (digits usingpower algorithm) 53

Частичный выбор ведущегоэлемента (partialpivoting) 236

числа Фибоначчи (Fibonaccinumbers) 44, 52

число Кармайкла (Carmichaelnumber) 52

Ширина (width) 140

Эпидемии (epidemics) 296- SIR-модель (epidemics SIR

model) 297эпициклоида (epicycloid)

154

Ящики, отпирание (boxes,unlocking) 200

Page 343: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Оглавление

От переводчиков 5

Предисловие 9

I. Основы ' 13

Глава 1. Введение 151.1. Первые шаги в MATLAB'e 151.2. Векторы и графики 181.3. Создание и редактирование скрипт-файлов 211.4. Получение распечаток 28Упражнения 28

Глава 2. Матрицы и комплексные числа 302.1. Векторы и матрицы 302.2. Комплексные числа 352.3. Динамика населения: матрица Лесли 37Упражнения 40

Глава 3. Целые числа 443.1. Цикл вычисления чисел Фибоначчи 443.2. Условный цикл: Зп + 1 или задача о граде 463.3. Евклидов алгоритм нахождения наибольшего об-

щего делителя 473.4. Теорема Ферма и степенной алгоритм 49Упражнения 523.5. Приложение 55

Глава 4. Графики и кривые 574.1. Полиномы 574.2. Простые примеры вычерчивания кривых 584.3. Полиномы Тейлора 614.4. Приближения с помощью функции polyfit 624.5. Задача о козе 644.6. Огибающие семейства линий 65Упражнения 684.7. Приложение 72

Глава 5. Представление данных 745.1. Анализ данных 74

Page 344: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Оглавление 343

5.2. Приближение по методу наименьших квадратов... 78Упражнения 855.3. Приложение 87

Глава 6. Вероятность и случайные числа 906.1. Генерирование случайных чисел 906.2. Случайные целые числа 926.3. Моделирование равномерных распределений 946.4. Моделирование нормальных распределений 946.5. Моделирование экспоненциальных распределений. 95Упражнения 986.6. Приложение 100

Глава 7. Дифференциальные и разностные уравнения 1057.1. Обыкновенные дифференциальные уравнения

(ОДУ) 1057.2. Системы дифференциальных уравнений 1087.3. Разностные уравнения 111Упражнения 113

И. Исследования 115Глава 8. Магические квадраты 117

8.1. Введение 1188.2. Магические квадраты размера 3 х 3 1188.3. Магические квадраты размера 4 х 4 1218.4. Магические квадраты размера 5 x 5 (факультатив-

но) 123

Глава 9. НОД, псевдопростые числа и тест Миллера 124A. НОД случайных пар и троек чисел 124B. Псевдопростые числа и тест Миллера 128

Глава 10. Графики: кривые и огибающие 133A. Лепестки розы и эпициклоиды 133B. Огибающие 136C. Кривые постоянной ширины 139

Глава 11. Ломаные и кривые наискорейшего спуска 147A. Спирографы и ломаные 147B. Кривые наискорейшего спуска 156

Глава 12. Последовательности вещественных чисел 16612.1. Последовательности Мёбиуса 16612.2. Паутинообразные диаграммы 16812.3. Функции Мёбиуса и степени матриц 171А. Исследование последовательностей Мёбиуса 174

Page 345: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

344 Оглавление

B. Притягивающие циклы 177C. Квадратичные и экспоненциальные последовательно-

сти ; неподвижные точки 181

Глава 13. Итерации Ньютона-Рафсона и фракталы 18613.1. Введение 18613.2. Уравнение z2 + 1 = 0 18713.3. Общие квадратные уравнения 18813.4. Кубическое уравнение z3 — z = 0 191

Глава 14. Перестановки 194A. Разложение на циклы 194B. Тасование карт 20014.1. Введение 20114.2. Тасования внутрь и поверх 20314.3. Циклы 20914.4. Грубые тасования внахлест (быстрые тасования) .. 20914.5. Приложение 212

Глава 15. Итерационные методы решения нелинейных уравне-ний 214

15.1. I D : Метод 1 — метод Ньютона—Рафсона 21515.2. I D : Метод 2 — метод Гаусса—Якоби 21615.3. I D : Анализ сходимости 21715.4. 2D: Итерации для нелинейных систем 22115.5. 2D: Графики линий уровня и отображение сходи-

мости 225Упражнения 229

Глава 16. Матрицы и решение линейных систем 23316.1. Подсчет числа операций 23416.2. Плотные линейные системы 23516.3. Алгоритм итерационного уточнения 23916.4. Анализ возмущений системы Ах — Ъ 24016.5. Разреженные матрицы, упорядочение графа и пе-

рестановки 242Упражнения 245

Глава 17. Интерполяция и приближение функций 24917.1. I D : Введение 25017.2. ID-пример: М-файл intdemol.m 25217.3. ID-подгонка данных 25217.4. Насколько точно мое приближение? 25617.5. Введение в многомерные приближения 25717.6. 2D М-файл intdemo2.m 258

Page 346: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Оглавление 345

17.7. Графики линий уровня, ЗО-графики и графики се-чений 258

17.8. Глобальный '\'-метод 26317.9. Кусочный метод 26417.10. Сравнение приближений 264Упражнения 266

Глава 18. Обыкновенные дифференциальные уравнения 27018.1. Стратегия 270Упражнения 271

III. Моделирование 273

Глава 19. Кассовые очереди: длинные и короткие 27519.1. Имитация очередей 27619.2. Придорожная заправочная станция 28019.3. Кафетерий 283Упражнения 284

Глава 20. Рыбное хозяйство 28720.1. Предварительный взгляд на проблему 28820.2. Модели роста рыбы 28820.3. Построение матрицы Лесли 29120.4. Стратегия рыбной ловли 293Упражнения 294

Глава 21. Эпидемии 29621.1. Предварительные замечания о некоторых данных. 29721.2. SIR-модель динамики эпидемии 29821.3. Аналитическое исследование поведения 29921.4. Анализ данных 301Упражнения 302

Глава 22. Динамика сноуботивта 30422.1. Предварительные замечания о задаче 30522.2. Уравнения движения 30622.3. Исследование рабочих параметров 308Упражнения 309

Глава 23. Приливы 31123.1. Предварительные замечания о данных по приливам 31223.2. Ряды и методы Фурье 31223.3. Анализ электрического сигнала 31423.4. Фурье-анализ данных о приливе 315Упражнения 315

Page 347: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

346 Оглавление

Приложение 1. Краткий перечень команд MATLAB'a 317Основные команды 317Встроенные значения 317Арифметические и матричные операции 318Стандартные математические функции 318Матричные функции 318Команды вывода графиков 319Команды вычисления функций 319Статистические операции 319Операции загрузки/сохранения 320

Приложение 2. Символьные вычисления в MATLAB'e 321Дифференцирование и решение нелинейных уравнений —

Глава 4 321Решение дифференциальных уравнений — Глава 7 321Интегрирование — Глава 11 322Решение систем линейных уравнений — Глава 16 322

Приложение 3. Список всех подготовленных М-файлов 323Часть 1: ВВЕДЕНИЕ 323Часть 2: ИССЛЕДОВАНИЯ 324Часть 3: МОДЕЛИРОВАНИЕ 325

Приложение 4. Как получить М-файлы с решениями 327

Приложение 5. Избранные ресурсы MATLAB'a в Интернете. 328

Список литературы 330

Список дополнительной литературы по MATLAB'y на русскомязыке 332

Предметный указатель 333

Page 348: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Учебное издание

Ке Чен, Питер Джиблин, Алан ИрвингMATLAB

в математических исследованиях

Зав. редакцией академик В. И. АрнольдЗам. зав. редакцией А. С. Попов

Ведущий редактор Ю. И. КузнецовХудожник П. Инфантэ

Художественный редактор Н. В. ЗотоваТехнический редактор О. Г. Лапко

Корректор Н. В. БеляеваОригинал-макет подготовлен В. Н. Цлаф

в пакете 1£Т£Х 2е с использованием кириллических шрифтовсемейства LH

Лицензия ЛР № 010174 от 20.05.97 г.

Подписано к печати 12.04.2001 г. Формат 60 х 90/16.Гарнитура Computer Modern. Печать офсетная.

Объем 11,00 бум. л. Усл.-печ. л. 22,00. Уч.-изд. л. 19,23.Изд. № 1/9722. Тираж 5 000 экз. Заказ 4196.

Издательство «Мир»Министерства РФ по делам печати,

телерадиовещания и средств массовых коммуникаций107996, Москва, 1-й Рижский пер., 2.

Диапозитивы изготовленыв издательстве «Мир»

Отпечатано в полном соответствиис качеством предоставленных диапозитивов

в ОАО «Можайский полиграфический комбинат».143200, г. Можайск, ул. Мира, 93.

Page 349: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

ЛУЧШИЕ КНИГИ МИРА—

В ИЗДАТЕЛЬСТВЕ « М И Р »

Готовится к печати:

оТЗ

3о.

о1/1

ЧО 3

2 - У

« p a

& о «

Шиллинг Р., Харрыс С. ПРИКЛАДНЫЕ ЧИСЛЕННЫЕМЕТОДЫ ДЛЯ ИНЖЕНЕРОВ С ИСПОЛЬЗОВАНИЕМMATLAB'A И ЯЗЫКА С: Пер. с англ. — 55 л., ил.

Книга американских специалистов представляет собой учеб-ный курс по численным методам для подготовки инженеров.Особенность книги — компьютерная реализация материала сприменением системы MATLAB и языка С. Даны многочис-ленные примеры решения прикладных задач из механики,электротехники, химии, биологии, управления и регулирова-ния систем. Включены тексты программ и результаты вычис-лений. Широкий охват материала позволяет использоватькнигу как справочник и как руководство по численным ме-тодам. Ясный и простой стиль изложения позволяет исполь-зовать книгу в качестве учебного пособия,

Основное содержание книги:• Численные вычисления• Системы линейных алгебраических уравнений• Собственные значения и собственные векторы• Приближение функций и интерполирование• Решение нелинейных алгебраических уравнений• Оптимизация• Численное дифференцирование и интегрирование• Обыкновенные дифференциальные уравнения• Уравнения с частными производными• Цифровая обработка сигналов• Приложения:

Библиотека численных методов MATLAB'aБиблиотека численных методов языка СВекторы и матрицыОтветы и решения некоторых задач

Для студентов университетов и технических вузов, препо-давателей и аспирантов, а также для всех специалистов, при-меняющих численные методы на персональных компью-терах.

Page 350: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

ЛУЧШИЕ КНИГИ М И Р А -

В ИЗДАТЕЛЬСТВЕ « М И Р »

Новинка 2001 г.:

Тан К. Ш., Стиб В.-Х., Харды И. СИМВОЛЬ-НЫЙ C++: Введение в компьютерную алгебрус использованием объектно-ориентированного про-граммирования: Пер. со 2-го англ. изд.—624 с, ил.

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

нове разработки системы, дан обзор наиболее популярных изсуществующих систем (REDUCE, MAPLE, AXIOM, МАТЕМА-Т1СА, MuPAD). Далее обсуждаются основные понятия объект-но-ориентированного программирования, языки Java, Eiffel,Smalltalk и Оберон, излагаются средства языка C++, вводится но-вая система компьютерной алгебры SymbolicC++. Приводятсяпримеры применения системы к задачам из математики и физи-ки (нумерация Геделя, аппроксимация Паде, техника рядов Ли,метод Пикара, фрактальное множество Мандельброта и др.). Вкнигу включены листинги всех компонентов системы, что позво-ляет пользователям развивать и наращивать систему в соответст-вии со своими потребностями.

Основное содержание книги:

• Математические основы компьютерной алгебры• Системы компьютерной алгебры• Объектно-ориентированной программирование• Основные средства языка C++• Классы компьютерной алгебры• Символьный класс• Приложения• Язык Лисп и компьютерная алгебра• Листинги программ• Параллельная виртуальная машина и абстрактные типы дан-

ных• Техника обработки ошибок• Программа Gnuplot и язык PostScript

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

о-q-D

a

£

оin

r-J

(-1 00С4

'К ос

с 12

Page 351: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

ЛУЧШИЕ КНИГИ МИРА—

В ИЗДАТЕЛЬСТВЕ « М И Р »

Имеется в продаже:

Л)

а

о

, ЛиттлДж., О'ШиД. ИДЕАЛЫ,МНОГООБРАЗИЯ И АЛГОРИТМЫ.Введение в вычислительные аспекты ал-гебраической геометрии и коммутативнойалгебры: Пер. с англ. — 687 с, ил.

Монография известных американскихматематиков посвящена изложению кон-кретных результатов применения вы-числительных методов к современной

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

« ГП 3- ° ? g

шв 1

5 оо

s l i

У | Уl e i

Основное содержание книги:

• Геометрия, алгебра и алгоритмы• Базисы Гребнера• Теория исключения• Алгебро-геометрический «словарь»• Полиномиальные и рациональные функции на

многообразии• Роботика и автоматическое доказательство гео-

метрических теорем• Теория инвариантов конечных групп• Проективная алгебраическая геометрия• Размерность многообразия

Для математиков-теоретиков, специалистов по компь-ютерной технике и инженеров, а также для студентовсоответствующих специальностей.

Page 352: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

ЛУЧШИЕ КНИГИ МИРА-В ИЗДАТЕЛЬСТВЕ « М И Р »

Новинка 2001 г.:

Чуй К. ВВЕДЕНИЕ В ВЭЙВЛЕТЫ:Пер. с англ. — 288 с, ил.

Вводный курс в новое активно разви-вающееся направление современнойматематики. Особое внимание в кни-ге уделено сплаин-вэйвлетам и частот-но-временной обработке сигналов.

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

За последние годы вэйвлеты нашли широкое при-менение во многих областях прикладной математики:эффективная обработка передачи информации, реше-ния дифференциальных уравнений специального вида,фрактальный анализ...»

Среди затронутых в книге вопросов —• частотно-временная локализация• интегральные вэйвлет-преобразования• двойственные вэйвлеты• фреймы• сплайн-вэйвлеты• ортонормальные вэйвлет-базисы и вэйштет-пакеты.

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

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

о

оi n

• г. И

С i .ы

- °? S^чо Я

га гч И

1

l a g

Page 353: Чен, Джиблин, Инвирг - Matlab в математических исследованиях

Вы не работаете с системой MATLAB,

но хотите научиться работе с ней?

Вы используете MATLAB в своей

профессиональной деятельности?

Вы разрабатываете приложения для

решения прикладных задач?

Вы - автор пособий по MATLAB?

КОНСУЛЬТАЦИОННЫЙ

ЦЕНТР MATLABКОМПАНИИ СОФТЛАЙН

Направления деятельностиКонсультационного Центра MATLAB

О Чтение курсов лекций по работе в средесистемы MATLAB.

© Подготовка тематических курсов лекцийпо работе с приложениями MATLAB на заказ.

О Проведение ознакомительных семинаров.

© Разработка приложений MATLAB на заказ.

© Подготовка электронных и печатныхматериалов по продуктам семейства MATLAB.

© Разработка и поддержка сайта www.matlab.ru,интерактивная работа в среде системы MATLAB.

Консультационный Центр MATLAB приглашаетк сотрудничеству специалистов!

The

MATHWORKS

Inc.

www.matlab.ru • [email protected] w w . s o f t l i n e . r u • тел.: (095) 232-0023