Добавил:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1-2 Моделирование / Matlab. Практический подход. Самоучитель

.pdf
Скачиваний:
1033
Добавлен:
31.01.2021
Размер:
12.72 Mб
Скачать

Вступление

О книге и пакете Matlab

Дайте, я скажу то, что сказал.

М. Горбачев

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

Среди наиболее популярных на сегодня пакетов можно выделить четыре основных, которые в определенном смысле являются законодателями моды. Это Maple, Mathematica, Mathcad и Matlab. Пакеты Maple и Mathematica предназначены, в первую очередь, для символьных расчетов, для числовых же используют в основном Mathcad и Matlab. Причем если пакет Mathcad играет роль "легкой кавалерии" (он прост в обращении и эффективен при выполнении не очень сложных расчетов), то пакет Matlab в полной мере соответствует представлениям о фундаментальном, качественном и многофункциональном средстве для выполнения числовых расчетов. Описаниям возможностей пакета Matlab для решения базовых прикладных математических и физических задач уделяется основное внимание в этой книге. Вместе с тем следует понимать, что даже в самой большой книге невозможно полностью описать все (или почти все) возможности приложения. Предлагаемая вниманию читателя книга в некотором смысле отличается от других книг, посвященных Matlab. Книга принципиально задумывалась как небольшая (хотя такое понятие, как небольшая, является очень относительным). Вместе с тем была предпринята попытка написать книгу информативную. Во многом эти задачи являются взаимоисключающими. Поэтому нередко приходилось чем-то жертвовать. С другой стороны, главная задача состояла в том, чтобы показать красоту и эффективность приложения Matlab при решении прикладных задач. Многие, кто осваивал работу с математическими пакетами, на своем опыте знают, что в этом случае важно понять "идеологию" пакета, поскольку именно такое понимание является теми вратами, через которые можно выйти на широкий и перспективный путь использования пакета. В противном случае придется пробираться более тернистым путем – не таким широким и более извилистым.

11

Самоучитель Matlab

Еще немного о пакете

Что же это получается? Чудеса за наличный расчет?!

К/ф "Чародеи"

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

Значительная часть функциональных возможностей приложения Matlab реализована через пакеты инструментов (английский термин toolbox). Это коллекции функций и других утилит, предназначенных для решения узкоспециальных задач. В книге, за редкими исключениями, пакеты инструментов не описываются. Основное внимание уделяется функциям стандартной библиотеки. Причина простая и прозаичная – каждый отдельный пакет инструментов может быть темой отдельной книги. Но проблема даже не в этом, а скорее в том, что большинство пакетов имеют узкую, специфическую направленность, и это обстоятельство контрастирует с базовым подходом, реализованном в книге – максимум универсальности при разумном объеме текста.

Как уже отмечалось, приложение Matlab предназначено (в первую очередь) для выполнения числовых расчетов и визуализации получаемых результатов. Пакет содержит огромное число утилит для выполнения самых разных операций и позволяет создавать собственные полнофункциональные программные коды. Вместе с тем в Matlab могут выполняться и символьные расчеты. Этой цели служит встроенная в Matlab среда MuPAD. Таким образом, пользователю Matlab предоставляются широкие возможности не только в области числовых, но и символьных расчетов (сразу отметим, что методы символьных вычислений в Matlab описываются в последней главе

12

Вступление. О книге и пакете Matlab

книги). В этом отношении можно говорить о значительной универсальности приложения Matlab. Именно показать эту универсальность мы попытались в книге.

Структура книги

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

Дж. Буш (младший)

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

алгебраических вычислений (глава 1),

создания графики и анимации (глава 2),

принципов программирования (глава 3),

матричной алгебры (глава 4),

решения алгебраических уравнений и систем (глава 5),

интегрирования и решения обыкновенных дифференциальных уравнений (глава 6),

решения уравнений в частных производных (глава 7),

обработки статистических данных (глава 8),

символьных вычислений (глава 9).

Часть полезной информации вынесена в приложения. Наибольший интерес, возможно, у читателя вызовет краткое описание надстройки, позволяющей получать доступ к вычислительным возможностям Matlab из приложения Microsoft Excel. Эта тема, безусловно, предназначена в первую очередь для тех, кто много работает с электронными таблицами.

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

На заметку

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

13

Самоучитель Matlab

Обратная связь

Теперь я пойду с ещё большим забралом.

М. Горбачев

Некоторую полезную информацию читатели смогут найти на персональной странице автора по адресу www.vasilev.kiev.ua. Задать вопросы или высказать свои пожелания можно по электронной почте alex@vasilev. kiev.ua.

14

Глава 1

Принципы работы Matlab и основы вычислений

Я считаю своим долгом поведать, наконец, как все было на самом деле.

К/ф "Клуб самоубийц, или Приключения титулованной особы"

Приложение Matlab предназначено для выполнения сложных (и не очень) профессиональных расчетов в самых различных областях естествознания. Тем не менее, памятуя о том, что все большое начинается с малого, изучение методов работы с приложением Matlab начнем с азов – рассмотрим пошаговые вычисления.

Простые вычисления

Всю весну и все лето и так, и эдак прикидывал Крот. И, наконец, осенью решил жениться.

М/ф "Дюймовочка"

Под простыми, или пошаговыми, подразумевают вычисления, обычно выполняемые в командном окне приложения Matlab. Соответствующая инструкция или команда вводится в командном окне и затем выполняется. На рис. 1.1 показано, как может выглядеть рабочее окно приложения Matlab при запуске.

Интерес в данном случае представляет внутреннее окно (обычно в центре рабочего окна приложения) с названием Command Window – командное окно. В этом окне можно заметить индикатор строки ввода (в виде двойной стрелки >>). Для ввода команды курсор необходимо переместить после индикатора строки ввода и ввести инструкцию для выполнения. Другими словами, в строку ввода командного окна необходимо ввести выражение и, нажав клавишу <Enter>, запустить процесс вычисления этого выражения. Результат вычислений отображается внизу, под выполняемой командой. По умолчанию результат заносится в системную переменную ans. На рис. 1.2 приведен пример вычисления нескольких арифметических выражений.

В данном случае приведены результаты вычисления выражений 1+2*3 и (5^2-4)/7 соответственно. В первом случае, как и ожидалось, получаем в качестве результата значение 7, во втором – значение 3.

15

Самоучитель Matlab

Рис. 1.1. Рабочее окно приложения Matlab

Рис. 1.2. Простые арифметические вычисления

16

Глава 1. Принципы работы Matlab и основы вычислений

На заметку

Чтобы "отделить" командное окно от структуры рабочего окна приложения Matlab, достаточно щелкнуть на пиктограмме с витой стрелкой в строке названия окна. В левой нижней части командного окна отображается пиктограмма утилиты подбора функций. Убирается и отображается эта пиктограмма с помощью контекстного меню. Вообще же, здесь и далее материал книги излагается с тем расчетом, что базовые манипуляции с элементами графического интерфейса приложения Matlab читатель сможет выполнять самостоятельно. Если все же проблемы в этом плане возникнут, можно обратиться к литературе, специально посвященной вопросу правильного нажимания кнопок.

Что касается непосредственно вычислений, то, например, для вычисления выражения 1+2*3 соответствующую инструкцию вводим в командную строку, после чего нажимаем клавишу <Enter>. Выражение вычисляется, результат отображается под строкой ввода в формате

ans=

результат

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

Вкачестве основных арифметических операторов в Matlab используются: оператор + для вычисления суммы, оператор для вычисления разности, оператор * для вычисления произведения, оператор / для вычисления частного и оператор ^ для возведения в степень. Это далеко не все арифметические операторы. Арифметическим операторам Matlab посвящен отдельный раздел этой главы. Пока же ограничимся тем, что будем использовать перечисленные выше операторы для работы со скалярными величинами. Однако совершенно очевидно, что ценность приложения Matlab была бы невелика, если бы возможности Matlab ограничивались арифметическими вычислениями, подобными тем, что приведены выше. Для более сложных вычислений обычно приходится вводить переменные.

Вобщем смысле переменная – это область памяти, к которой можно обращаться по имени для получения значения, записанного в этой области, а также его изменения. В строго типизированных языках программирования (таких, как С++, Java или Pascal) для использования переменной необходимо предварительно ее объявить, указав при этом, к какому типу она относится. В Matlab ничего подобного делать не нужно. Переменной сразу можно присваивать значение. В качестве оператора присваивания используется знак равенства =. Имя переменной, которой присваивается значение, указывается слева от оператора присваивания, а присваиваемое переменной значение – справа от оператора присваивания. Значение, присваиваемое переменной, если речь идет о скалярных величинах, может быть числом

17

Самоучитель Matlab

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

Рис. 1.3. Использование в вычислениях переменных

Первой командой x=0.5*sin(0.1) присваивается значение переменной x. При этом использована встроенная функция Matlab sin() для вычисления синуса. Присвоенное в результате этой переменной значение отображается внизу под строкой ввода в формате

переменная=

значение

Аналогично следующей командой y=0.3*cos(0.2) значение присваивается переменной y. Здесь cos() – встроенная функция Matlab для вычисления косинуса. Обращаем также внимание читателя, что в качестве десятичного разделителя при вводе действительных чисел с дробной десятичной частью используется точка.

Наконец, командой z=(x^2+y^2)^(1/3) значение присваивается переменной z. В выражение, определяющее значение переменной z, входят переменные x и y. Однако поскольку предварительно этим переменным были присвоены значения, ошибки не возникает и значение переменной z присваивается корректно.

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

18

Глава 1. Принципы работы Matlab и основы вычислений

узнать, какие переменные рабочего пространства уже используются, и, во-вторых, иногда приходится, образно выражаясь, "удалять переменные с игрового поля" – то есть освобождать память, выделенную под эти переменные. Первая операция выполняется с помощью инструкции whos. Если ввести в командную строку эту инструкцию и нажать клавишу <Enter>, будет выведен список доступных в рабочем пространстве переменных с описанием их некоторых атрибутов. Пример использования инструкции whos приведен в документе на рис. 1.4.

Рис. 1.4. Список переменных рабочего пространства

В данном случае список состоит из четырех переменных: трех объявленных переменных пользователя x, y и z, и системной переменной ans.

Очистка пространства переменных осуществляется с помощью инструкции clear, после которой, через пробел, указываются имена удаляемых переменных. На рис. 1.5 представлен результат выполнения команды clear x y, после которой выполнена команда whos для проверки списка переменных рабочего пространства.

Рис. 1.5. Очистка пространства переменных

Поскольку командой clear x y переменные x и y из рабочего пространства удалены, в списке переменных остались только переменная z и системная переменная ans.

19

Самоучитель Matlab

На заметку

Хотя значение переменной z присваивается на основе значений переменных x и y, их удаление из рабочего пространства (или изменение их значения) на значение переменной z никак не влияет.

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

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

Вэтом отношении скаляр "с точки зрения Matlab" (если можно так выразиться) является матрицей размера 1×1.

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

Рис. 1.6. Обращение к скаляру как к элементу матрицы

Командой MyVar=10 переменной MyVar присваивается значение 10. Обращаться к переменной можно как по имени MyVar, так и в режиме обраще-

20