Этапы компьютерного моделирования. Основы работы с MATLAB

Министерство образования Республики Беларусь

 

Учреждение образования

БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ

 

Факультет телекоммуникаций

 

 

 

 

 

Тема реферата:

«КОМПЬЮТЕРНОЕ МОДЕЛИРОВАНИЕ.

РАБОТА С ПАКЕТОМ MATLAB»

 

 

 

 

 

 

 

   



 

 

 

 

 

 

 

 

 

 

 

 

 

 

Минск 2014 
СОДЕРЖАНИЕ

ВВЕДЕНИЕ………………………………………………………………..………..

1 Этапы компьютерного моделирования………………….………

2 Введение в программу МATLAB………………………………………..

3 Основы работы с MATLAB………………………………………………..

3.1 Вещественные числа и тип данных double……………………………………

3.2 Комплексные числа и комплексные функции………………………………...

3.3 Числовые массивы……………………………………………………………...

3.4 Вычисления с массивами………………………………………………………

3.5 Построение графиков функции………………………………………………..

3.6 Сценарии и m-файлы……………………………………………………….......

4 Решение задачи в системе MATLAB……………………………………………

ЗАКЛЮЧЕНИЕ…………………………………………………………………….

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ………………………………

3

4

4

7

8

10

11

14

16

20

21

27

28


 

 

Введение

 

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

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

Данный реферат посвящен одной из программ компьютерного моделирования системе MATLAB.

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

 

  1. Этапы компьютерного моделирования

 

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

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

Принципы моделирования состоят в следующем:

1. Принцип информационной  достаточности. При полном отсутствии  информации об объекте построить  модель невозможно. При наличии  полной информации моделирование  лишено смысла. Существует уровень  информационной достаточности, при  достижении которого может быть  построена модель системы.

2. Принцип осуществимости. Создаваемая модель должна обеспечивать  достижение поставленной цели  исследования за конечное время.

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

4. Принцип системности. Исследуемая  система представима в виде  совокупности взаимодействующих  друг с другом подсистем, которые  моделируются стандартными математическими  методами. При этом свойства системы  не являются суммой свойств  ее элементов.

5. Принцип параметризации. Некоторые подсистемы моделируемой  системы могут быть охарактеризованы  единственным параметром: вектором, матрицей, графиком, формулой.

 

2 Введение в программу МATLAB

 

В настоящее время широкое распространение получили интегрированные среды математических вычислений, позволяющие решать сложные математические задачи. Одной из наиболее распространенных систем этого типа является MATLAB. Разработка пакета была начата в 1972 году по инициативе известных американских специалистов в области вычислительной математики Дж. Форсайта и Дж. Уилкинсона. Первоначально MATLAB создавался как пакет программ, реализующих наиболее эффективные численные алгоритмы линейной алгебры. Наполнение пакета проходило также и в направлении расширения возможностей графического представления результатов вычислений, облегчения вывода результатов на печать и т.д. С появлением ПЭВМ и ОС типа Windows, разработчики MATLAB’а (фирма Mathworks) создала достаточно удобную среду.

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

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

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

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

Выше упоминалось о том, что в MATLAB имеется язык программирования. С его помощью можно создавать и реализовывать собственные алгоритмы, используя все доступные функции системы и все основные приёмы программирования, имеющиеся в других языках, такие как подпрограммы, циклы, ветвления, рекурсии и другие. Запись алгоритма на языке программирования МАТЛАБ сохраняется в файле в текстовом формате, либо в специальном внутреннем представлении.

MATLAB обладает развитой графикой. Графическая подсистема MATLAB является объектно-ориентированной. Графики выводятся на экран в отдельных окнах, причём как сами окна, так и составные части графиков (оси, разметка, надписи, линии) являются элементами иерархического дерева объектов.

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

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

Вдобавок к развитым графическим средствам MATLAB в качестве одного из своих расширений предоставляет пользователю Virtual Reality Toolbox - пакет для разработки и отображения сцен виртуальной реальности, для которых доступны средства анимации. Это позволяет не только моделировать динамические процессы в Simulink (Simulink – расширение MATLAB, предназначенное для моделирования динамических процессов), но и, подключив потоки выходных данных к входам спроектированной пользователем виртуальной сцены, наблюдать на мониторе анимированную динамику процесса.

Современные версии MATLAB имеют развитые средства интеграции с другими языками программирования. Непосредственно из MATLAB -программы можно создавать и использовать объекты Java; для написания S-функций (системных функций MATLAB -Simulink) можно использовать языки высокого уровня C, C++, Ada, Fortran; кроме того функции системы MATLAB можно экспортировать в dll и вызывать из других программ. Также можно использовать вычислительные возможности системы, передавая запросы удалённому компьютеру по сети.

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

В MATLAB реализованы численные методы решения ряда вычислительных задач, таких как нахождение корней полиномов, решение задачи Коши для систем ОДУ, вычисление определённого интеграла, решение нелинейных уравнений.

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

 

  1. Основы работы с MATLAB

 

Среда MATLAB включает интерпретатор команд на языке высокого уровня, графическую систему, пакеты расширений и реализована на языке C. Вся работа организуется через командное окно (Command Window), которое появляется при запуске программы matlab.exe. В процессе работы данные располагаются в памяти (Workspace), для изображения кривых, поверхностей и других графиков создаются графические окна.

В командном окне в режиме диалога проводятся вычисления. Пользователь вводит команды или запускает на выполнение файлы с текстами на языке MATLAB. Интерпретатор обрабатывает введенное и выдает результаты: числовые и строковые данные, предупреждения и сообщения об ошибках. Строка ввода помечена знаком >>. В командном окне показываются вводимые с клавиатуры числа, переменные, а также результаты вычислений. Имена переменных должны начинаться с буквы. Знак = соответствует операции присваивания. Нажатие клавиши Enter заставляет систему вычислить выражение и показать результат. Наберите с клавиатуры в строке ввода:

 

» a=2+51-37

 

Нажмите клавишу Enter, на экране в зоне просмотра появится результат вычисления:

 

a = 16

 

Все значения переменных, вычисленные в течение текущего сеанса работы, сохраняются в специально зарезервированной области памяти компьютера, называемой рабочим пространством системы MATLAB (Workspace). Командой clc можно стереть содержимое командного окна, однако это не затронет содержимого рабочего пространства. Когда исчезает необходимость в хранении ряда переменных в текущем сеансе работы, их можно стереть из памяти компьютера командой clear или clear(имя1, имя2, …). Первая команда удаляет из памяти все переменные, а вторая – переменные с именами имя1 и имя2. Командой who можно вывести список всех переменных, входящих в данный момент в рабочее пространство системы. Для просмотра значения любой переменной из текущего рабочего пространства системы достаточно набрать ее имя и нажать клавишу Enter.

После окончания сеанса работы с системой MATLAB все ранее вычисленные переменные теряются. Чтобы сохранить в файле на диске компьютера содержимое рабочего пространства системы MATLAB, нужно выполнить команду меню File / Save Workspace As … По умолчанию расширение имени файла mat, поэтому такие файлы принято называть МАТ-файлами. Для загрузки в память компьютера ранее сохраненного на диске рабочего пространства нужно выполнить команду меню:

File / Load Workspace … .

 

    1. Вещественные числа и тип данных double

 

Система MATLAB представляет на машинном уровне все действительные числа заданные мантиссой и показателем степени, например, 2.85093Е+11, где буквой Е обозначается основание степени равное 10. Этот основной тип данных носит название double. MATLAB по умолчанию использует формат short для вывода вещественных чисел, при котором показываются только четыре десятичных цифры после запятой.

Введите с клавиатуры пример:

 

» res=5.345*2.868/3.14-99.455+1.274

 

Получите результат вычисления:

 

res = -93.2990

 

Если требуется полное представление вещественного числа res, введите с клавиатуры команду:

» format long

 

и далее наберите имя переменной

 

» res

 

нажмите клавишу Enter и получите более подробную информацию:

 

res = -93.29900636942675

 

Теперь все результаты вычислений будут показываться с такой высокой точностью в течение данного сеанса работы в среде системы MATLAB. Если требуется до прекращения текущего сеанса работы вернуться к старой точности визуального представления вещественных чисел в командном окне, нужно ввести и исполнить (нажав клавишу Enter) команду:

 

» format short

 

Целые числа показываются системой в командном окне в виде целых чисел Над вещественными числами и переменными типа double производятся арифметические операции: сложения +, вычитания -, умножения *, деления / и возведения в степень ^ . Приоритет в выполнении арифметических операций обычный. Операции одинакового приоритета выполняются в порядке слева направо, но круглые скобки могут изменить этот порядок.

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

В системе MATLAB присутствуют все основные элементарные функции для вычислений с вещественными числами. Любая функция характеризуется своим именем, списком входных аргументов (перечисляются через запятую и стоят внутри круглых скобок, следующих за именем функции) и вычисляемым (возвращаемым) значением. Список всех имеющихся в системе элементарных математических функций может быть получен по команде help elfun. В Приложении 1 перечислены стандартные функции вещественного аргумента. Вычислите выражение, включающее вычисление функции арксинус:

 

» 2*asin(1)

 

Убедитесь, что получился следующий результат:

 

ans = 3.1416,

 

соответствующее числу «пи». В системе MATLAB для вычисления числа «пи» есть специальное обозначение: pi. (Список системных переменных MATLAB

находится в Приложении 2).

MATLAB имеет также логические  функции, функции, связанные с целочисленной арифметикой (округления до ближайшего целого: round, усечение дробной части числа: fix). Есть еще функция mod – остаток от деления с учетом знака, sign – знак числа, lcm – наименьшее общее кратное, perms – вычисление числа перестановок и nchoosek – числа сочетаний и много других. Многие из функций имеют область определения, отличную от множества всех действительных чисел.

Помимо арифметических операций над операндами типа double выполняются еще операции отношения и логические операции. Операции отношения сравнивают между собой два операнда по величине. Эти операции записываются следующими знаками или комбинациями знаков (Таблица 1):

 

Таблица 3.1.1 – Символьные обозначения операций отношения

<

<=

>

>=

~=

==

Меньше

Меньше или равно

Больше

Больше или равно

Не равно

Равно


 

В случае истинности операции отношения ее величина равна 1, а в случае ложности – 0. Операции отношения имеют более низкий приоритет, чем арифметические операции.

Наберите с клавиатуры выражение с операциями отношения и вычислите его:

 

» a=1; b=2; c=3;

» res=(a<b)+(c~=b)+(b==a)

Вы получите следующий результат:

 

res = 2

 

Логические операции над вещественными числами обозначаются знаками, перечисленными в таблице 2:

 

Таблица 3.1.2 – Символьные обозначения логических операций

&

|

~

И

ИЛИ

НЕ


 

Первые две из этих операций являются бинарными (двухоперандными), а последняя – унарной (однооперандной). Логические операции трактуют свои операнды как «истинные» (не равные нулю) или «ложные» (равные нулю). Если оба операнда операции «И» истинны (не равны нулю), то результат этой операции равен 1 («истина»); во всех остальных случаях операция «И» вырабатывает значение 0 («ложь»). Операция «ИЛИ» вырабатывает 0 («ложь») тольков случае, когда являются ложными (равными нулю) оба операнда. Операция «НЕ» инвертирует «ложь» на «истину». Логические операции имеют самый низкий приоритет.

 

3.2 Комплексные числа и комплексные функции

 

Комплексные переменные, как и вещественные автоматически имеют тип double и не требуют никакого предварительного описания. Для записи мнимой единицы зарезервированы буквы i или j. В случае, когда коэффициентом перед мнимой единицей является не число, а переменная, между ними следует обязательно использовать знак умножения. Итак, комплексные числа можно записывать следующим образом:

 

» 2+3i; -6.789+0.834e-2*i; 4-2j; x+y*i;

 

Почти все элементарные функции допускают вычисления с комплексными аргументами. Вычислите выражение:

 

» res=sin(2+3i)*atan(4i)/(1-6i)

 

Получится результат:

 

-1.8009 - 1.9190i

 

Специально для работы с комплексными числами предназначены следующие функции: abs (абсолютное значение комплексного числа), conj (комплексно сопряженное число), imag (мнимая часть комплексного числа), real (действительная часть комплексного числа), angle (аргумент комплексного числа), isreal («истина», если число действительное).

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

Введите выражение, получите результат:

 

» c=2+3i; d=2i;

» c>d

 

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

 

    1. Числовые массивы

 

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

 

» al=[1 2 3]; d=[1+2i,2+3i,3-7i];

 

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

Можно изменять элементы уже сформированного массива путем применения операций индексации и присваивания. Например, введя:

 

» al(3)=789;

 

мы изменим третий элемент массива. Или, после введения:

 

» al(2)=(al(1)+al(3))/2;

 

второй элемент массива станет равным среднему арифметическому первого и третьего элементов. Запись несуществующего элемента вполне допустима – она означает добавление нового элемента к уже существующему массиву:

 

» al(4)=7;

 

Применяя после выполнения этой операции к массиву а1 функцию length, находим, что количество элементов в массиве возросло до четырех:

 

» length(al)

ans = 4

 

Тоже самое действие – «удлинение массива а1» - можно выполнить и с помощью операции конкатенации:

» al=[al 7];

 

Еще один способ создания одномерного массива основан на применении специальной функции, обозначаемой двоеточием (операция формирования диапазона числовых значений). Через двоеточие следует набрать первое число диапазона, шаг (приращение) и конечное число диапазона. Например:

 

» diap=3.7:0.3:8.974;

 

Если не нужно выводить на экран весь получившийся массив, то в конце набора (после конечного числа диапазона) следует набрать точку с запятой. Чтобы узнать, сколько элементов в массиве, следует вызвать функцию length (имя массива).

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

Введите с клавиатуры:

 

» a=[1 2; 3 4; 5 6]

 

Нажмите ENTER, получим:

 

a =

1 2

3 4

5 6

 

Полученную матрицу а размером 3x2 (первым указывается число строк, вторым – число столбцов) можно сформировать также вертикальной конкатенацией вектор-строк:

 

» a=[[1 2];[3 4];[5 6]];

 

или горизонтальной конкатенацией вектор-столбцов:

 

» a=[[1;3;5],[2;4;6]];

Структуру созданных массивов можно узнать с помощью команды whos(имя массива), размерность массива – функцией ndims, а размер массива – size.

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

 

» a(1,1)=1; a(1,2)=2; a(2,1)=3;

» a(2,2)=4; a(3,1)=5; a(3,2)=6;

 

Однако будет намного эффективнее, если до начала прописывания элементов массива, создать массив нужного размера функциями ones (m,n) или zeros(m,n), заполненный единицами или нулями (m – число строк, n – число столбцов).

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

Использование этих функций возможно и при задании массивов других размерностей.

Если после формирования массива Х потребуется, не изменяя элементов массива, изменить его размеры, можно воспользоваться функцией reshape (Х, М, N), где M и N – новые размеры массива Х.

Объяснить работу этой функции можно, только исходя из способа, каким система MATLAB хранит элементы массивов в памяти компьютера. Она хранит их в непрерывной области памяти упорядоченно по столбцам: сначала располагаются элементы первого столбца, вслед за ними расположены элементы второго столбца и т.д. Помимо собственно данных (элементов массива) в памяти компьютера хранится также управляющая информация: тип массива (например, double), размерность и размер массива, другая служебная информация.

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

Поменять местами строки матрицы с ее столбцам можно операцией транспортирования, которая обозначается знаком .' (точка и апостроф). Например:

 

» A=[1 1 1; 2 2 2; 3 3 3];

» B=A.'

B =

1 2 3

1 2 3

1 2 3

 

Операция ' (апостроф) выполняет транспонирование для вещественных матриц и транспонирование с одновременным комплексным сопряжением для комплексных матриц.

Объекты, с которыми работает MATLAB, являются массивами. Даже одно заданное число во внутреннем представлении MATLAB является массивом, состоящим из одного элемента. MATLAB позволяет делать вычисления с огромными массивами чисел также легко как и с одиночными числами, и это является одним из самых заметных и важных преимуществ системы MATLAB над другими программными пакетами, ориентированными на вычисления и программирование. Помимо памяти, необходимой для хранения числовых элементов (по 8 байт на каждый в случае вещественных чисел и по 16 байт в случае комплексных чисел), MATLAB автоматически при создании массивов выделяет еще и память для управляющей информации.

 

    1. Вычисления с массивами

 

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

Этапы компьютерного моделирования. Основы работы с MATLAB