Mоделирование процессов и систем в Matlab (966709), страница 15
Текст из файла (страница 15)
Поэтому при обращении к этим процедурам необходимо указывать имя М-файла, содержащего текст другой процедуры (функцни). Такие процедуры называют функциями функций. Чтобы воспользоваться функцией функции, пользователь должен создать М-файл, в катаром вычислялось бы значение нужной (<внутренней>) функции по известному значению ее аргумента. Приведем некоторые нз стандартных функций от функций, предусмотренных в МАТ1.АВ.
Вычисление интеграла методом квадратур осуществляется процедурой [[.спЦ - цнян['<иня Функция>',а.Ы Здесь а и Ь вЂ” нижняя и верхняя границы изменения аргумента функции; 1— полученное значение интеграла; спс — количество обращений к функции, представленной М-файлом с названием, указанным в строке символов <иия функции>.
Функция ццао использует квадратурные формулы Ньютона-Котеса четвертого порядка. В аналогичной процедуре циа118 применяются более точные формулы 8-га порядка. Интегрирование обыкновенных дифференциальных уравнений осуществляют функции обе23 и оае45. Они могут применяться как для численного решения (интегрирования) простых дифференциальных уравнений, так и для моделирования сложных динамических систем, то есть систем, поведение которых можно описать р д ° у б ' дифф р.
ц ° ° ур ° й(ОДУ). Урок 3 ° Программирование в среде МАТ[Аз Известно, что любая система ОДУ может быль представлена как система уравнений 1-го порядка в форме Коши: — = Г(У,ГА й= где у — вектор переменных состояния (фазовых переменных системы); à — аргумент (обычно время); à — нелинейная вектор-функция переменных состояния у и аргумента Г.
Обращение к процедурам численного интегрирования ОДУ выглядит следующим образом: [Г.у] " соегз( <иия Функции> дврвп.ус.ормоп5) [Г.у] - спе45('<иия функции>' дврап.уе.ор()спв) Используемые параметры имеют такой смысл: О <иия функции> — строка символов, представляющая собой имя М-файла, в котором вычисляется вектор-функция ~(у,г), то есть правые части системы ОДУ; О у0 — вектор начальных значений переменных состояни)с О 1 — массив рассчитанных значений аргумента, отвечающих шагам интегрирования; О у — матрица проинтегрированных значений фазовых переменных, в которой каждый столбец соответствует одной из переменных состояния, а строка содержит значения переменных состояния, отвечающие соответствующему шагу интегрирования; О 1зрап — вектор-строка [10 1Т1 па! ], содержащая два значения: 10 — начальное значение аргумента и 1Т1 па1 — конечное; О ог11 опз — строка, состоящая из параметров, которые определяют значения допустимой относительной и абсолютной погрешности интегрирования.
Параметр огг)опз можно не указывать. Тогда по умолчанию допустимая относительная погрешность интегрирования принимается равной 1.10 з, абсолютная (по любой нз переменных состояния) — 1.10 е. Если же зтн значения не устраивают пользователя, нужно перед обращением к процедуре численного интегрирования установить с помощью процедуры ооезе1 новые значения допустимых погрешностей оршам - опевес('Ве)[о) ',1е-4, 'АЬз[о! ' „[1е-4 1е-4 1е-5]) Параметр Ве! То1 определяет относительную погрешность численного интегрирования по всем фазовым переменным одновременно, а параметр АЬзТо1 является вектором-строкой, состоящей из значений абсолютных допустимых погрешностей численного интегрирования по каждой из фазовых переменных.
Функция опе23 осуществляет интегрирование численным методом Рунге-Кутта 2-го порядка, а с помощью одноименного метода 3-и) порядка она контролирует относительные и абсолютные погрешности интегрирования на каждом шаге и изменяет величину шага интегрирования так, чтобы обеспечить заданные границы погрешностей интегрирования. Функции Функций Для функции обе45 основным методом интегрирования является метод Рунге— Кутта 4-го порядка, а величина шага контролируется метолом Рунге-Кутта 5-го порядка. Вычисление минимумов и нулей функции осуществляется следующими функциями МАТГ,АВ; О йп п — отыскивает минимум функции одного аргумента; О йп'пв — отыскивает минимум функции нескольких аргументов; О грега — отыскивает нули функции одного аргумента. Обращение к первой из указанных функций в общем случае имеет такой вид: Хяп'и - ти1п('<иия функции>'.Х1.Х2) Результатом этого обращения будет значение Хяпп аргумента функции, которое отвечает локальному минимуму в интервале Х1<Х<Х2 функции, заданной М-файлом с указанным именем.
В качестве примера рассмотрим нахождение значения числа к как значения локального минимума функции у = соз (х) на отрезке [З.41: » Хи1п Ги1п('сов'.3,4) Хяпп - 3.141бе+ООО Обращение ко второй процедуре должно иметь такую форму: Хи)п - Оя)пя('<иня функции>'.ХО) Здесь Х является вектором аргументов, а ХΠ— начальным (исходным) значением этого вектора. Отыскивается ближайший локальный минимум функции, заданной М-файлом с указИнным именем.
Функция йп из находит вектор аргументов Хоп п, отвечающий найденному локальному минимуму. Обращение к функции тгего должно выглядеть следующим образом: г - Ггего('<иия функции '.кв.го).ггасе) Злесь кΠ— начальное значение аргумента, в окрестности которого отыскивается действительный нуль функции, значение которой вычисляется в М-файле с заданным именем; со1 — заданная погрешность вычисления нуля; вегасе — параметр, указывающий на необходимость вывода на экран промежуточных результатов; г — значение аргумента, соответствующего нулю функции.
График функции одной переменной можно построить с помощью процедуры тр1ОО. Ее отличие от процедуры р)ос в том, что для построения графика функции нет необходимости в предшествующем вычислении значений функции и аргумента. Обращение к функции тр1ОХ имеет такой вид: гр)ос('<иия функции>'.(<интервал>).п) Здесь <интервал — зто вектор-строка, содержащая два числа, которые задают, соответственно, нижнюю и верхнюю границы изменения аргумента; <иня функции> — имя М-файла с текстом процедуры, вычисляющей значение функции по заданному значению ее аргумента; и — число частей, на которые желательно разбить указанный интервал. Если последнюю величину не задать, по умолчанию интервал разбивается на 25 частей. И хотя количество частей (п) задано, количество Вб Урок 2 ° Программирование в среде МАТ(ДВ значений вектора х может быть значительно большим за счет того, что функция 1р1 о1 проводит вычисления с дополнительным ограничением, чтобы приращение угла наклона графика функции на каждом шаге не превышало 10 .
Если же оно оказывается большим, осуществляется дробление шага изменения аргумента, но не более чем на 20 частей. Последние два числа (10 и 20) могут быть изменены пользователем, для этого при обращении следует добавить новые значения в заголовок процедуры в указанном порядке. График функции не отобразится на экране (в графическом окне), если обратиться к процедуре таким образом: (хЛ3 - Гр1от('<ики фтннции>'.( интераали1,п1 Вместо этого будет вычислен вектор х аргументов и вектор (или матрица) 1' соответствуютцих значений указанной функции.
Чтобы затем построить график, необходимо испольэовать процедуру р1ог(хЛ). И-файлы Рассмотрим принципы и особенности написания программ и процедур, работаюпгих в среде МАТ1.АВ. Такие программы, представляющие собой код на языке МАТ1.АВ, хранятся в М-файлах. Особенности И-файлов В среде МАТ1.АВ программы создаются с помощью либо собственного встроенного редактора (начиная с версии МАТ1.АВ 5.0), либо внешнего текстового редактора, который вызовется автоматически, если его предварительно установить посредством команды Файл а Предпочтения командного окна МАТЕАВ. Например, это может быть редактор Хо1ера((е среды аидов з.
Окно предварительно установленного редактора появляется на экране после активизации команды Файл а Новый а М-файл илн выбора названия одного из существующих М-файлов при вызове в командном окне команды Файл а Открыть. В первом случае окно текстового редактора будет пустым, во втором — в нем будет содержаться текст вызванного М-файла. В обоих случаях окно текстового редактора готово для ввода нового текста или корректировки существующего. Есть две разновидности М-файлов — это так называемые файлы-сценарии (управляющие программы) и файлы-функции (процедуры).
И те, и другие должны иметь расширение имени файла лп (оно автоматически устанавливается при сохранении файла на диске), то есть нх нельзя различить по типу файла. В виде файлов-сценариев оформляют основные программы, управляющие от начала до конца организацией всего вычислительного процесса, и отдельные части основных программ. Как файлы-функции оформляются отдельные процедуры и функции, то есть те части программы, которые рассчитаны на неоднократное использование файлами-сценариями или другими процедурами при измененных значениях исходных параметров и не могут быть выполнены, если предварительно не задать значения переменных, называемых входными.
М-файлы Главным отличием кода этих двух видов М-файлов является то, что файлы-функции имеют первую строку (заголовок) вида ГопсС1оп «ПКВ - <»ля процедуры ( ПВВ ) Здесь ПК — перечень выходных величин; ПВ — перечень входных величин. Файлы-сценарии такой строки не имеют. Принципиальное же отличие состоит в различном восприятии системой имен переменных в файлах этих двух видов. В файлах-функциях все имена переменных, находящиеся внутри файла, а также имена, указанные в заголовке (ПКВ и ПВВ), воспринимаются как локальные, то есть все значения этих переменных после завершения работы процедуры исчезают, и область оперативной памяти, которы была отведена под их запись, освобождается для значений других переменных.
В файлах-сценариях все используемые переменные образуют так называемое рабочее простркнство (Жогк Брасе). Значения переменных сохраняются не только во время работы программы, но и на протяжении всего сеанса работы с системой, а значит, и при переходе от выполнения одного файла-сценария к выполнению другого. Иначе говоря, рабочее пространство является единым для всех файлов- сценариев, вызываемых в текущем сеансе работы с системой.
Благодаря этому любой длинный файл-сценарий можно разбить на отдельные фрагменты, оформить каждый из них в виде отдельного файла-сценария, а в главном файле-сценарии вместо соответствующего фрагмента записать оператор вызова файла-сценария, представляющего данный фрагмент. Таким образом обеспечивается компактное и наглядное представление даже довольно сложной программы. За исключением указанных отличий файлы-функции и файлы-сценарии оформляются одинаково. Оформление И-файлов В дальнейшем под М-файлом будем понвочать любой файл (файл-функцию или файл-сценарий), записанный на языке МАТ|АВ. Рассмотрим основные особенности оформления текста программы (М-файла) на языке МАТЮКАВ. О Обычно каждый оператор записывается в отдельной строке. Признаком конца оператора является символ возврата каретки и перехода на следующую строку (он не появляется в окне), который вводится в программу при нажатии клавиши Ептег.
О Можно также размещать несколько операторов в одной строке. Тогда предыдущий оператор этой строки должен заканчиваться точкой с запятой или запятой. О Можно длинный оператор записывать в несколько строк. При этом предыдущая строка оператора должна заканчиваться тремя точкльгн. О Если очередной оператор не заканчивается символом «;», результат его действия при выполнении программы будет выведен в командное окно. Чтобы 88 Урок 2 ° Программирование в среде МАТ[Аз предотвратить вывод на экран результатов действия оператора программы, запись этого оператора в тексте программы должна заканчиваться указанным символом (;). О Строка программы, начинающаяся знаком процента (Ж), не выполняется. Эта строка воспринимается как комментарий.