Mоделирование процессов и систем в Matlab (966709), страница 16
Текст из файла (страница 16)
Таким образом, для ввода комментария в любое место текста программы достаточно начать строку комментария с символа « ». О Строки комментария, предшествующие первому выполняемому оператору программы, то есть такому, который не является комментарием, воспринимаются как описание программы. Именно эти строки выводятся в командное окно, если в нем набрана команда Ье1р <иия Файла>..
О В программах на языке МАТЮКАВ отсутствует символ, обозначающий конец текста программы. В языке МАТ[.АВ переменные не описываются и не объявляются. Любое новое имя, появляющееся в тексте программы при ее выполнении, воспринимается системой как имя матрицы. Размер этой матрицы устанавливается при предварительном вводе значений ее элементов либо определяется действиями по установлению значений ее элементов, описанными в предшествующих операторах или процедуре. Эта особенность делает язык МАТЮКАВ очень простым в использовании. В этом языке невозможно применять матрицу или переменную, значения элементов которой предварительно не введены влн не вычислены (а значит„не определены размеры этой матрипза). В подобном случае при выполнении программы МАТ[АВ появится сообщение об ошибке Переменная не определена.
Имена переменных могут содержать лишь буквы латинского алфавита или цифры и должны начинаться с буквы. Общее число символов в имени может достигать 30. В именах допускается использование как прописных, так и строчных букв. Особенностью языка МАТ[.АВ является то, что строчные и прописные буквы в именах различаются. Например, символы а и А могут использоваться в одной программе для обозначения разных величин.
Создание простейших файлов-функций При написании собственных программ, а также при использовании стандартных функций от функций для решения своих задач, пользователь не сможет обойтись без создания собственных файлов-функций. Общие требования к построению текста программы Как было отмечено ранее, код процедуры, содержащийся в файле-функции должен начинаться со строки заголовка Гопсг1оп [«ПИВ>3 - <иия процеяури>(«ПВВ>) Если перечень конечных (выходных) величин (ПКВ) содержит только один обьект (в общем случае — матрицу), то файл-функция представляет собой обычную Создание простейы(их файлов-функций 89 функцию (одной или нескольких переменных). Фактически даже в этом простейшем случае файл-функция уже является процедурой в обычном смысле в терминах других языков программирования, если выходная величина является вектором или матрицей. Первая строка в этом случае имеет такой вид: Гипсе(оп <иня перененной> - <иня процедуры>(<ПВВ>) Если же в результате выполнения файла-функции должны быть определены (вычислены) несколько объектов (матриц), то файл-функция представляет собой уже более сложный объект, который в программировании обычно называется процедурой (в языке Паскаль) или подпрограммой.
Тогда общий вид первой строки становится таким: Попсе! оп (у1.У2....уп) - <иня процедуры (<ПВВ>) То есть перечень выходных величин у1.У2, ....Уп должен быть представлен как вектор-строка с элементами У1„У2, ..., Уп (все они могут быль матрицами). В простейшем случае заголовок функции с одной переменной приобретет следующий вид: Сцпс(! оп у - Гипс(х) Здесь Гцпс — имя функции (М-файла). В качестве примера рассмотрим процесс создания М-файла для функции и >л( ) >< 'ы*ч ' '— Сначала следует выбрать в командном окне команду Файл я Новый в И-файл.
На экране появится окно текстового редактора. В нем нужно набрать такой текст: топот(оп у Г1(хА) т Процедура. вычисляющая значение функции т У (б 3)"'ст9(х)"вцгт(5(п(х) 4 — сов(х)"4). $ Обращение у - Г1(х.б). у - (б"3):"со( (х).>яцс((з(п(х)."4 - соз(х)."4): После этого нужно сохранить данный текст в файле под именем Гзли — необходимый М-файл создан. Теперь можно пользоваться этой функцией при расчетах. Введем команду » у ГН1.0.1) Получим такой результат: у - 4. 1421е-004 Следует заметить, что аналогично можно получить вектор сразу всех значений указанной Функции при разных значениях аргумента, если последние собрать в некоторый вектор. Сформируем вектор » аею 0 : О.
3 : 1. В; Обратимся к той же процедуре: » ау Г1(аес. 1) 90 Урюк 2 ° Програмиирование в среде З(АТ[АВ Получим следующее: Иагп(пр: 01чзбе Ьу лего му СЬ1гппз 1 Фгош)Ь 4 На + 1п(10 + 2.93691 ОЬ1цвпз 6 (Ьгоирп 7 0.3339 0.0706 О ь 0.87991 0.3703 -0.2209 Возможность использования сформированной процедуры как для отдельных чисел, так и для векторов и матриц обусловлена применением в записи соответствующего М-файла вместо обычных знаков арифметических действий их аналогов с предшествующей точкой. Как показывают приведенные примеры, имена переменных, указанные в заголовке файла-функции могут быть любыми (могут совпадать или не совпадать с именами, используемыми при обращении к файлу-функции), то есть носят формальный характер. Важно, чтобы структура обращения полностью соответствовала структуре заголовка в записи текста М-файла и чтобы переменные в этом обращении имели тот же тнп и размер, что и в заголовке М-файла.
Чтобы получить информацию о созданной процедуре, достаточно набрать в командном окне команду Ье) р Г1. В результате в нем появится следующее: Процедура„ внчнсляощая значение функции у - (б"3)»ССО(Х)*ЗОГ((ЮП(Х)"4 - СОЗ(Х)"4). Обращение у - Г1(х.б) . Построим графики функций у, = 200з[пх/х и ул - хз. Для этого следует создать М-файл, который вычисляет значения функций. тычсл!оп у - вутцп(к) Ф Оичнспение явух функций т у(1) - 200 51п(х).7х. у(2) - х"2.
у(:.1) = 200"з1п(х).lх; у(:.2) = х ."2: Теперь построим графики функций » тр)от('вутцп'. [-20 20). 50. 2). Ог10 » вет(рса.'Гопл5(ле'.)2): Стт)е('График функции "ИТТИ"') Результат приведен на рис. 2.1. Создадим файл-Функцию, вычисляющую значение следующей функции: У(г) - И,+Яг+ йзз(п(й,г+ йз). В этом случае удобно объединить совокупность коэффициентов йч в единый век- тор К: к [к1 к2 кз ка 061 ~Г СОВЕТ Во избежание вывода на экран нежелательньи промежуточных результатов, необходиио в тексте процедуры все вычислительные операторы завершать сииволом к;». 91 Создание простейших файлов-функций и создать такой М-файл: (пист(оп у - бтоб(х.К) т Вичисление функции $ у - К(1) + К(2)>х + К(3)*зтп(К(4)"х + К(5)).
$ где К вЂ” вектор. состоящий из пяти эленентов $ Используется для определения текущих значений д паранетров двикения объекта у - К(1) + К(2)' х + К(3)"зтп(К(4)"х + К(5)); гн<4 < фт>гч "мтгцн" зоо эео мо шо ш та зо Рис. 2.1. Результат применения функции гр(от Тогда расчет значений атой функции можно осушестщить таким образом: » К опея(1.5): » т 0:)г10." » т - бтоб(т,к) гт 1.6415 2.9093 3.1411 3.2432 4.04П 5.7206 7.6570 В.9094 9.4560 10.0000 Типовое оформление процедуры-функции М-файл процедуры-функции рекомендуется оформлять по такому шаблону: бэпсстоп (<выход>) - <иня функции>(<вход>) т Краткое пояснение назначения процедуры $ Входные перененные Д Детальное пояснение. касающееся назначения, типа и разнеров д какдой из оерененных.
приведенных в перечне вход> $ Выходные перененные д <Детальное пояснение, касающееся назначения, типа и размеров д халдой из перененных перечня <Выход> $ и величин. используеных в процедуре как глобальные> Д Использование других Функций и процедур $ <Раздел заполняется. если процедура содериит обращение $ к другин процедтран. кроне астровыми> < Пустая строка > Урок 2 ° Програииирование в среде МАТОтй т Автор : <указывается автор процедуры, дата создания Х процедуры и организация, в которой создана протравив> < Т е к с т и с п о л н я е я о й части процедуры> Здесь <выход> — перечень выходных переменных процедуры; <вход> — перечень входных переменных, разделенных запятыми.
~ ПРИМЕЧАНИЕ При использовании команды пе~р «имя процедуры в командное окно выводятся строки комментария до первой пустой строки. Гоздание файлов-сценариев Файлы-сценарии являются основными исполняемыми программными единица- ми в МАТЕАВ. С их помощью можно управлять вычислительным процессом. Основные особенности При создании файлов-сценариев необходимо принимать во внимание следующее. О Файлы-сценарии являются независимо (самостоятельно) исполняемыми блоками операторов и команд.
О Все используемые переменные образуют так называемое рабочее пространство, которое является общим для всех исполняемых файлов-сценариев; из этого следует, что при выполнении нескольких таких файлов имена переменных в них должны быть согласованы, поскольку конкретное имя обозначает в каждом из этих файлов один и тот же объект вычислений. О В файлах-сценариях отсутствует заголовок, то есть первая строка, имеющая определенный вид и назначение. О При обращении к файлам-сценариям не требуется указывать никаких имен переменных: все переменные формируются в результате выполнения программы либо, будучи сформированными ранее, существуют в рабочем пространстве.
Необходимо отметить, что рабочее пространство файлов-сценариев недоступно для файлов-функций, которые используются в нем. В файлах-функциях невозможно, обходя заголовок файла-функции, использовать значения, которые приобретают переменные в файле-сценарии (поскольку все переменные файла-функции являются локальными). Единственной возможностью сделать так, чтобы внутри файла-функции некоторая переменная рабочего пространства могла сохранить свое значение и имя, является специальное объявление этой переменной в файле-сценарии в качестве глобальной с помощью служебного слова п1опаЕ Кроме того, аналогичная запись должна содержаться и в тексте М-файла того файла- функции, который будет использовать значение соответствующей переменной файла-сценария. Перестроим файлы-функции, приведенные в предыдущем разделе: введем в них коэффициенты соответствующих функций как глобальные переменные.