Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Численные расчеты в среде MatLab

Покупка
Основная коллекция
Артикул: 778177.01.99
В учебном пособии представлены основные приемы создания М-файлов и графического интерфейса в среде MatLab. Предназначено для студентов, обучающихся по направлениям 09.03.01 - «Информатика и вычислительная техника», 09.03.04 - «Программная инженерия».
Трошина, Г. В. Численные расчеты в среде MatLab : учебное пособие / Г. В. Трошина. - Новосибирск : Изд-во НГТУ, 2020. - 72 с. - ISBN 978-5-7782-4092-6. - Текст : электронный. - URL: https://znanium.com/catalog/product/1866929 (дата обращения: 19.07.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Министерство науки и высшего образования Российской Федерации 

НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ 
__________________________________________________________________________ 
 
 
 
 
 
 
Г.В. ТРОШИНА 
 
 
 
 
ЧИСЛЕННЫЕ РАСЧЕТЫ  
В СРЕДЕ MATLAB 
 
 
Утверждено Редакционно-издательским советом университета 
в качестве учебного пособия 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
НОВОСИБИРСК 
2020 

УДК 004.42(075.8) 
Т 766 
 
 
 
Рецензенты: 
канд. техн. наук, доцент С.П. Ильиных  
канд. физ.-мат. наук, доцент Ю.А. Котов  
 
 
 
 
Работа подготовлена на кафедре вычислительной техники 
 
 
 
Трошина Г.В. 
Т 766  
Численные расчеты в среде MatLab: учебное пособие / 
Г.В. Трошина. – Новосибирск: Изд-во НГТУ, 2020. – 72 с.  

ISBN 978-5-7782-4092-6 

В учебном пособии представлены основные приемы создания  
М-файлов и графического интерфейса в среде MatLab. Предназначено 
для студентов, обучающихся по направлениям 09.03.01 – «Информатика и вычислительная техника», 09.03.04 – «Программная инженерия».  
 
 
 
 
 
 
 
 
 
УДК 004.42(075.8) 
 
ISBN 978-5-7782-4092-6 
© Трошина Г.В., 2020 
 
© Новосибирский государственный 
 
технический университет, 2020 

 
 
 
 
 
 
 
Введение 
 
Цель написания данного учебного пособия – дать теоретическую 
базу, необходимую для выполнения лабораторных, контрольных и 
расчетно-графических работ по курсам «Средства инженерных и научных расчетов», «Вычислительная математика».  
Каждый из разделов учебного пособия включает в себя примеры, 
графики, контрольные вопросы и тесты, необходимые для лучшего 
понимания излагаемого материала и получения практических навыков 
использования среды MatLab.  
Большое внимание уделено рассмотрению установившегося режима в задаче оценивания параметров динамических объектов. Приведена методика формирования информационной матрицы Фишера, рассмотрены вопросы моделирования итерационной процедуры оценивания динамических параметров в задаче активной идентификации.  
 
 

1. Создание М-файлов и операции с функциями 

1.1. Создание М-файлов 

При использовании командного окна среды MatLab в диалоговом 
режиме пользователь формирует одну или несколько команд в текущей строке. Несмотря на широкие возможности, которые предоставляет пользователю среда MatLab, такая последовательность действий 
подходит только для разовых расчетов. При изменениях в исходных 
данных или при выполнении большого количества однотипных действий этот режим не всегда является удобным.   
Необходимую цепочку команд можно включить в текстовый файл. 
В результате неоднократное обращение к одним и тем же данным позволит сделать вычислительный процесс более удобным. Подобного 
рода программы принято называть сценариями. Сценарий является 
самым простым типом М-файлов – у него нет входных и выходных 
аргументов. Он используется для автоматизации многократно выполняемых вычислений.  
Сценарий может быть подготовлен в любом текстовом редакторе и 
записан с расширением .m. Такие файлы используют единое рабочее 
пространство – Workspace. Переменные изменяются и сохраняются в 
течение всего сеанса работы. Это позволяет выполнить последовательно несколько файлов-сценариев в текущем сеансе работы с системой. 
Значения переменных передаются через Workspace, а промежуточные 
данные сохраняются в файлах.   
Среда MatLab располагает собственным редактором М-файлов, который вызывается после активизации команды File/New/M-File. Приступить к редактированию существующего М-файла можно после выбора команды  File/Open. При формировании последовательности команд в окне тестового редактора осуществляется автоматическая нумерация строк.  
При оформлении текста программ на языке MatLab есть свои особенности. Каждый оператор должен быть описан в отдельной строке. 

Нажатие клавиши <Enter> означает окончание оператора. Длинный 
оператор записывается в несколько строк, но в этом случае в конце 
предыдущей строки ставятся три точки. Символ  < % > означает начало 
комментария в тексте программы. Все строчные и прописные буквы при 
определении имен переменных различаются. Длинный файл-сценарий 
можно разделить на отдельные программы, каждый из которых также 
можно представить в виде самостоятельного файла-сценария. Файлсценарий позволяет управлять всем вычислительным процессом.       
Пример.  Рассчитать значение выражения:  

 
 
(sin(3 * pi) + cos(0) + log(1))/exp(1) 

Решение:  >> (sin(3*pi) + cos(0) + log(1))/exp(1) 

 
 
ans = 

     
 
 0.3679 

Пример. Написать М-файл с именем primer.m, который будет считать факториал: 
a = 1 

for i = 1:5 

     a = a * i 

end 

Этот файл является файлом-сценарием. Ввод команды primer.m в 
командной строке системы MatLab вызывает выполнение операторов 
этого сценария. Точка с запятой в конце оператора подавляет вывод 
результата на экран. 

1.2. Создание файлов-функций 

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

function <выходные параметры>=<имя функции>(входные параметры) 

Файлы-функции и файлы-сценарии нельзя отличить по расширению имени файла .m. Процедуры, предназначенные для многократного 
использования файлами-сценариями, оформляются в виде файловфункций. Переменные, используемые в рамках файлов-функций, являются локальными переменными. Область, используемая локальными 
переменными, после выполнения файла-функции освобождается для 
других переменных. Переменные единого рабочего пространства с помощью оператора global могут быть объявлены в качестве глобальных 
переменных. В этом случае функция может обратиться к указанным 
переменным. 
Необходимо, чтобы имя М-файла, в котором записывается программа вычислительного процесса, совпадало с именем функции. Имя 
функции не должно превышать 31 символ. Имя может быть и длиннее, 
но система MatLab принимает во внимание только первые 31 символ. 
Имя файла-функции должно начинаться с буквы, остальные символы 
могут быть любой комбинацией букв, цифр и подчеркиваний. 
Пример. Написать функцию для вычисления факториала. Файл 
должен быть сохранен с именем factorial.m: 

function y = factorial(n) 

k = 1; 

for i = 1:n 

     k = k * i; 

end 

y = k; 

Для вычисления 5! достаточно набрать в текущей строке команду 

>> k = factorial(5) 

k = 

      120 

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

Строка определения функции сообщает системе MatLab, что  процедура является файлом-функцией, а также определяет список входных аргументов. 
Пример: 

function y = average(x) 

где function – ключевое слово, определяющее файл-функцию, y – выходной аргумент, average – имя функции, x – входной аргумент. 
Если функция имеет более одного выходного аргумента, то список 
выходных аргументов помещается в квадратные скобки. Входные аргументы, если они присутствуют, помещаются в круглые скобки. Для 
отделения аргументов во входном и выходном списках применяются 
запятые. 
Пример: 

function[x, y, z] = myfunc(a, b, c) 

Первая строка комментария. Для функции average первая строка 
комментария выглядит так: 

% AVERAGE Среднее значение элементов вектора 

Это первая строка текста, которая появляется, когда пользователь 
набирает команду help <имя_функции>.  
Комментарий. Для М-файлов можно создать online-подсказку, 
вводя текст в одной или более строках. При вводе команды подсказки 
help <имя_функции> система MatLab отображает строки комментария, которые размещаются между строкой определения функции и 
первой пустой строкой либо началом программы. Команда help 
<имя_функции> игнорирует комментарии, размещенные вне этой области. 
Тело функции. Тело функции содержит код языка MatLab, который 
выполняет вычисления и присваивает значения выходным аргументам. 
Операторы в теле функции могут состоять из вызовов функций, программных конструкций для управления потоком команд, интерактивного ввода/вывода, вычислений, присваиваний, комментариев и пустых строк. 
Вызов функции. При вызове m-функции система MatLab транслирует функцию в псевдокод и загружает в память. Псевдокод остается в 
памяти до тех пор, пока не будет использована команда clear или завершен сеанс работы. 

Существует несколько разновидностей m-функций. Функции, имена которых совпадают с именами М-файлов, называются головными 
функциями.  
Подфункции представляют собой такой вид функций, описания которых находятся в М-файле после головной функции. Особенность 
использования подфункций М-файла заключается в том, что они не 
могут быть вызваны извне. Эти функции предусматривают внутреннее 
использование. Вызов подфункций осуществляет головная функция  
М-файла. К вложенной функции всегда может обращаться окружающая ее функция.  
Для организации ветвлений внутри выполнения вычислительной 
процедуры применятся условные операторы. 
Ниже приведены конструкции условных операторов: 
1-й вариант:  if <условие> 

 
<операторы> 

 
end 

Операторы (тело выражения) выполняются только в том случае, 
если условие истинно, если условие ложно, то тело выражения не выполняется. 
2-й вариант:  if <условие> 

 
<операторы 1> 

 
else 

 
<операторы 2> 

 
end 

3-й вариант:  if <условие1> 

 
<операторы 1> 

 
elseif <условие2> 

 
<операторы2> 

 
elseif <условие3> 

 
<операторы3> 

 
. . . 

else 

 
<операторы> 

 
end 

В среде MatLab применяются следующие операторы сравнения: < – 
меньше; <= – меньше или равно; > – больше; >= – больше или равно;  
= – равно; ~= – не равно. В среде MatLab предусмотрено использование 
следующих логических операций: & – логическое «и» (and); | – логическое «или» (or); ~ – логическое отрицание (not). В результате выполнения логических операций получают значения 0 (false) и 1 (true). 
Как правило, при разработке программ требуется использовать 
операторы цикла. Условный оператор цикла (или оператор цикла с 
предусловием) осуществляет повторение операторов нефиксированное 
число раз. Формат оператора имеет следующий вид: 
while <условие> 

<операторы> 

end 

Операторы выполняются, если переменная «условие» имеет ненулевые элементы. 
Формат арифметического оператора цикла можно представить следующим образом: 
for <имя> = <начальное значение>: <шаг>: <конечное значение> 

<операторы> 

end 

где <имя> – имя переменной цикла, <начальное значение> – начальное значение переменной цикла, <конечное значение> – конечное значение управляющей переменной. Величина <шаг> указывает значение 
приращения переменной цикла в процессе ее изменения от начального 
значения до конечного значения. Если величина шага не задана, то по 
умолчанию значение шага принимается равным единице. 
Для вывода информации в диалоговом режиме можно использовать 
команду disp. Эта команда имеет один аргумент.  Для вывода нескольких переменных необходимо создать объект, содержащий все значения. Например, это можно сделать, если сформировать вектор соответствующих переменных. Аналогично можно объединять и текстовые 

переменные. Некоторые трудности возникают при объединении текстовых и числовых переменных, так как они являются данными разных 
типов. В этом случае используют функцию num2str, которая дает возможность преобразовать числовое значение переменной в текстовую 
переменную. Другой способ, позволяющий объединить в одну строку 
текст и числовую переменную, состоит в использовании функции 
sprintf. После выполнения команды 
 
 disp(sprintf('<текст1> %g <текст2>', X)) 

получаем текстовую строку, в состав которой входит текст, заданный в 
части <текст1>, значения переменной X в соответствии с форматом 
%g, и текст, содержащийся в части <текст2>. 

1.3. Графическое оформление результатов вычислений 

В среде MatLab представлены широкие возможности графического 
оформления информации. Это дает возможность для построения двухмерных и трехмерных графиков функций, заданных как в аналитическом виде, так и в виде векторов и матриц, что позволяет построить 
множество функций на одном рисунке, а также иллюстрировать графики разными цветами, типами точек и линий в различных системах 
координат. 
Пользователь среды MatLab способен строить диаграммы, гистограммы и графики специальных функций. В качестве основных функций двухмерной графики используются следующие функции: 
plot (x, y) 

plot (x, y, s) 

plot (x1, y1, s1, x2, y2, s2, …, xn, yn, sn) 

где x – аргумент функции, задаваемой в виде вектора; 
y – функция, представленная в аналитическом виде или в виде вектора или матрицы; 
s – вектор стилей графика, может быть константа, определяющая 
цвет линий графика, тип точек и линий; 
x1, x2, …, xn – аргументы n функций, изображаемых на одном графике; 
y1, y2, …, yn – функции, изображаемые на одном графике.