Практикум по матлабу. практикум по матлабу. Физических процессов с использованием
Скачать 1.13 Mb.
|
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ФИЗИЧЕСКИЙ ФАКУЛЬТЕТ Г. Л. Коткин, В. С. Черкасский КОМПЬЮТЕРНОЕ МОДЕЛИРОВАНИЕ ФИЗИЧЕСКИХ ПРОЦЕССОВ С ИСПОЛЬЗОВАНИЕМ MATLAB Учебное пособие Новосибирск 2001 ББК 32.97:53 УДК 53.072 Коткин Г. Л., Черкасский В. С. Компьютерное моделирование физических процессов с использованием MATLAB: Учеб. пособие / Новосиб. ун-т. Новосибирск, 2001. 173 с. Данное учебное пособие является руководством для компьютерного практику- ма. Предназначено для студентов физического факультета НГУ, но может быть ру- ководством по использованию пакета MATLAB студентами и исследователями других специальностей. Подготовлено при содействии Федеральной целевой программы “Государствен- ная поддержка интеграции высшего образования и фундаментальной науки на 1997- 2000 годы”, проект N274. Рецензент кандидат технических наук Ю.М.Прокопьев Печатается по решению методической комиссии физического факультета НГУ. c Новосибирский государственный университет, 2001 Предисловие Практикум «Компьютерное моделирование физических процессов» под тем или иным названием действовал на физического факультета НГУ более 20 лет. В на- стоящее время в связи с существенным изменением компьютеров произошел прак- тически полный переход на новую операционную среду с графическим интерфей- сом (типа Windows-95). Это предопределило изменения, которые были внесены в практикум. Перед нами стояла задача, не разрушая того полезного, что было нара- ботано в практикуме за годы его эксплуатации, перейти на работу в новой операци- онной среде и расширить круг задач, которые решаются в практикуме. Кроме того, практикум предназначен студентам, уже имевшим дело с компьютером и знакомым с основными понятиями программирования. Данное пособие представляет собой существенно переработанное и дополнен- ное пособие, ранее изданное в НГУ [ 1 ], которое, в свою очередь, являлось объ- единением двух работ: Израйлев Ф.М.,Коткин Г.Л., Фрумин Л.Л., Эйдельман С.И. Моделирование физических процессов и явлений. Новосибирск, НГУ, 1986; Коткин Г.Л., Фрумин Л.Л. Моделирование физических явлений: Практикум. Но- восибирск, НГУ, 1992. Существенным отличием данного варианта практикума является использование не универсального языка программирования (как Фортран или Паскаль), а спе- циальной системы MATLAB фирмы MathWorks, созданной для облегчения ре- шения инженерных и научных задач. Поскольку данная система является относи- тельно новой и литература по ней весьма ограничена [2-6], в настоящем пособии она будет описана отдельно. Следует сказать, что эта система является Windows- ориентированной 1 , интерактивной, допускающей режим непосредственных вычис- лений как численного, так и аналитического характера, а также режим программи- рования на специальном языке программирования, работающем в режиме интер- претации. Для решения основных задач курса студентам предлагаются заготовки, которые решают простейшие вопросы и могут служить основой для доработки и усложнения соответствующих моделей. Эти заготовки доступны в виде исходных текстов – так называемых m-файлов. В предлагаемых задачах затронуты разные подходы к моделированию. Это ис- следование моделей, движение в которых определяется обыкновенными дифферен- циальными уравнениями (задачи «МАЯТНИК», «ПЛАНЕТА», «ДИОД»), ме- тод Монте-Карло («СЛУЧАЙНЫЕ БЛУЖДАНИЯ», «БРОУНОВСКОЕ ДВИ- ЖЕНИЕ», «ПОТЕРИ ПУЧКА»), молекулярная динамика («ШАРЫ»). 1 Есть версии MATLABи в операционной системе UNIX. 3 Из важных и популярных объектов моделирования опущены задачи, связан- ные с уравнениями в частных производных, и задачи о фрактальных структурах: практикум рассчитан на ограниченное время. При выполнении каждого из заданий за основу удобно брать соответствующие простейшие программы, входящие в пакет MPP(Modeling of Physics Phenomena), специально подготовленный для этого практикума. Объединять программы, реали- зующие разные задания одной задачи, в одну большую программу не стоит. Отчет студента – это действующая программа, которая демонстрируется пре- подавателю на месте (плюс ответ на вопросы по физике, решаемые с ее помощью). Письменный отчет при этом не требуется. 1. Введение 1.1. Зачем нужен такой практикум? Основные применения компьютеров в физических исследованиях – это управле- ние экспериментом (данного вопроса мы не касаемся) и моделирование 2 . Цель практикума – ознакомить студентов с некоторыми методами создания и иссле- дования моделей физических явлений. Одновременно происходит изучение языка программирования MATLAB (не в полном объеме, но сразу же на уровне «раз- говорного»). Разумеется, работа с моделями не может привести к открытию совершенно но- вого явления, скажем, элементарной частицы с неожиданными свойствами. Од- нако именно компьютерное моделирование привело, например, к возникновению нового взгляда на интересное и сложное явление – турбулентность. Кстати, и в работах, приводящих к открытию новых элементарных частиц и исследованию их свойств, моделирование не только используется на этапе проектирования экспе- риментальных установок, но и является непременной составной частью обработки экспериментальных данных. Расширяется применение компьютерного моделиро- вания в технике. Наконец, моделирование может оказать заметную помощь сту- денту в изучении физики. 1.2. О чем сказано далее В пп. 1.3 , 1.4 «Введения» кратко сказано о системе MATLAB. Возможно, вы уже имели дело с программированием или использовали какую-либо систему научных 2 Разумеется, существует также необходимая «организационная» работа – поиск в ком- пьютерных сетях полезной информации, редактирование текстов и т.п. 4 расчетов и моделирования (например, MathCad) и не нуждаетесь в «популярных» объяснениях. Тогда достаточно только просмотреть эти пункты. С приложениями следует знакомиться при необходимости. Физическую постановку задач, методы их решения и рекомендуемые к выпол- нению задания можно найти в разделах, относящихся к соответствующим задачам. 1.3. О системе MATLAB Система MATLAB (MATrix LABoratory) давно и успешно разрабатывается фир- мой MathWorks. Эта система создана для работы в среде Windows 3.1 (версия 4 и 4.2) и в среде Windows-95(98) (версии начиная с 5.0). Система представляет собой интерактивную среду для вычислений и моделирования, причем она может работать как в режиме непосредственных вычислений, так и в режиме интерпрета- ции написанных программ. Если вы находитесь в системе MATLAB, то, набрав в ответ на приглашение текст >> y=sin(0.125) и завершив его нажатием клавиши ENTER , получите в ответ y= 0.1247 >> После ввода команды непосредственного вычисления система «интерпретирует» введенные инструкции и осуществляет вычисление. Результат сразу выводится на экран. Помимо обычных алгебраических вычислений система имеет большой набор встроенных функций (см. Приложение E ), а также имеется возможность созда- вать свои собственные функции. Библиотеки функций (кроме встроенных) пред- ставляют собой специальные директории, в которых хранятся файлы с текстами функций. Эти тексты интерпретируются системой при обращении к ним и могут использоваться как образцы для написания своих функций. Имеется также целый набор библиотек, позволяющих строить на экране 2-и 3- мерные изображения. Именно графическое представление результатов делает на- ши исследования чрезвычайно эффективными. Кроме того, имеется библиотека, которая обеспечивает удобное управление исполнением программ. Краткое описа- ние этих и некоторых других библиотек приведено в Приложении E 5 1.4. Немного о работе с системой MATLAB После того как вы кликнули на иконке MATLAB, перед вами появится экран, в верхней части которого имеется строка с выпадающими меню, инструментальная панель с кнопками, реализующими наиболее часто выполняемые действия (рис. 1 ), и в самом окне - строка запроса в виде двух знаков >>. Это командное окно MATLAB Рис. 1. Инструментальная панель командного окна Стандартное выпадающее меню File содержит такие пункты, как New для со- здания новых файлов, Open M-file -открытие существующего файла-программы или файла-функции для редактирования, проверки текста или отладки. При ис- пользовании этого пункта вам предлагается стандартное окно выбора файлов, а по- сле выбора необходимого файла открывается окно редактора/отладчика m-файлов. Подробнее об m-файлах будет сказано далее, сейчас же достаточно знать, что так называются текстовые файлы с расширением .m, содержащие тексты программ- сценариев или тексты функций из стандартных или собственных библиотек. В ре- дакторе их можно исправлять, устанавливать точки остановки для отладки, но сле- дует помнить, что для того, чтобы новый, исправленный вариант функции или про- граммы вступил в силу, необходимо стандартным образом (через меню редактора File или с помощью соответствующей кнопки на панели инструментов редакто- ра/отладчика) сохранить измененный файл. Инструментальная панель (см. рис. 1 ) командного окна позволяет выполнять требуемые действия простым нажатием на соответствующую кнопку. Большин- ство кнопок имеют стандартный вид и выполняют стандартные, подобные другим программам действия -это копирование (Copy), открытие файла (Open), печать (Print) и т.д. Следует обратить внимание на кнопку Path Browser, которая позво- ляет прокладывать пути к разным директориям и делать необходимую директорию текущей, а также на кнопку Workspace Browser, позволяющую просматривать и редактировать переменные в рабочей области. Команда help, набранная в ответ на запрос, завершаемая нажатием клавиши 6 Enter 3 , или кнопка инструментальной панели со знаком вопроса позволяет полу- чить список функций, для которых доступна оперативная помощь. Команда help <имя_функции> позволяет получить на экране справку по конкретной функции. Например, команда help eig позволяет получить оперативную справку по функ- ции eig -функции вычисления собственных значений матрицы. С некоторыми возможностями системы MATLAB можно познакомиться с помощью команды demo. В этом кратком введении следует отметить, что основные объекты – перемен- ные, с которыми работает MATLAB, – это прямоугольные матрицы. Это дает возможность записывать программы очень кратко, делает прораммы легко обо- зримыми. Предусмотрено множество операций, выполняемых над матрицами. Ра- зумеется, запись таких операций, как умножение и сложение матриц, следует за- помнить. Изучать же и запоминать все возможности «впрок», до того, как они понадобятся, бессмысленно. Если необходимо прервать работу, но сохранить все созданные в рабочей обла- сти переменные, то проще всего это сделать с помощью команды save <имя_файла>. Все переменные в двоичном виде сохраняются в файле <имя_файла>.mat. Впо- следствии, при повторной загрузке системы можно загрузить всю рабочую область с помощью команды load <имя_файла> и продолжить вычисления с того же ме- ста. Для очистки рабочей области используется команда clear без аргументов, и в этом случае очищается вся область от всех переменных. Если команда clear со- провождается списком переменных, разделенных пробелами, то удаляются только перечисленные переменные. Для завершения работы в системе используется команда quit или пункт меню File/exit. 2. Первые задачи 2.1. Фигуры Лиссажу Начнем с очень простой задачи – построить на экране график функции, заданной параметрически: x = a 1 · cos(ω 1 t ) y = a 2 · cos(ω 2 t ) 3 Далее везде, где это не будет специально оговорено, предполагается, что любая коман- да, вводимая с клавиатуры в режиме непосредственного вычисления, завершается нажатием клавиши Enter . 7 Если отношение ω 1 /ω 2 -число рациональное, то такая кривая называется фи- гурой Лиссажу. Скорее всего, такие кривые вы неоднократно видели на экране осциллографа. Приведенный далее текст представляет собой протокол работы с системой MAT- LAB, полученный при решении поставленной задачи в режиме непосредственного вычисления. Для получения протокола и сохранения его в виде файла использу- ется команда diary <имя_файла>. Такой протокол может быть полезен для последующего анализа решения, а также при небольших доработках может быть использован как основа для написания программы-сценария для последующего ре- шения подобных задач. В системе MATLAB часть строки, следующая за знаком %, является комментарием , т.е. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Изображение кривой, заданной параметрически % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Задание амплитуд и частот >> a1=1.2; % Точка с запятой после оператора >> a2=1.0; % обеспечивает отсутствие вывода >> w1=1.5; % результата действия оператора >> w2=1.0; % Оператор whos позволяет в любой момент получить % полную информацию о всех активных переменных. % Все переменные введенные в данном сеансе, остаются % активными, если их не удалили оператором clear. >> whos Name Size Elements Bytes Density Complex a1 1 by 1 1 8 Full No a2 1 by 1 1 8 Full No w1 1 by 1 1 8 Full No w2 1 by 1 1 8 Full No Grand total is 4 elements using 32 bytes % Часть программы, относящаяся к оператору whos, % приведена здесь только для ознакомления с его действием. % Обратите внимание, что постоянные трактуются как матрицы % размерности 1x1. % Оператор задания вектора значений t 8 >> t=0:0.1:3.2; % Вычисление векторов x, y >> x=a1*cos(w1*t); >> y=a2*cos(w2*t); % Построение графика y(x) >> plot(x,y); В принципе на этом можно было бы и закончить, потому что по команде plot(x,y) будет нарисована искомая кривая. Точки с координатами (x(i), y(i)), (x(i+1), y(i+1)) соединяются отрезками прямых. При этом происходит автоматический подбор удобного масштаба. Масштабные метки и числа при них изображаются на границах рамки, а изображение осей координат не предусмотрено. Следует сделать несколько замечаний. Обратите внимание на способ задания вектора t. Дело в том, что знак : (подробнее см. Дополнение, п. 2.2 ) является од- ним из важнейших в синтаксисе языка MATLAB. Поставленный между двумя числами, он задает вектор, компоненты которого принимают значения от меньшего числа до большего с шагом 1. Например, оператор x=4:15 задает целочисленный вектор x=[4 5 6 7 8 9 10 11 12 13 14 15]. Кстати, такое явное задание вектора (с помощью квадратных скобок) тоже допускается. Если значения компонент век- тора отличаются не на 1, то их можно задать с помощью указания шага, например, так: t=0:0.1:3.2, что и было сделано в программе. Написанные далее два оператора (присвоение соответствующих значений x и y) демонстрируют еще одну особенность языка MATLAB: основными объекта- ми, с которыми он оперирует, являются матрицы и векторы (многомерные). За- писанные таким образом функции (в данном примере - cos) вычисляют значение функции для каждого элемента вектора (или матрицы) аргумента и присваивают их соответствующим элементам вновь создаваемого вектора. Эта и ряд подобных особенностей позволяют записывать алгоритмы на языке MATLAB в очень компактном виде. Подробнее возможности работы с векторами и матрицами описаны в Дополнении, п. 2 Получив соответствующий рисунок, мы обнаруживаем, что нарисована лишь часть кривой, во всяком случае она не имеет привычный вид фигуры Лиссажу. По- пробуем расширить диапазон вычисления и вывода кривой. Можно заново набрать написанный ниже текст, а можно воспользоваться буфером команд, который име- ется в системе. Нажав необходимое число раз клавишу ↑, вы получите в строке вво- да одну из предыдущих команд, которую можно редактировать с помощью стрелок и клавиш Del, BkSp, а также вставлять необходимые символы. После редактиро- вания и соответствующего вычисления наш протокол будет выглядеть следующим 9 образом. >> t=0:0.1:10; >> x=a1*cos(w1*t); >> y=a2*cos(w2*t); >> plot(x,y); Полученный в этом примере график будет иметь вид, показанный на рис. 2 Представляет интерес получить Рис. 2. Пример кривой Лиссажу различные графики при различных значениях параметров. Если вам не- обходимо просто нарисовать еще од- ну кривую с другими параметрами, то проще всего в том же сеансе при- своить им новые значения и снова повторить последовательность вы- числений и вывод графика. Такой метод работы удобен при необхо- димости разовых вычислений, но ес- ли вы хотите исследовать зависи- мость получаемой кривой от пара- метров, то представляет интерес научиться делать это систематически. Задание 1. Используя возможность повторять выполнение операторов без их повторного набора (клавиша ↑), выполните вычисление и построение фигур Лиссажу для разных отношений ω 1 /ω 2 и для разных значений амплитуд a 1 и a 2 Для дальнейшей работы удобнее перейти к программе-сценарию. Так называется файл с расширением |