М.С.Лурье, О.М.Лурье
Применение программы MATLAB при изучении курса электротехники Утверждено редакционно-издательским ...
61 downloads
298 Views
4MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
М.С.Лурье, О.М.Лурье
Применение программы MATLAB при изучении курса электротехники Утверждено редакционно-издательским советом СибГТУ в качестве учебного пособия для студентов всех специальностей и форм обучения
Красноярск 2006
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
2
Федеральное агентство по образованию ГОУВПО «Сибирский государственный технологический университет» М.С. Лурье О.М. Лурье
Применение программы MATLAB при изучении курса электротехники
Для студентов всех специальностей и всех форм обучения
Красноярск 2006
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
3
УДК 621.3.018.72.025.1
Лурье М.С., Лурье О.М. Применение программы MATLAB при изучении курса электротехники. Для студентов всех специальностей и форм обучения. - Красноярск: СибГТУ, 2006.- 208 с.
Данное пособие охватывает вопросы, посвященные применению програмной среды MATLAB для решения задач курса электротехники. Пособие знакомит студентов с общими основами применения программы MATLAB, и с рядом частных, в которых рассматриваются специфические вопросы расчета электротехнических цепей. В заключительной части пособия даются общие сведения и примеры по моделированию электрических цепей с помощью входящего в программную среду MATLAB пакета Simulink. Пособие изложено доступным языком, четко сформулированы основные определения и выводы. Методы расчета электрических цепей снабжены примерами программ на языке MATLAB. Работа снабжена большим количеством иллюстраций, поясняющих примеров. Пособие предназначено для студентов всех форм обучения и всех специальностей. Рисунков 144, таблица 5, библиогр. назв. 12.
Рецензенты: к.т.н., доц. Кожухов В.А. (КрасГАУ); к.т.н., доц. Зингель Т. (методический Совет СибГТУ)
М.С. Лурье, О.М. Лурье ГОУВПО «Сибирский государственный технологический университет», 2006.
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
4
Введение Электротехника - это наука о практическом применении электричества, что требует навыков практического решения конкретных расчетных задач. Поэтому, при изучении курсов "Теоретические основы электротехники", "Общая электротехника", "Промышленная электроника", "Электрические машины", "Основы электропривода" и других специальных дисциплин много времени уделяется как рассмотрению решения различных задач, так и самостоятельному выполнению студентами расчетнографических заданий. При выполнении заданий студент должен использовать знания, полученные в курсе математики. Это разделы: решения систем линейных алгебраических уравнений, комплексные числа, вектора и действия над ними, дифференциальное исчисление, решение обыкновенных дифференциальных уравнений, ряды Фурье и спектральный анализ, теория функций комплексного переменного и д.р. К сожалению, численные расчеты, выполняемые студентами, зачастую производятся с помощью калькулятора, то есть практически вручную. Современная вычислительная техника если и используется, то часто лишь для окончательного оформления работы. В то же время, студент должен не только уметь решать те или иные электротехнические задачи, но и делать это по возможности современными методами, то есть, применяя персональный компьютер. В последние годы в университетских и инженерно-технических кругах мира (прежде всего - Европы) получает широкое распространение новая компьютерная система проведения математических расчетов и инженерных вычислений - MATLAB (MATrix LABoratory - матричная лаборатория). Матрицы широко применяются в сложных математических расчетах, например при решении задач линейной алгебры и математического моделирования статических и динамических систем и объектов. Они являются основой автоматического составления и решения уравнений состояния динамических объектов и систем. Примером может служить расширение MATLAB - Simulink. Это существенно повышает интерес к системе MATLAB, вобравшей в себя лучшие достижения в области быстрого решения матричных задач. Однако в настоящее время MATLAB далеко вышла за пределы специализированной матричной системы и стала одной из наиболее мощных универсальных интегрированных СКМ. Слово «интегрированная» указывает на то, что в этой системе объединены удобная оболочка, редактор выражений и текстовых комментариев, вычислитель и графический программный процессор. Основные преимущества MATLAB, выгодно выделяющие ее среди
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
5
существующих ныне математических систем и пакетов (MathCad, Mathematica и др.), заключаются в следующем: система MATLAB специально создана для проведения именно инженерных расчетов: математический аппарат, используемый ею, предельно приближен к современному математическому аппарату инженера и ученого и опирается на вычисления с матрицами, векторами и комплексными числами; графическое представление функциональных зависимостей здесь организовано в форме, требуемой именно инженерной документацией; язык программирования системы MATLAB очень прост, близок к языку Basic, посилен любому начинающему; он содержит всего несколько десятков операторов; незначительное количество операторов здесь компенсируется большим числом процедур и функций, смысл которых понятен пользователю с соответствующей математической и инженерной подготовкой; в отличие от большинства математических систем, MATLAB является открытой системой; это означает, что практически все процедуры и функции MATLAB доступны не только для использования, но и для коррекции и модификации; MATLAB - система, которую пользователь может расширять по своему усмотрению созданными им программами и процедурами (подпрограммами); ее легко приспособить к решению нужных классов задач; очень удобна возможность, как составлять, собственные отдельные программы с целью многократного их использования для исследований, так и применять практически все вычислительные возможности системы в режиме чрезвычайно мощного научного калькулятора; это делает MATLAB незаменимым средством проведения научных и инженерных расчетных исследований; последние версии MATLAB позволяют легко интегрировать ее с текстовым редактором Word, что дает возможность использовать при составлении текстовых документов вычислительные и графические средства MATLAB. Возможности системы огромны, а по скорости выполнения задач она опережает многие другие подобные системы. Все эти особенности делают систему MATLAB весьма привлекательной для использования в учебном процессе высших учебных заведений. Система MATLAB создана фирмой Math Work Inc. (США, г. Нейтик, штат Массачусетс). Хотя впервые эту систему начали использовать в конце 70-х годов, настоящий расцвет ее применения наступил в конце 80-х, с появлением на рынке версии 4.0. Последние версии MATLAB 6 и 6.5 - это чрезвычайно развитые системы, содержащие огромное количество процедур и функций, необходимых инженеру и научному работнику для осуще-
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
6
ствления сложных численных расчетов, моделирования поведения технических и физических систем, оформления результатов этих расчетов в наглядном виде. В целом MATLAB - это уникальная коллекция реализаций современных численных методов компьютерной математики, созданных за последние три десятка лет. Она вобрала в себя и опыт, правила и методы математических вычислений, накопленные за тысячи лет развития математики. Это сочетается с мощными средствами графической визуализации и даже анимационной графики. Систему с прилагаемой к ней обширной документацией вполне можно рассматривать как фундаментальный многотомный электронный справочник по математическому обеспечению ЭВМ от массовых персональных компьютеров до супер-ЭВМ. Увы, пока представленный полностью лишь на английском и частично на японском языках. MATLAB предназначена для довольно сложных расчетов Это и определяет круг ее пользователей: инженеры-проектировщики и разработчики новых устройств, студенты и аспиранты, научные работники, физики и математики. Система приспособлена к любой области науки и техники, содержит средства, которые особенно удобны для электро- и радиотехнических расчетов (операции с комплексными числами, матрицами, векторами и полиномами, обработка данных, анализ сигналов и цифровая фильтрация). В данной работе, сделана попытка, дать некоторые начальные сведения о системе MATLAB, работе с ней, а также об использовании одного из самых эффективных ее приложений пакета Simulink для решения различных задач электротехники. Рассмотрены вопросы расчета цепей постоянного и переменного тока, анализа переходных процессов и цепей несинусоидального тока. Приведены некоторые сведения о решении задач из области теории поля. Изложение каждого раздела предваряется краткими теоретическими сведениями и снабжено примерами расчетов. Все примеры содержат, как текст программы, или схему модели, так и полученные в ходе решения результаты в виде числовых или графических данных. Программы снабжены комментариями и необходимыми пояснениями. Студент может использовать их для решения своих домашних заданий, минимально скорректировав текст. Данное пособие будет полезно при выполнении расчетнографических, курсовых работ, а так же для дипломного проектирования студентам всех специальностей, изучающим электротехнику, а так же студентам, изучающим другие электротехнические дисциплины.
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
7
1 Основные сведения о системе MATLAB Система MATLAB была разработана Молером (С. В. Moler) и с конца 70-х гг. широко использовалась на больших ЭВМ. В начале 80-х гг. Джон Литл (John Little) из фирмы MathWorks, Inc. разработал версии системы PC MATLAB для компьютеров класса IBM PC, VAX и Macintosh. Сейчас свыше десятка популярных компьютерных платформ могут работать с системой MATLAB. К расширению системы были привлечены крупнейшие научные школы мира в области математики, программирования и естествознания. И вот теперь появилась версия этой системы - MATLAB 6. Привлекательной особенностью системы является то, что она содержит развитую встроенную матричную и комплексную арифметику. Система поддерживает выполнение операций с векторами, матрицами и массивами данных, реализует сингулярное и спектральное разложения, расчет ранга и чисел обусловленности матриц, поддерживает работу с алгебраическими полиномами, решение нелинейных уравнений и задач оптимизации, интегрирование в квадратурах, решение дифференциальных и разностных уравнений, построение различных видов графиков, трехмерных поверхностей и линий уровня. В ней реализована удобная операционная среда, позволяющая формулировать проблемы и получать решения в привычной, математической форме, не прибегая к рутинному программированию. Основным объектом системы MATLAB является прямоугольный числовой массив, который допускает комплексные элементы и ввод матриц без явного указания их размеров. Система позволяет решать многие вычислительные задачи за значительно меньшее время, нежели то, которое необходимо для написания соответствующих программ на языках FORTRAN, Basic и С. Система MATLAB выполняет операции с векторами и матрицами даже в режиме непосредственных вычислений без какого-либо программирования. Ею можно пользоваться как мощнейшим калькулятором, в котором наряду с обычными арифметическими и алгебраическими действиями могут использоваться такие сложные операции, как обращение матрицы, вычисление ее собственных значений и векторов, решение систем линейных алгебраических уравнений и много других. Однако основная отличительная черта системы - это легкость ее модификации и адаптации к конкретным задачам пользователя. Пользователь может ввести в систему любую новую команду, оператор или функцию и пользоваться затем ими так же просто, как и встроенными операторами и функциями. При этом, в отличие от языков программирования, таких как Basic, Pascal или С, нет необходимости в их предварительном описании. Новые программы, функции и процедуры в системе MATLAB сохраняются в виде файлов, имею-
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
8
щих расширение .m. Это делает набор операторов и функций практически неограниченным. В базовый набор слов системы входят: спецзнаки; знаки арифметических и логических операций; арифметические, тригонометрические и некоторые специальные математические функции; функции быстрого преобразования Фурье и фильтрации; векторные и матричные функции; средства для работы с комплексными числами; операторы построения графиков в декартовой и полярной системах координат, трехмерных поверхностей и т.д. Таким образом, MATLAB предоставляет пользователю большой набор готовых средств (около половины из них - внешние расширения в виде М-файлов). Система MATLAB имеет собственный язык программирования, напоминающий Basic. Запись программ в системе является традиционной и поэтому привычной для большинства пользователей персональных компьютеров. К тому же система дает возможность редактировать программы при помощи любого привычного для пользователя текстового редактора. MATLAB имеет большие возможности для работы с сигналами, для расчета и проектирования аналоговых и цифровых фильтров, для построения их частотных, импульсных и переходных характеристик. Имеются в наличии и средства для спектрального анализа и синтеза, в частности, для реализации прямого и обратного преобразования Фурье. Благодаря этому система довольно привлекательна для проектирования электронных устройств. С системой MATLAB поставляется свыше сотни М-файлов, которые содержат демонстрационные примеры и определения новых операторов и функций. Эта библиотека, все файлы которой подробно прокомментированы, - настоящая сокровищница прекрасных примеров программирования на языке системы. Изучение этих примеров и возможность работы в режиме непосредственных вычислений значительно облегчают знакомство с системой серьезных пользователей, заинтересованных в использовании математических расчетов. Работа в среде MATLAB может осуществляться в двух режимах: в режиме калькулятора, когда вычисления производятся непосредственно после набора очередного оператора или команды MATLAB; при этом значения результатов вычисления могут присваиваться некоторым переменным, либо результаты получаются непосредственно, без присваивания (как в обычных калькуляторах); путем вызова программы, составленной и записанной на диске, на языке MATLAB, которая содержит все необходимые команды, обеспечивающие ввод данных, организацию вычислений и вывод результатов на экран (программный режим).
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
9
В обоих режимах пользователю доступны практически все вычислительные возможности системы, в том числе по выводу информации в графической форме. Программный режим позволяет сохранять разработанные вычислительные алгоритмы и, таким образом, повторять вычисления при других исходных данных. В обширном и постоянно пополняемом комплексе команд, функций и прикладных программ системы MATLAB содержатся специальные средства для электротехнических и радиотехнических расчетов (операции с комплексными числами, матрицами, векторами и полиномами, обработка данных, анализ сигналов и цифровая фильтрация). Они иллюстрируются множеством практически полезных примеров. К разработкам расширений для системы MATLAB привлечены многие научные школы мира и руководящие ими крупные ученые и педагоги университетов. Важными достоинствами системы являются ее открытость и расширяемость. Большинство команд и функций системы реализованы в виде текстовых М-файлов (с расширением .m) и файлов на языке Си, причем все файлы доступны для модификации. Пользователю дана возможность создавать не только отдельные файлы, но и библиотеки файлов для реализации специфических задач. Поразительная легкость модификации системы и возможность ее адаптации к решению специфических задач науки и техники привели к созданию десятков пакетов прикладных программ (toolbox), намного расширивших сферы применения системы. Некоторые из них, например Notebook (интеграция с текстовым процессором Word и подготовка «живых» электронных книг) и Simulink (моделирование динамических систем и устройств, заданных в виде системы блоков), настолько органично интегрировались с системой MATLAB, что стали ее составными частями. Notebook позволяет готовить документы в текстовом процессоре Word 95/97/2000/ХР со вставками в виде документов MATLAB и результатов вычислений, представленных в численном, табличном или графическом виде. Таким образом, становится возможной подготовка «живых» электронных книг, в которых демонстрируемые примеры могут быть оперативно изменены. Так, вы можете менять условия задач и тут же наблюдать изменение результатов их решения. В версии MATLAB 6 предусмотрены также улучшенные средства для экспорта графики в слайды презентационной программы Microsoft PowerPoint. Новые свойства системе MATLAB придала ее интеграция с программной системой Simulink, созданной для моделирования динамических систем и устройств, заданных в виде системы блоков. Базируясь на принципах визуально-ориентированного программирования, Simulink позволяет выполнять моделирование сложных устройств с высокой степенью достоверности и с прекрасными средствами представления результатов.
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
10
Поставляемый с системой MATLAB 6.0 пакет расширения Simulink 5 поступает к пользователям с более 100 встроенными блоками, в состав которых входят наиболее необходимые функции моделирования различных физических систем. Блоки сгруппированы в библиотеки в соответствии с их назначением: источники сигнала, приемники, дискретные, непрерывные, нелинейные, математика, функции и таблицы, сигналы и системы. В дополнение к обширному набору встроенных блоков Simulink имеет расширяемую библиотеку блоков благодаря функции создания пользовательских блоков и библиотек. Вы можете настраивать не только функциональность встроенных и пользовательских блоков, но также пользовательский интерфейс, используя значки и диалоги. Например, вы можете создать блоки для моделирования поведения специальных механических, электрических и программных компонентов, как, например, моторы, преобразователи, сервоклапаны, источники питания, энергетические установки, фильтры, шины, модемы. Однажды созданные пользовательские блоки могут быть сохранены в библиотеке блоков для использования в будущем. Любые пользовательские блоки или библиотеки блоков могут быть легально распространены в рабочих группах, переданы поставщикам и заказчикам, как с исходным кодом, так и без него. Многие блоки поддерживают не только скалярные, но и матричные сигналы. Новейшая версия системы MATLAB 6 характеризуется целым рядом новых и важных возможностей: доведенное до более чем 600 число встроенных функций и команд; новый интерфейс с набором инструментов для управления средой, включающий в себя окно команд (Command Window), окно истории команд (Command History), браузер рабочей области (Workspace Browser) и редактор массивов (Array Editor); новые инструменты, позволяющие при помощи мыши интерактивно редактировать и форматировать графики, оптимизировать их коды и затраты памяти на графические команды и атрибуты; улучшенные алгоритмы на основе оптимизированной библиотеки LAPACK; новая библиотека FFTW (быстрых преобразований Фурье) Массачусетского технологического института Кембриджского университета (США); ускоренные методы интегральных преобразований; новые, более мощные и точные, алгоритмы интегрирования дифференциальных уравнений и квадратур;
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
11
новые современные функции визуализации: вывод на экран двумерных изображений, поверхностей и объемных фигур в виде прозрачных объектов; новая инструментальная панель Camera для управления перспективой и ускорение вывода графики с помощью OpenGL; новый интерфейс для вызова Java-процедур и использования Javaобъектов непосредственно из MATLAB; новые, современные инструменты проектирования графического пользовательского интерфейса; обработка (регрессия, интерполяция, аппроксимация и вычисление основных статистических параметров) графических данных прямо из окна графики; новое приложение MATLAB для системы разработки Visual Studio, позволяющее автоматически, непосредственно из Microsoft Visual Studio, преобразовывать Си и Си++ коды в выполняемые MATLAB файлы (МЕХ-файлы); интеграция с системами контроля версий кода, такими как Visual Source Safe; новый интерфейс (последовательный порт) для обмена данными с внешним оборудованием из MATLAB; новый пакет управления измерительными приборами (Instrument Control ToolBox) существенно обновленные пакеты расширения, в частности новые версии пакета моделирования динамических систем Simulink 5 и Real Time Workshop 4; интеграция с системами управления потребностями, например DOORS. Какой бы мощной ни была та или иная математическая система, она не способна включить в себя все средства, которые могут потребоваться сотням тысяч пользователей. Поэтому важно, чтобы система была достаточно гибкой и способной адаптироваться к различным задачам пользователей самых разных категорий - начинающих и опытных математиков, инженеров и научных работников, аспирантов и студентов вузов и даже школьников. MATLAB - расширяемая система, и ее легко приспособить к решению нужных вам классов задач. Ее огромное достоинство заключается в том, что это расширение достигается естественным путем и реализуется в виде так называемых М-файлов. Иными словами, расширения системы хранятся на жестком диске компьютера и в нужный момент вызываются для использования точно так же, как встроенные в MATLAB (внутренние) функции и процедуры.
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
12
Благодаря текстовому формату М-файлов пользователь может ввести в систему любую новую команду, оператор или функцию и затем пользоваться ими столь же просто, как и встроенными операторами или функциями. При этом в отличие от таких языков программирования, как Бейсик, Си или Паскаль не требуется никакого объявления этих новых функций. Это роднит MATLAB с языками Лого и Форт, имеющими словарную организацию операторов и функций и возможности пополнения словаря новыми определениями-словами. Но, поскольку новые определения в системе MATLAB хранятся в виде файлов на диске, это делает набор операторов и функций практически неограниченным. В базовый набор слов системы входят спецзнаки, знаки арифметических и логических операций, арифметические, алгебраические, тригонометрические и некоторые специальные функции, функции быстрого преобразования Фурье и фильтрации, векторные и матричные функции, средства для работы с комплексными числами, операторы построения графиков в декартовой и полярной системах координат, трехмерных поверхностей и т. д. Словом, MATLAB предоставляет пользователю обширный набор готовых средств (большая часть из них - это внешние расширения в виде m-файлов). Многие математические системы создавались исходя из предположения, что пользователь будет решать свои задачи, практически не занимаясь программированием. Однако с самого начала было ясно, что подобный путь имеет недостатки и, вообще говоря, порочен. Ведь многие задачи нуждаются в развитых средствах программирования, которые упрощают запись алгоритмов задач и порой открывают новые методы создания алгоритмов. С одной стороны, MATLAB содержит огромное число операторов и функций, которые решают множество практических задач, для чего ранее приходилось готовить достаточно сложные программы. К примеру, это функции обращения или транспонирования матриц, вычисления значений производной или интеграла и т. д. Число таких функций с учетом пакетов расширения системы уже достигает многих тысяч и непрерывно увеличивается. Но, с другой стороны, система MATLAB с момента своего создания создавалась как мощный математико-ориентированный язык программирования высокого уровня. И многие рассматривали это как важное достоинство системы, свидетельствующее о возможности ее применения для решения новых, наиболее сложных математических задач. Система MATLAB имеет входной язык, напоминающий Бейсик (с примесью Фортрана и Паскаля). Запись программ в системе традиционна и потому привычна для большинства пользователей компьютеров. К тому же система дает возможность редактировать программы с помощью любого
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
13
привычного для пользователя текстового редактора. Имеет она и собственный редактор с отладчиком. Язык системы MATLAB в части программирования математических вычислений намного богаче любого универсального языка программирования высокого уровня. Он реализует почти все известные средства программирования, в том числе объектно-ориентированное и (средствами Simulink) визуальное программирование. Это дает опытным программистам необъятные возможности для самовыражения. В последнее время создатели математических систем уделяют огромное внимание визуализации решения различных задач. Большую роль в этом играет графическое представление результатов, причем как конечных, так и промежуточных. Визуализация постановки задачи в MATLAB решается применением приложения Notebook и назначением именам функций достаточно ясных имен (идентификаторов). А визуализация результатов вычислений достигается применением обширных средств графики, в том числе анимационной, а также использованием (там, где это нужно) средств символьной математики. Новая версия MATLAB позволяет создавать полноценные объекты графики высокого разрешения, как геометрического, так и цветового. Возможности этой графики поддерживаются объектно-ориентированным программированием, средства которого также имеются в языке программирования системы MATLAB. Реализуются, причем с повышенной скоростью, построения графиков практически всех известных в науке и технике типов. Широко практикуется функциональная закраска сложных поверхностей, в том числе с интерполяцией по цвету. Возможен учет всевозможных световых эффектов — вплоть до бликов на поверхности сложных фигур при освещении их различными источниками света и с учетом свойств материалов отражающих поверхностей. Графики выводятся отдельно от текстов в отдельных окнах. На одном графике можно представить множество кривых, отличающихся цветом (при цветном дисплее) и отличительными символами (кружками, крестиками, прямоугольниками и т. д.). Графики можно выводить в одно или в несколько окон. Наконец, в статьях и книгах формата Notebook, реализованных при совместной работе системы MATLAB с популярным текстовым процессором Microsoft Word 95/97/2000/ХР, графики могут располагаться вместе с текстом, формулами и результатами вычислений (числами, векторами и матрицами, таблицами и т. д.). В этом случае степень визуализации оказывается особенно высокой, поскольку документы класса Notebook по существу являются превосходно оформленными электронными книгами с действующими (вычисляемыми) примерами.
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
14
Уже в ранних версиях была введена эффектная возможность быстрого вращения графиков в любом направлении. В MATLAB 6 она улучшена — теперь вращать в пространстве можно даже плоскость с двумерными графиками. 1.1 Установка системы MATLAB Версия системы MATLAB 6 - весьма громоздкий программный комплекс, который (при полной установке) требует до 1000 - 1500 Мбайт дисковой памяти (в зависимости от конкретной поставки, полноты справочной системы и числа устанавливаемых пакетов прикладных программ). Поэтому он поставляются исключительно на компакт-дисках. Полный комплект системы размещается на двух компакт-дисках только для чтения (CDROM), на одном из которых размещены PDF-файлы документации. Для успешной установки MATLAB необходимы следующие минимальные средства: компьютер с микропроцессором Pentium II, Pentium III, Pentium IV или AMD Athlon; устройство считывания компакт дисков (привод CD-ROM) (для установки), мышь, 8-разрядный графический адаптер и монитор, поддерживающие не менее 256 цветов; операционная система Windows 95/98 (оригинальная или второе издание)/Me (Millennium Edition)/2000/ХР (допускается также NT4 с сервис-пакетами 5 или 6а); ОЗУ емкостью 64 Мбайт для минимального варианта системы (рекомендуется иметь память не менее 128 Мбайт); до 1500 Мбайт дискового пространства при полной установке всех расширений и всех справочных систем. Для использования расширенных возможностей системы нужны графический ускоритель, Windows-совместимые звуковая карта и принтер, текстовый процессор Microsoft Word 95/97/2000/ХР для реализации Notebook, компиляторы языков Си/Си++ и/или ФОРТРАН для подготовки собственных файлов расширения и браузер Netscape Navigator 4.0 и выше или Microsoft Internet Explorer 4.0 и выше. Для просмотра файлов справочной системы в формате PDF нужна программа Adobe Reader или Adobe Acrobat 3.0 и выше. Мы рассматриваем систему, ориентированную на IBM PC (Intel80X86/ Pentium) - совместимые компьютеры под управлением Microsoft Windows как наиболее распространенные. Установка системы обычно не имеет никаких специфических особенностей и подобна установке других программных продуктов. От вас требуется задать свое имя (фамилию), сокращенное название организации и пароль, который указывается на установочном компакт-диске или в
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
15
имеющемся на нем файле. Возможны типичная установка и выборочная, в ходе которой вам предлагается выбор компонентов системы. Последняя предпочтительнее, так как из-за огромного объема системы ее полная установка не всегда возможна. Прежде чем начинать установку системы, рекомендуется ознакомиться с описанием компонентов. Нет никакого смысла использовать все компоненты, поскольку вы всегда сможете по мере необходимости изменить набор установленных компонентов системы. Установив только нужные компоненты, вы можете уменьшить затраты памяти на жестком диске в несколько раз. Запуск MATLAB без перезагрузки компьютера не рекомендуется, поскольку может протекать некорректно. Так что если вы отложили перезагрузку компьютера, не забудьте провести ее перед первым запуском системы MATLAB. 1.2 Запуск MATLAB и работа в режиме диалога В этой книге предполагается, что MATLAB используется в среде операционной системы Windows 95 или Windows 98/Me/2000/ХР. Копии сеансов работы MATLAB даны именно для этих случаев.
Рисунок 1.1 - Подготовка к запуску MATLAB Рисунок 1.1 иллюстрирует подготовку к запуску системы MATLAB из главного меню операционной системы Windows 98 со стандартным видом рабочего стола. Для раскрытия главного меню активизируется кнопка Пуск (Start), расположенная внизу рабочего стола слева, или можно щелкнуть на значке с логотипом системы на рабочем столе Windows. После запуска MATLAB на экране появляется основное окно системы, показанное на рисунке 1.2. Обычно это окно раскрыто не полностью и занимает часть рабочего стола. Вы можете раскрыть окно полностью,
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
16
щелкнув на средней из трех кнопок, расположенных в конце титульной (верхней) строки окна. Левая кнопка сворачивает окно в кнопку с именем приложения, помещаемую в панель задач Windows, а правая закрывает окно и прекращает работу с MATLAB. Система готова к проведению вычислений в командном режиме.
Рисунок 1.2 - Окно системы MATLAB после запуска и выполнения простых вычислений Для уточнения версии системы следует вывести окно с информацией о системе (команда About MATLAB (О MATLAB) в меню Help (Помощь). Это окно представлено на рисунке 1.3 в центре. Из него видно, что запущена версия 6.5 (R13) от 18 июня 2002 г. Поскольку номер лицензии имеет конфиденциальный характер, вместо него на рисунке показан 0. Сеанс работы с MATLAB принято именовать сессией (session). Сессия, в сущности, является текущим документом, отражающим работу пользователя с системой MATLAB. В ней имеются строки ввода, вывода и сообщений об ошибках. Входящие в сессию определения переменных и функций, расположенные в рабочей области памяти, но не саму сессию, можно записать на диск (файлы формата .mat), используя команду save (Сохранить). Команда load (Загрузить) позволяет считать с диска данные
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
17
рабочей области. Фрагменты сессии можно оформить в виде дневника с помощью команды diary (Дневник).
Рисунок 1.3 - Окно с логотипом системы MATLAB 6.5 1.2.1 Операции строчного редактирования При работе с MATLAB в командном режиме действует простейший строчный редактор. Его команды перечислены в таблице 1. Таблица 1 - Команды строчного редактора MATLAB Комбинация клавиш Ctrl+b Ctrl+f Ctrl +r Ctrl +1 Home или Ctrl+a End или Ctrl +e Ctrl+рu Ctrl+n Del или Ctrl+d Ctrl+h Ctrl+k
Назначение Перемещение курсора вправо на один символ Перемещение курсора влево на один символ Перемещение курсора вправо на одно слово Перемещение курсора влево на одно слово Перемещение курсора в начало строки Перемещение курсора в конец строки Перелистывание предыдущих команд вверх или вниз для подстановки в строку ввода Стирание символа справа от курсора Стирание символа слева от курсора Стирание до конца строки
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
18
Продолжение таблицы 1 Esc Ins PgUp PgDn
Очистка строки ввода Включение/выключение режима вставки Перелистывание страниц сессии вверх Перелистывание страниц сессии вниз
Эти возможности кажутся примитивными, но позволяют пользователю быстро работать в стиле первых версий MATLAB для MS-DOS. Они обеспечивают важное свойство новых версий систем — их совместимость со старыми версиями в части преемственности навыков работы. Позже вы увидите, что в новых версиях есть вполне современный редактор со средствами отладки создаваемых документов - М-файлов. Обратите особое внимание на применение клавиш вверх и вниз. Они используются для подстановки после маркера строки ввода » ранее введенных строк, например для их исправления, дублирования или дополнения. При этом указанные клавиши обеспечивают перелистывание ранее введенных строк снизу вверх или сверху вниз. Такая возможность существует благодаря организации специального стека, хранящего строки с исполненными ранее командами 1.2.2 Команды управления окном Полезно сразу усвоить некоторые команды управления окном командного режима: clс - очищает экран и размещает курсор в левом верхнем углу пустого экрана. home - возвращает курсор в левый верхний угол окна. echo on - включает режим вывода на экран текста Script-файла (файла-сценария). echo off - выключает режим вывода на экран текста Script-файла. echo - меняет режим вывода на противоположный. echo on all - включает режим вывода на экран текста всех mфайлов. echo off all - отключает режим вывода на экран текста всех mфайлов. mоrе on - включает режим постраничного вывода (полезен при просмотре больших m-файлов). mоrе off - отключает режим постраничного вывода (в этом случае для просмотра больших фалов надо пользоваться линейкой прокрутки). В версии MATLAB 6.0 обе команды clc и home действуют аналогично - очищают экран и помещают курсор в левый верхний угол окна командного режима работы. Команды echo позволяют включать или выключать отображение текстов М-файлов при каждом обращении к ним. Как
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
19
правило, отображение текста файлов сильно загромождает экран и часто не является необходимым. При больших размерах файлов начало их текста (листинга) убегает далеко за пределы области просмотра (текущего окна командного режима). Поэтому для просмотра длинных листингов файлов полезно включить постраничный вывод командой more on. Различие между М-файлами сценариев и функций мы обсудим позже. 1.3 MATLAB в роли суперкалькулятора Система MATLAB создана таким образом, что любые (подчас весьма сложные) вычисления можно выполнять в режиме прямых вычислений, то есть без подготовки программы. Это превращает MATLAB в необычайно мощный калькулятор, который способен производить не только обычные для калькуляторов вычисления (например, выполнять арифметические операции и вычислять элементарные функции), но и операции с векторами и матрицами, комплексными числами, рядами и полиномами. Можно почти мгновенно задать и вывести графики различных функций, от простой синусоиды до сложной трехмерной фигуры. Работа с системой в режиме прямых вычислений носит диалоговый характер пользователь набирает на клавиатуре вычисляемое выражение, редактирует его (если нужно) в командной строке и завершает ввод нажатием клавиши ENTER. В арифметических выражениях языка MATLAB применяются следующие знаки арифметических операций: + сложение; - вычитание; * умножение; / деление слева направо; \ деление справа налево; ^ возведение в степень. Следует отметить, что большинство операторов относится к матричным операциям, что может служить причиной серьезных недоразумений. Например, операторы умножения * и деления / вычисляют произведение и частное от деления двух многомерных массивов, векторов или матриц. Есть ряд специальных операторов, например, оператор \ означает деление справа налево, а операторы .* и ./ означают соответственно поэлементное умножение и поэлементное деление массивов. В дальнейших примерах, рекомендуется внимательно следить, какой из видов деления применяется в конкретном случае. Использование MATLAB в режиме калькулятора может происходить путем простой записи в командную строку последовательности. Вообще вывод промежуточной информации в командное окно подчиняется таким правилам:
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
20
для указания ввода исходных данных используется символ »; данные вводятся с помощью простейшего строчного редактора; если запись оператора не заканчивается символом ";" – точка с запятой, результат действия этого оператора сразу же выводится в командное окно; если оператор заканчивается символом ";" – точка с запятой, то результат его действия не отображается в командном окне; если оператор не содержит знака присваивания (=), т.е. является просто записью некоторой последовательности действий над числами и переменными, то значение результата присваивается специальной системной переменной ans; полученное значение можно использовать в последующих операторах вычислений под именем ans; при этом следует помнить, что значение системной переменной ans изменяется после действия очередного оператора без знака присваивания; результат вычислений выводится в строках вывода (без знака »); встроенные функции (например, sin) записываются строчными буквами, и их аргументы указываются в круглых скобках; диалог происходит в стиле «задал вопрос — получил ответ». в общем случае форма вывода результата в командное окно имеет вид: = Особенностью MATLAB как калькулятора является возможность использования имен переменных для записи промежуточных результатов в память ПК. Для этого применяется операция присваивания, которая вводится знаком равенства (=) в соответствии со схемой: = . Имя переменной может содержать до 19 символов и не должно совпадать с именами функций и процедур системы и системных переменных. При этом система различает в переменных большие и малые буквы. Так, имена amenu, Amenu, aMenu в MATLAB обозначают разные переменные. Выражение справа от знака присваивания может быть просто числом, арифметическим выражением, строкой символов (тогда эти символы нужно заключить в апострофы) либо символьным выражением. Если выражение не заканчивается символом ",", то после нажатия клавиши [Enter] в командном окне появится результат выполнения в виде: = . Простейший пример: 2+3=5 приведен ниже: Следующий пример (он показан на рисунке 1.5) иллюстрирует применение системы MATLAB для выполнения простых векторных операций. В этом примере задается четырехэлементный вектор V со значениями эле-
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
21
ментов 1, 2, 3 и 4. Далее (сосредоточьте на этом внимание!) вычисляются функции синуса и экспоненты с аргументом в виде вектора, а не скаляра. Две записи для вектора - V=[l 2 3 4] и V=[1,2,3.4] - являются идентичными. Таким образом, векторы задаются списком своих элементов, разделяемых пробелами или запятыми. Список заключается в квадратные скобки. Для выделения п-го элемента вектора V используется выражение V(n). Оно задает соответствующую индексированную переменную.
Рисунок 1.4 – Использование программы в роли калькулятора
Рисунок 1.5 – Вычисления в режиме калькулятора В большинстве математических систем вычисление sin(V) и exp(V), где V - вектор, сопровождалось бы выдачей ошибки, поскольку функции
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
22
sin и ехр должны иметь аргумент в виде скалярной величины. Однако MATLAB - матричная система, а вектор является разновидностью матрицы с размером 1х n. Поэтому в нашем случае результат вычислений будет вектором того же размера, что и аргумент V, но элементы возвращаемого вектора будут синусами или экспонентами от элементов вектора V. Как видно из приведенных примеров, ввод исходных выражений для вычислений в системе MATLAB осуществляется в самом обычном текстовом формате. В этом же формате выдаются результаты вычислений, за исключением графических. Приведем пример записи вычислений, показанных на рисунках 1.5 и 1.4: То get started, select "MATLAB Help" from the Help menu. » 2+3 ans= 5 » V=[1 2 3 4]; S=sin(V) E=exp(V) S3=S(3) S = Columns 1 through 2 0.84147 0.9093 Columns 3 through 4 0.14112 -0.7568 E = Columns 1 through 2 2.7183 7.3891 Columns 3 through 4 20.086 54.598 S3 = 0.14112
Примечание Обратите внимание на форму ответов при выполнении простых операций без указания переменной, которой присваивается результат. В таких случаях MATLAB сам назначает переменную ans, которой присваивается результат, и значение которой затем выводится на экран. В дальнейшем, мы будем показывать представление сессий в виде прямых копий экрана только в том случае, когда это связано со спецификой проведения вычислений, например, когда они сопровождаются выводом графиков или демонстрацией элементов пользовательского интерфейса. В остальных случаях будет использоваться представление сессии прямо в тексте книги в представленном выше текстовом формате - основном для командного режима работы с системой MATLAB. Ради компактности записи пустые строки будут опускаться.
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
23
В памяти компьютера переменные занимают определенное место, называемое рабочей областью (Workspace). Для очистки рабочей области используется функция clear в разных формах, например: clear - уничтожение определений всех переменных; clear x - уничтожение определения переменной х; clear a, b, с - уничтожение определений нескольких переменных. Уничтоженная (стертая в рабочей области) переменная становится неопределенной. Использовать неопределенные переменные нельзя, и такие попытки будут сопровождаться выдачей сообщений об ошибке. Очень часто необходимо произвести формирование упорядоченных числовых последовательностей. Такие последовательности нужны для создания векторов или значений абсциссы при построении графиков. Для этого в MATLAB используется оператор : (двоеточие): Начальное значение: Шаг: Конечное значение Данная конструкция порождает возрастающую последовательность чисел, которая начинается с начального значения, идет с заданным шагом и завершается конечным значением. Если Шаг не задан, то он принимает значение 1. Если конечное значение указано меньшим, чем начальное значение, то выдается сообщение об ошибке. Примеры применения данного оператора приведены ниже: » 1:5 ans = 12345 » i=0:2:10 i = 0 2 4 6 8 10 » j=10:-2:2 j = 10 8 6 4 2 » V=0:pi/2:2*pi; V= 0 1.5708 3.1416 4.7124 6.2832 » X= l:-.2:0 X= 1.0000 0.8000 0.6000 0.4000 0.2000 0
В некоторых случаях вводимое математическое выражение может оказаться настолько длинным, что для него не хватит одной строки. В этом случае часть выражения можно перенести на новую строку с помощью знака многоточия «...» (3 или более точек), например: s = 1-1/2 + 1/3- 1/4 + 1/5 - 1/6 + 1/7 ... 1/8 + 1/9 - 1/10 + 1/11 - 1/12. Этот прием может быть весьма полезным для создания наглядных документов, у которых предотвращается заход строк в невидимую область окна. Вообще говоря, максимальное число символов в одной строке ко-
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
24
мандного режима - 4096, а в М-файле - не ограничено, но со столь длинными строками работать неудобно. В системе MATLAB имеется несколько имен переменных, которые используются системой и входят в состав зарезервированных. Эти переменные можно использовать в математических выражениях: i, j - мнимая единица (корень квадратный из -1); pi - число л (сохраняется в виде 3,141592653589793); inf - обозначение машинной бесконечности; NaN - обозначение неопределенного результата (например, типа 0/0 или inf/inf); ans - результат последней операции без знака присваивания. Кроме чисел, в системе MATLAB используются символьные константы, цепочки символов, заключенных в апострофы, например: 'Hello my friend!', 'Привет', '2+3'. Если в апострофы помещено математическое выражение, то оно не вычисляется и рассматривается просто как цепочка символов. Так что ' 2+3' не будет возвращать число 5. Однако с помощью специальных функций преобразования символьные выражения могут быть преобразованы в вычисляемые. Поскольку MATLAB используется для достаточно сложных вычислений, важное значение, имеет наглядность их описания. Она достигается, в частности, с помощью текстовых комментариев. Текстовые комментарии вводятся с помощью символа %, например, так: % Это факториал функции
Примечание В каждой большой программе есть свои «ложки дегтя». В MATLAB 6 такой «ложкой дегтя» является перевод строки при вводе буквы «с» русского алфавита в командной строке. В итоге ввод комментариев в командной строке на русском языке превращается в проблему. Пока автор может порекомендовать заменять русское «с» на английское, что на виде текстового комментария никак не сказывается. Не рекомендуется вводить русскоязычные комментарии и в тесты М-файлов при подготовке их в редакторе/отладчике (он будет описан позже). Это нередко делает программы неработоспособными. Жаловаться тут бесполезно - MATLAB англоязычный продукт и официальной локализованной под Россию версии этой системы пока нет. 1.3.1 Ввод действительных чисел Ввод чисел с клавиатуры производится по общим правилам, принятым для языков программирования высокого уровня: для отделения дробной части мантиссы числа применяется десятичная точка (вместо запятой при обычной записи),
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
25
десятичный показатель числа записывается в виде целого числа после предварительной записи символа е; между записью мантиссы числа и символом е (который отделяет ее от показателя) не должно быть никаких символов, включая и символ пробела. Если, например, ввести в командном окне MATLAB строку » 1.20357651e-17
то после нажатия клавиши [Enter] в этом окне появится следующая запись » 1.20357651e-17 ans = 1.2036e-017
Как видно, число, которое выведено на экран, не совпадает с введенным. Это обусловлено только тем, что установленный по умолчанию формат представления чисел (Short) не позволяет вывести больше 6 значащих цифр числа. На самом деле введенное число внутри MATLAB сохраняется со всеми введенными цифрами. Например, если выбрать формат Long е, то, повторяя те же действия, получим результат, где все цифры отображены верно. Выбирая нужный вид представления чисел с помощью мыши, можно обеспечить в дальнейшем вывод чисел в командное окно именно в такой форме. Следует помнить, что: введенные числа и результаты всех вычислений в системе MATLAB сохраняются в памяти ПК с относительной погрешностью около 2.е-16 (т.е. с точными значениями в 15 десятичных разрядах); диапазон представления модуля действительных чисел лежит в промежутке между 10~308 и 10+308. Следует отметить, что результат выводится в виде (формате), который определяется предварительно установленным форматом представления чисел Этот формат может быть установлен с помощью команды Preferences из меню File (рисунок 1.4) После ее вызова появится одноименное диалоговое окно (рисунок 1.6). Одна из областей этого окна имеет название Numeric Format. Она предназначена для установки и изменения формата представления чисел, которые выводятся в командное окно в процессе расчетов. Вы, можете выбрать такие форматы: Short (default) - краткая запись - 5 знаков (по умолчанию); Long - длинная запись - 15 знаков; Hex - запись в виде шестнадцатиричного числа;
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
26
Bank - запись до сотых долей; Plus - записывается только знак числа; Short е - краткая запись в формате с плавающей запятой - 5 знаков мантиссы и 3 знака порядка; Long е - длинная запись в формате с плавающей запятой - 15 знаков мантиссы и 3 знака порядка; Short g - вторая форма краткой записи в формате с плавающей запятой; Long g - вторая форма длинной записи в формате с плавающей запятой; Rational - запись в виде рациональной дроби.
Рисунок 1.6 – Выбор форматов представления чисел в командном окне 1.3.2 Ввод и действия с комплексными числами Язык системы MATLAB, в отличие от многих языков программирования высокого уровня, содержит очень простую в пользовании встроенную арифметику комплексных чисел Большинство элементарных математических функций построено таким образом, что аргументы предполагаются комплексными числами, а результаты также формируются как комплексные числа. Эта особенность языка, делает его очень полезным для инженеров и научных работников.
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
27
Для обозначения мнимой единицы в MATLAB зарезервировано два имени - i и j. Ввод с клавиатуры значения комплексного числа производится путем записи в командном окне строки вида: = + i*, где ДЧ - действительная часть комплексной величины; МЧ - мнимая ее часть. Пример ввода комплексного числа: I=34.63-j*13.965 I = 34.63 -
13.965i
Простейшие действия с комплексными числами - сложение, вычитание, умножение, деление и возведение в степень - осуществляются с помощью обычных арифметических знаков +, -, *, /, \ и ^ соответственно. Далее, в разделе расчетов цепей переменного тока мы покажем, как это выглядит на примерах. Практически все элементарные математические функции, перечень которых приведен далее, вычисляются при комплексном значении аргумента и получают в результате этого комплексные значения результата. Благодаря этому, например, функция sqrt (корень квадратный), в отличие от других языков программирования, вычисляет квадратный корень из отрицательного аргумента, а функция abs (абсолютное значение) при комплексном значении аргумента вычисляет модуль комплексного числа. » x=sqrt(5-j*4) x = 2.3878 » y=abs(x) y = 2.5304
0.83759i
В MATLAB есть несколько дополнительных функций, рассчитанных только на комплексный аргумент: real(Z) - выделяет действительную часть комплексного аргумента Z; imag(Z) - выделяет мнимую часть комплексного аргумента; angle(Z) - вычисляет значение аргумента комплексного числа Z (в радианах от -π до +π); conj(Z) - выдает число, комплексно сопряженное относительно Z. Кроме того, в MATLAB есть специальная функция cplxpair(V), которая осуществляет сортировку заданного вектора V с комплексными элементами таким образом, что комплексно-сопряженные пары этих элементов располагаются в выходном векторе в порядке возрастания их действительных частей, при этом элемент с отрицательной мнимой частью всегда располагается первым. Действительные элементы завершают комплексносопряженные пары.
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
28
Приспособленность большинства функций MATLAB к оперированию с комплексными числами позволяет значительно проще строить вычисления с действительными числами, результат которых является комплексным (например, находить комплексные корни квадратных уравнений). 1.3.3 Элементарные математические функции Функции — это имеющие уникальные имена объекты, выполняющие определенные преобразования своих аргументов и при этом возвращающие результаты этих преобразований. Возврат результата - отличительная черта функций. При этом результат вычисления функции с одним выходным параметром подставляется на место ее вызова, что позволяет использовать функции в математических выражениях, например функцию sin в 2*sin(pi/2). Функции в общем случае имеют список аргументов (параметров), заключенный в круглые скобки. Общая форма вызова функции в MATLAB имеет следующий вид: = () В языке MATLAB предусмотрены элементарные арифметические функции, приведеные в таблицах 2, 3 и 4. Таблица 2 - Тригонометрические и гиперболические функции sin(Z) sinh(Z) asin(Z) asinh(Z) cos(Z) cosh(Z) acos(Z) acosh(Z) tan(Z) tanh(Z) atan(Z) atan2(X,Y)
синус числа Z гиперболический синус арксинус (в радианах, в диапазоне от -к/2 до +тс/2) обратный гиперболический синус Косинус гиперболический косинус арккосинус (в диапазоне от 0 до тс) обратный гиперболический косинус Тангенс гиперболический тангенс арктангенс (в диапазоне от -π/2 до +π/2) четырехквадрантный арктангенс (угол в диапазоне от -π до +π между горизонтальным правым лучом и лучом, проходящим через точку с координатами X и Y)
atanh(Z) sec(Z) sech(Z) asec(Z) asech(Z) csc(Z) csch(Z) acsc(Z) acsch(Z)
обратный гиперболический тангенс Секанс гиперболический секанс Арксеканс обратный гиперболический секанс Косеканс гиперболический косеканс Арккосеканс обратный гиперболический косеканс
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
29
Прождолжение таблицы 2 cot(Z) coth(Z) acot(Z) acoth(Z)
Котангенс гиперболический котангенс Арккотангенс обратный гиперболический котангенс
Таблица 3 - Экспоненциальные функции exp(Z) Iog(Z) loglO(Z) sqrt(Z) abs(Z)
Экспонента числа Z Натуральный логарифм Десятичный логарифм Квадратный корень из числа Z Модуль числа Z
Таблица 4 - Целочисленные функции fix(Z) floor(Z) ceil(Z) round(Z) rem(X,Y) sign(Z)
Округление до ближайшего целого в сторону нуля Округление до ближайшего целого в сторону отрицательной бесконечности Округление до ближайшего целого в сторону положительной бесконечности Обычное округление числа Z до ближайшего целого Вычисление остатка от деления X на Y Вычисление сигнум-функции числа Z (0 при Z=0, -1 при Z0)
Кроме элементарных функций в языке MATLAB предусмотрен целый ряд специальных математических функций. В данной работе мы не приводим их описание, обычно, при вычислениях в электротехнических задачах их используют весьма редко. Но желающие могут познакомиться с ними в справочной системе MATLAB. 1.4 Визуализация вычислений 1.4.1 Двумерные графики Основной функцией, обеспечивающей построение графиков на экране дисплея, является функция plot. Общая форма обращения к этой процедуре: plot(xl,yl,sl,x2,y2,s2,...). Здесь xl, yl - заданные векторы, элементами которых являются массивы значений аргумента (xl) и функции (yl), соответствующих первой кривой графика, х2, у2 - массивы значений аргумента и функции второй кривой и т.д. При этом предполагается, что значения аргумента откладываются вдоль горизонтальной оси графика, а значения функции - вдоль вертикальной оси. Переменные s1, s2, … являются символьными (их указание не обязательно). Каждая из них может содержать три специальных символа, которые определяют тип линии, соединяющей отдельные точки графика, тип точки графика и цвет линии. Если переменные s не указаны,
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
30
то тип линии по умолчанию - отрезок прямой, тип точки - пиксель, а цвет устанавливается (в версии 6) в таком порядке синий, зеленый, красный, голубой, фиолетовый, желтый, черный и белый, - в зависимости от того, какая по очереди линия отображается на графике. Например, обращение вида plot(xl,yl,x2,y2,...) приведет к построению графика, в котором первая кривая будет линией из отрезков прямых синего цвета, вторая кривая - такого же типа зеленой линией и т.д. Графики в MATLAB всегда выводятся в отдельном (графическом) окне, которое называют фигурой. Пусть требуется вывести график функции у = 3sin(x+π/3) на промежутке от -Зπ: до +3π с шагом π/100. Сначала надо сформировать массив значений аргумента х. х = -3*pi:pi/100:3*pi
Затем вычислить массив соответствующих значений функции. У = 3*sin(x+pi/3)
И, наконец, построить график зависимости у(х). В целом, в командном окне эта последовательность операций будет выглядеть так х = -3*pi:pi/100:3*pi; У = 3*sin(x+pi/3), plot(х,у)
В результате на экране появится дополнительное окно с графиком (рисунок 1.7).
Рисунок 1.7 – График функции у = 3sin(x+π/3)
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
31
График на рисунке 1.7 имеет несколько недостатков на них не нанесена сетка из координатных линий; нет общей информации о кривых графика (заголовка); неизвестно, какие величины отложены по осям графика. Первый недостаток устраняется с помощью функции grid. Если эту функцию записать сразу после обращения к функции plot, то график будет снабжен координатной сеткой, рисунок 1.8
Рисунок 1.8 – График снабженный сеткой и надписями. Программа для вывода графика, снабженного сеткой, будет такова: х = -3*pi:pi/100:3*pi; у = 3*sin(x+pi/3); plot(x,y), grid
Ценной особенностью графиков, построенных в системе MATLAB, является то, что сетка координат всегда отвечает "целым шагам" изменения, что делает графики "читабельными", т.е. по графику можно производить "отсчет" значения функции при любом заданном значении аргумента и наоборот. Таким свойством не обладает большинство графических пакетов-приложений к языкам программирования высокого уровня. Заголовок графика выводится с помощью процедуры title. Если после обращения к процедуре plot вызвать title таким образом: title(''), то сверху в поле фигуры появится текст, записанный между скобками. При этом следует помнить, что текст, всегда должен помещаться в апострофы.
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
32
Аналогично можно вывести пояснения к графику, которые размещаются вдоль горизонтальной оси (функция xlabel) и вдоль вертикальной оси (функция ylabel). Например, совокупность операторов: х = -3*pi:pi/100:3*pi; у = 3*sin(x+pi/3); plot(x,y), grid title ('Функция у = 3*sin(x+pi/3)'); xlabel ('x'); ylabel ('y');
приведет к оформлению поля фигуры в виде, представленном на рисунке 1.8. Очевидно, такая форма уже полностью удовлетворяет требованиям, которые предъявляются к инженерным графикам. Не более сложным является вывод в среде MATLAB графиков функций, заданных параметрически. Пусть необходимо построить график функции у(х), которая задана параметрическими формулами: х=4е-0,05t sin t, у = 0,2e-0,1t sin 2t. Выберем диапазон изменения параметра t от 0 до 50 с шагом 0,1. Тогда, набирая совокупность операторов: t = 0:0.1:50; х = 4*exp(-0.05*t).*sin(t); y = 0.2*exp(-0.1*t).*sin(2*t); plot(x,y); title('Параметрическая функция'); grid
Получим график, показанный на рисунке 1.9. В программе предусмотрена возможность построения всевозможных типов графиков, как двух, так и трехмерных. В примерах решения различных электротехнических задач, мы покажем несколько наиболее часто применяемых их видов. Здесь мы не рассматриваем их все, так как это тема отдельной работы. Тех, кто интересуется данным вопросом, отсылаем к многочисленной литературе, приведенной в библиографии и справочной системе MATLAB. Отметим, только, что среди специальных типов графиков имеются весьма интересные, которые можно с успехом применять для визуализации тех или иных процессов протекающих в электрических цепях и машинах, например, процедура comet(x,y) - ("комета") строит график зависимости у(х) постепенно во времени в виде траектории кометы. При этом изображающая точка на графике имеет вид маленькой кометы (с головкой и хвостиком), которая плавно перемещается от одной точки к другой. Это об-
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
33
стоятельство может быть полезным при построении временных и параметрических зависимостей.
Рисунок 1.9 – График функции заданной параметрически MATLAB имеет несколько функций, позволяющих строить графики в логарифмическом масштабе. Функция logspace с обращением: х = logspace(dl,d2,n),
формирует вектор-строку х, содержащую n равноотдаленных в логарифмическом масштабе друг от друга точек, которые покрывают диапазон от 10dl до 10d2. Функция loglog полностью аналогична функции plot, но графики по обеим осям строятся в логарифмическом масштабе. Для построения графиков, использующих логарифмический масштаб только по одной из координатных осей, пользуются процедурами semilogx и semilogy. Первая процедура строит графики с логарифмическим масштабом вдоль горизонтальной оси, вторая - вдоль вертикальной оси. Обращение к последним трем процедурам полностью аналогично обращению к функции plot. Обычно графики, получаемые с помощью процедур plot, loglog, semilogх и semilogy, автоматически строятся в таких масштабах, чтобы в окне графика поместились все вычисленные точки, включая максимальные и минимальные значения аргумента и функции. Но MATLAB имеет возможности определения и других режимов масштабирования. Это достига-
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
34
ется за счет использования процедуры axis. Команда axis([xmin xmax ymin ymax]) устанавливает жесткие границы поля графика в единицах величин, откладываемых по осям. Команда axis('auto') возвращает масштабы по осям к их штатным значениям (принятым по умолчанию). Команда axis('ij') перемещает начало отсчета в левый верхний угол реализует отсчет от верхнего левого угла (матричная система координат). Команда axis('xy') возвращает декартову систему координат с началом отсчета в левом нижнем углу. Команда axis('square') устанавливает одинаковый диапазон изменения переменных по осям графика. Команда axis('equal') обеспечивает одинаковый масштаб по обеим осям графика. В одном графическом окне, но на отдельных графических полях можно построить несколько графиков, используя процедуру subplot. Обращение к этой процедуре должно предшествовать обращению к процедурам plot, loglog, semilogx и semilogy и выглядеть так: subplot(m,n,p)
Здесь m указывает, на сколько частей делится графическое окно по вертикали, n - по горизонтали, а р является номером подокна, в котором будет строиться график. Подокна нумеруются слева направо, сверху вниз (так, как читается текст книги). При необходимости, можно установить для надписей на графике тип шрифта и его размер. Это особенно полезно, когда надписи выводятся на русском языке. Например, ввод строки set(gca,'FontName','Arial Unicode MS','FontSize',10)
устанавливает шрифт Arial Unicode MS размером 10 пунктов. Эта строка должна предшествовать командам title, хlabel и ylabel. Существуют и другие способы введения текста в поле графика, но здесь мы их не рассматриваем. Чтобы создать несколько графических окон, в каждом из которых размещаются соответствующие графики, можно воспользоваться командой figure, которая создаст новое графическое окно, оставляя предыдущие. Наконец, для того чтобы несколько последовательно вычисляемых графиков были отображены в одном графическом окне, можно использовать команду: hold on. Тогда каждый следующий график будет строиться в том же предварительно открытом графическом окне, т.е. новая линия будет добавляться к ранее построенным. Команда hold off выключает режим сохранения графического окна, установленный предыдущей командой. Чтобы вывести график из графического окна (фигуры) на печать, следует воспользоваться командами меню, расположенного в верхней части окна фигуры.
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
35
Выберите из меню File команду Print. Подготовьте принтер к печати, нажмите кнопку ОК в диалоговом окне, и принтер распечатает содержимое графического окна на отдельном листе бумаги. Для настройки принтера используйте команду Print Setup из меню File. Иногда из-за ошибок в программе или из-за сложности решаемой задачи MATLAB «зацикливается» и перестает выдавать результаты либо непрерывно выдает их, хотя в этом уже нет необходимости. Для прерывания вычислений в этом случае достаточно нажать одновременно клавиши Ctrl и С (латинское). 1.4.2 Трехмерные графики Трехмерные поверхности обычно описываются функцией двух переменных z(x, у). Специфика построения трехмерных графиков требует не просто задания ряда значений х и у, то есть векторов х и у. Она требует определения для X и Y двумерных массивов - матриц. Для создания таких массивов служит функция meshgrid. В основном она используется совместно с функциями построения графиков трехмерных поверхностей. Функция meshgrid записывается в следующих формах: [X,Y] = meshgrid(x) - аналогична [X,Y] = meshgrid(x,x); [X,Y,Z] = meshgrid(x,y,z) - возвращает трехмерные массивы, используемые для вычисления функций трех переменных и построения трехмерных графиков; [X,Y] = meshgrid(x,y) - преобразует область, заданную векторами х и у, в массивы X и Y, которые могут быть использованы для вычисления функции двух переменных и построения трехмерных графиков. Строки выходного массива X являются копиями вектора х; а столбцы Y - копиями вектора у. Пример: [X,Y] = meshgnd(l:4.13:17) X = 1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
13 14 15 16 17
13 14 15 16 17
13 14 15 16 17
13 14 15 16 17
Y=
Приведем еще один пример применения функции meshgrid:
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
36
[X,Y] = meshgrid(-2:.2:2. -2:.2:2);
Такой вызов функции позволяет задать опорную плоскость для построения трехмерной поверхности с шагом 0.2. Дополнительные примеры применения функции meshgrid будут приведены далее при описании соответствующих команод и в примерах расчета электрических полей. Рекомендуется ознакомиться также с командами surf и slice (ломтик). 1.4.2.1 Графики поля градиентов quiver Для построения графиков полей градиента служат команды quiver: quiver(X,Y,U,V) - строит график поля градиентов в виде стрелок для каждой пары элементов массивов X и Y, причем элементы массивов U и V указывают направление и размер стрелок; quiver(U, V) - строит векторы скорости в равнорасположенных точках на плоскости (х, у); quiver(U,V,S) или quiver(X,Y,U,V,S) - автоматически масштабирует стрелки по сетке и затем вытягивает их по значению S. Используйте S=0, чтобы построить стрелки без автоматического масштабирования; quiver(...,LINESPEC) - использует для векторов указанный тип линии. Указанные в LINESPEC маркеры рисуются у оснований, а не на концах векторов. Для отмены любого вида маркера используйте спецификацию '.'. quiver(.... 'filled') - дает график с закрашенными маркерами; 1.4.2.2 Построение графиков поверхностей Команда plot3(...) является аналогом команды plot (...), но относится к функции двух переменных z(x, у). Она строит аксонометрическое изображение трехмерных поверхностей и представлена следующими формами: plot3(x,y,z) - строит массив точек, представленных векторами х, у и z, соединяя их отрезками прямых. Эта команда имеет ограниченное применение; plot3(X,Y,Z), где X, Y и Z - три матрицы одинакового размера, строит точки с координатами X(i,:), Y(i,:) и Z(i,:) и соединяет их отрезками прямых. Ниже дан пример построения трехмерной поверхности, описываемой функцией Z ( x, y ) x 2 y 2 : [X.Y]=meshgrid([-3:0.15:3]); Z=X.^2+Y.^2;
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
37
plot3(X,Y,Z)
График этой поверхности показан на рисунке 1.10.
Рисунок 1.10 - График поверхности, построенный линиями plot3(X,Y,Z,S) - обеспечивает построения, аналогичные, рассмотренным ранее, но со спецификацией стиля линий и точек, соответствующей спецификации команды plot. Ниже дан пример применения этой команды для построения поверхности кружками: [X,Y]=meshgrid([-3:0.15:3]); Z=X.^2+Y.^2; plot3(X,Y,Z,'o')
plot3(x1,y1.z1,s1.х2,у2.z2,s2,хЗ,уЗ,z3,s3,...) - строит на одном рисунке графики нескольких функций zl(xl ,yl), z2(x2,y2) и т. д. со спецификацией линий и маркеров каждой из них. 1.4.2.3 Сетчатые 3D-графики с окраской Наиболее представительными и наглядными являются сетчатые графики поверхностей с заданной или функциональной окраской. В названии
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
38
их команд присутствует слово mesh. Имеются три группы таких команд. Ниже приведены данные о наиболее полных формах этих команд. mesh(X,Y,Z,C) - выводит в графическое окно сетчатую поверхность Z(X,Y) с цветами узлов поверхности, заданными массивом С; mesh(X.Y.Z) — аналог предшествующей команды при C=Z. В данном случае используется функциональная окраска, при которой цвет задается высотой поверхности. Возможны также формы команды mesh(x,y,Z), mesh(x,y,Z,C), mesh(Z) и mesh(Z,C). Ниже приводится пример применения команды mesh: [X,Y]=meshgrid([-3:0.15:3]); Z=X.^2+Y.^2; mesh(X,Y,Z)
На рисунке 1.11 показан график поверхности, созданной командой mesh(X.Y.Z). Нетрудно заметить, что функциональная окраска линий поверхности заметно усиливает наглядность ее представления.
Рисунок 1.11 -. График поверхности, созданный командой mesh(X,Y,Z) MATLAB имеет несколько графических функций, возвращающих матричный образ поверхностей. Например, функция peaks(N) возвращает матричный образ поверхности с рядом пиков и впадин. Такие функции
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
39
удобно использовать для проверки работы графических команд трехмерной графики. Для упомянутой функции peaks можно привести такой пример: z=peaks(25); mesh(z);
График поверхности, описываемой функцией peaks, представлен на рисунке 1.12.
Рисунок 1.12 - График поверхности, описываемой функцией peaks Рекомендуется ознакомиться с командами и функциями, используемыми совместно с описанными командами: axis, caxis, colormap, hold, shading и view. 1.4.2.4 Сетчатые 3D-графики с проекциями Иногда график поверхности полезно объединить с контурным графиком ее проекции на плоскость, расположенным под поверхностью. Для этого используется команда meshc:
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
40
meshc(...) - аналогична mesh(...), но помимо графика поверхности дает изображение ее проекции в виде линий равного уровня (графика типа contour). Ниже дан пример применения этой команды: [X,Y]=meshgrid([-3:0.15:3]); Z=X.^2+Y.^2; meshc(X,Y,Z)
Построенный график показан на рисунке 1.13. Нетрудно заметить, что график такого типа дает наилучшее представление об особенностях поверхности.
Рисунок 1.13 - График поверхности и ее проекции на расположенную ниже плоскость 1.4.2.5 Построение поверхности с окраской Особенно наглядное представление о поверхностях дают сетчатые графики, использующие функциональную закраску ячеек. Например, цвет окраски поверхности z(x, у) может быть поставлен в соответствие с высотой z поверхности с выбором для малых высот темных тонов, а для больших - светлых. Для построения таких поверхностей используются команды класса surf (...):
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
41
surf(X,Y,Z,С) - строит цветную параметрическую поверхность по данным матриц X, Y и Z с цветом, задаваемым массивом С; surf(X,Y,Z) - аналогична предшествующей команде, где C=Z, так, что цвет задается высотой той или иной ячейки поверхности; surf(x,y,Z) и surf(x,y,Z,C) с двумя векторными аргументами х и у векторы х и у заменяют первых два матричных аргумента и должны иметь длины length(x)=n и length(y)=m, где [m,n]=size(Z); surf(Z) и surf(Z,C) используют х = 1:n и у = 1:m. В этом случае высота Z - однозначно определенная функция, заданная геометрически прямоугольной сеткой. Команды axis, caxis, color-map, hold, shading и view задают координатные оси и свойства поверхности, которые могут использоваться для большей эффектности показа поверхности или фигуры. Ниже приведен простой пример построения поверхности - параболоида: [X,Y]=meshgrid([-3:0.15:3]); Z=X.^2+Y.^2; surf(X,Y,Z)
Соответствующий этому примеру график показан на рисунке 1.14.
Рисунок 1.14 - График параболоида с функциональной окраской ячеек
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
42
Можно заметить, что благодаря функциональной окраске график поверхности гораздо более выразителен, чем при построениях без такой окраски, представленных ранее (причем даже в том случае, когда цветной график печатается в черно-белом виде). В следующем примере используется функциональная окраска оттенками серого цвета с выводом шкалы цветовых оттенков: [X,Y]=meshgrid([-3:0.1:3]); Z=sin(X)./(X.^2+Y.^2+0.3); surf(X,Y,Z) colormap(gray) shading interp colorbar
В этом примере команда colormap(gray) задает окраску тонами серого цвета, а команда shading Interp обеспечивает устранение изображения сетки и задает интерполяцию для оттенков цвета объемной поверхности. На риунке 1.15 показан вид графика, построенного в этом примере.
Рисунок 1.15 - График поверхности с функциональной окраской серым цветом Обычно применение интерполяции для окраски придает поверхностям и фигурам более реалистичный вид, но фигуры каркасного вида дают более точные количественные данные о каждой точке. 1.4.2.6 Построение поверхности и ее проекции Для повышения наглядности представления поверхностей можно использовать дополнительный график линий равного уровня, получаемый
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
43
путем проецирования поверхности на опорную плоскость графика (под поверхностью). Для этого используется команда surfс: surfc(...) - аналогична команде surf, но обеспечивает дополнительное построение контурного графика проекции фигуры на опорную плоскость. Пример применения команды surfс приводится ниже: [X,Y]=meshgrid([-3:0.1:3]); Z=sin(X)./(X.^2+Y.^2+0.3); surfc(X,Y,Z)
На рисунке 1.16 показан график, построенный в данном примере. Графики трехмерных поверхностей весьма наглядны и могут с успехом применятся для изучения многих электротехнических явлений. Особенно они полезны при изучении раздела "Теория электромагнитного поля". Наглядность и выразительность визуализации решения задач по данному разделу во многом могут оказать помощь студентам освоить этот нелегкий материал.
Рисунок 1.16 - График поверхности и ее проекции на опорную плоскость 1.4.2.6 Построение освещенной поверхности Пожалуй, наиболее реалистичный вид имеют графики поверхностей, в которых имитируется освещение от точечного источника света, расположенного в заданном месте координатной системы. Графики имитируют оптические эффекты рассеивания, отражения и зеркального отражения света. Для получения таких графиков используется команда surf1: surfl(...) - аналогична команде surf(...), но строит график поверхности с подсветкой от источника света;
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
44
surfl(Z,S) или surfl(X,Y,Z,S) - строит графики поверхности с подсветкой от источника света, положение которого в системе декартовых координат задается вектором S=[Sx,Sy,Sz], а в системе сферических координат - вектором S=[AZ,EL]; surfl(..., 'light') - позволяет при построении задать цвет подсветки с помощью объекта light; surfl(..., 'cdata') - при построении имитирует эффект отражения; surfl(X,Y,Z,S,K) - задает построение поверхности с параметрами, заданными вектором K=[ka,kd,ks,spread], где ka - коэффициент фоновой подсветки, kd - коэффициент диффузного отражения, ks - коэффициент зеркального отражения и spread - коэффициент глянцевитости; По умолчанию вектор S задает углы азимута и возвышения в 45°. Используя команды cla, hold on, view(AZ,EL), surfl (...) и hold off, можно получить дополнительные возможности управления освещением. Ниже представлен пример применения команды surfl: [X,Y]=meshgrid([-3:0.1:3]); Z=sin(X)./(X.^2+Y.^2+0.3); surfl(X,Y,Z) colormap(gray) shading interp colorbar
Построенная в этом примере поверхность представлена на рисунке 1.17.
Рисунок 1.17 - График поверхности с имитацией ее освещения точечным источником
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
45
Сравните этот рисунок с рисунком 1.15, на котором та же поверхность построена без имитации ее освещения. Примечание Нетрудно заметить определенную логику в названиях графических команд. Имя команды состоит из основного слова и суффикса расширения. Например, все команды построения поверхностей имеют основное слово surf (сокращение от surface - поверхность) и суффиксы: с - для контурных линий поверхности, l - для освещенности и т. д. Это правило облегчает запоминание многочисленных команд графики. 1.4.2.7 Tрехмерные контурные графики Трехмерный контурный график представляет собой расположенные в пространстве линии равного уровня, полученные при расслоении трехмерной фигуры рядом секущих плоскостей, расположенных параллельно опорной плоскости фигуры. При этом в отличие от двумерного контурного графика линии равного уровня отображаются в аксонометрии. Для получения трехмерных контурных графиков используется команда contour3: contour3(...) - имеет синтаксис, аналогичный команде contour(...), но строит линии равного уровня в аксонометрии с использованием функциональной окраски (окраска меняется вдоль оси Z). Полезные частные формы записи этой команды: contour3(Z) - строит контурные линии для поверхности, заданной массивом Z, без учета диапазона изменения х и у; contour3(Z,n) - строит то же, что предыдущая команда, но с использованием n секущих плоскостей (по умолчанию n=10); contour3(X,Y,Z) - строит контурные линии для поверхности, заданной массивом Z, с учетом изменения х и у. Двумерные массивы X и Y создаются с помощью функции meshgrid; contour3(X,Y,Z,n) - строит то же, что предыдущая команда, но с использованием n секущих плоскостей. Пример применения команды contour3: contour3(peaks,20) colormap(gray)
Соответствующий данному примеру график представлен на рисунке 1.18. В данном случае задано построение двадцати линий уровня.
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
46
Рисунок 1.18 - Трехмерный контурный график для функции peaks 1.4.2.8 Установка титульной надписи После того как график уже построен, MATLAB позволяет выполнить его форматирование или оформление в нужном виде. Соответствующие этому средства описаны ниже. Так, для установки над графиком титульной надписи используется следующая команда: title('string') - установка на двумерных и трехмерных графиках титульной надписи, заданной строковой константой 'string'. Пример применения этой команды будет дан в следующем разделе. 1.4.2.9 Установка осевых надписей Для установки надписей возле осей х, у и z используются следующие команды: xlabel('String') ylabel('String') zlabel('String') Соответствующая надпись задается символьной константой или переменной 'String'. Пример установки титульной надписи и надписей по осям графиков приводится ниже: [X,Y]=meshgrid([-3:0.1:3]); Z=sin(X)./(X.^2+Y.^2+0.3); surfl(X,Y,Z) colorbar colormap(gray) shading interp xlabel('Axis X')
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
47
ylabel('Axis Y') zlabel('Axis Z') title('Surface graphic')
Построенный в этом примере график трехмерной поверхности показан на рисунке 1.19.
Рисунок 1.19 - График трехмерной поверхности с титульной надписью и надписями по координатным осям Сравните его с графиком, показанным на рисунке 1.17. Надписи делают рисунок более наглядным. 1.4.2.10 Вывод пояснений Пояснение в виде отрезков линий со справочными надписями, размещаемое внутри графика или около него, называется легендой. Для создания легенды используются различные варианты команды legend, некоторые из которых приведены ниже: legend(stringl,string2. strings,...) - добавляет к текущему графику легенду в виде строк, указанных в списке параметров; legend(М) - размещает легенду, используя данные из строковой матрицы М; legendOFF - устраняет ранее выведенную легенду; legend - перерисовывает текущую легенду, если таковая имеется; legend(....Pos) - помещает легенду в точно определенное место, специфицированное параметром Pos: Pos=0 - лучшее место, выбираемое автоматически;
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
48
Pos=l - верхний правый угол; Pos=2 - верхний левый угол; Pos=3 - нижний левый угол; Pos=4 - нижний правый угол; Pos=-l - справа от графика. Чтобы перенести легенду, установите на нее курсор, нажмите левую кнопку мыши и перетащите легенду в необходимую позицию. Остальные варианты расположения легенды пользователю предлагается изучить самостоятельно. Следует отметить, что применение легенды придает графикам более осмысленный и профессиональный вид. При необходимости легенду можно переместить мышью в подходящее место графика. 1.4.2.11 О форматировании графиков Графики в системе MATLAB строятся обманчиво просто. Связано это с тем, что многие свойства графиков установлены по умолчанию. К таким свойствам относятся вывод или скрытие координатных осей, положение их центра, цвет линии графика, ее толщина и т. д. и т. п. Конечно выше показано, как свойства и вид графиков можно менять в широких пределах с помощью параметров команд графики. Однако этот путь требует хорошего знания деталей языка программирования системы MATLAB. В новой версии MATLAB 6 для изменения свойств графиков (их форматирования) используются принципы визуального контроля за стилем (видом) всех объектов графиков. Это позволяет легко, просто и наглядно придать графикам должный вид перед записью их в виде файлов на диск. Можно сказать, что в этой части реализованы отдельные принципы визуально-ориентированного программирования графических средств. Систематизированное описание интерфейса системы MATLAB 6.0, в том числе интерфейса графических окон, дается в литературе приведенной в конце пособия и справочной системе (на английском языке). 1.5 Управления вычислительным процессом Работа в режиме калькулятора в среде MATLAB, несмотря на довольно значительные возможности, имеет существенные недостатки. Невозможно повторить все предыдущие вычисления и действия при новых значениях исходных данных без повторного набора всех предыдущих операторов. Нельзя вернуться назад и повторить некоторые действия или по некоторому условию перейти к выполнению другой последовательности операторов. И вообще, если число операторов велико, становится проблемой отладить правильную их работу из-за неизбежных ошибок при наборе
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
49
команд. Поэтому сложные, с прерываниями, запутанными переходами по определенным условиям, с часто повторяемыми однотипными действиями вычисления, которые, к тому же, необходимо проводить неоднократно при измененных входных данных, требуют их специального оформления в виде записанных на диске файлов, т.е. в виде программ. Преимущество программ в том, что становится возможным неоднократное обращение к одним и тем же операторам и к программе в целом. Создание программ позволяет значительно упростить и сократить процесс подготовки повторяемых вычислений, сделать процесс вычислений более наглядным и прозрачным, а благодаря этому — резко уменьшить вероятность появления принципиальных ошибок при разработке программ. Кроме того, в программах появляется возможность автоматизировать и процесс изменения значений входных параметров в диалоговом режиме. Для организации вычислительного процесса, который записывается в виде некоторого текста программы, необходимы операторы управления. При этом к операторам управления вычислительным процессом обычно относят операторы безусловного перехода, условных переходов (разветвления вычислительного процесса) и операторы организации циклических процессов. Однако система MATLAB построена таким образом, что эти операторы могут быть использованы и при работе MATLAB в режиме калькулятора. В языке MATLAB отсутствует оператор безусловного перехода, и поэтому нет понятия метки. Это является недостатком языка MATLAB и затрудняет организацию возвращения вычислительного процесса к любому предыдущему или последующему оператору программы. Все операторы цикла и условного перехода построены в MATLAB в виде сложного оператора, который начинается служебным словом if, while, switch или for и заканчивается служебным словом end. Операторы между этими словами воспринимаются системой как части одного сложного оператора. Поэтому нажатие клавиши [Enter] для перехода к следующей строке не приводит в данном случае к выполнению этих операторов. Выполнение операторов начинается только тогда, когда введена "закрывающая скобка" сложного оператора в виде слова end, а затем нажата клавиша [Enter]. Если несколько сложных операторов такого типа вложены один в другой, вычисления начинаются лишь тогда, когда записан конец (end) наиболее охватывающего (внешнего) сложного оператора. Из этого вытекает возможность осуществления даже в режиме калькулятора довольно сложных и объемных (состоящих из многих строк и операторов) вычислений, если они охвачены сложным оператором.
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
50
1.5.1 Оператор условного перехода Конструкция оператора перехода по условию в общем, виде такова: if else end Работает он следующим образом. Вначале проверяется, выполняется ли указанное условие. Если да, то программа выполняет совокупность операторов, которая записана в разделе . В противном случае выполняется последовательность операторов раздела . Укороченная форма условного оператора имеет вид: if end Действие оператора в этом случае аналогично, за исключением того, что при невыполнении заданного условия выполняется оператор, следующий за оператором end. Легко заметить недостатки этого оператора, вытекающие из отсутствия оператора безусловного перехода: вся часть программы, выполняющаяся в зависимости от условия, должна размещаться внутри операторных скобок if и end. В качестве условия используется выражение типа: Операции сравнения в языке MATLAB могут быть такими: < меньше; > больше; = больше или равно; = равно; ~= не равно. Условие может быть составным, т.е. складываться из нескольких простых условий, объединяемых знаками логических операций. Знаками логических операций в языке MATLAB являются: & - логическая операция И (AND); | - логическая операция ИЛИ (OR); ~ - логическая операция НЕТ (NOT). Логическая операция Исключающее ИЛИ может быть реализована при помощи функции хог(А,В), где А и В - некоторые условия. Допустима еще одна конструкция оператора условного перехода. if elseif
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
51
elseif ….. else end Оператор elseif выполняется тогда, когда не выполнено. При этом сначала проверяется . Если оно выполнено, выполняются , если же нет, то игнорируются и происходит переход к следующему оператору elseif, т.е. к проверке . Аналогичным образом при его выполнении обрабатываются , в противном случае происходит переход к следующему оператору elseif. Если ни одно из условий в операторах elseif не выполнено, обрабатываются , следующие за оператором else. Таким образом может быть обеспечено ветвление программы по нескольким направлениям. 1.5.2 Оператор переключения Оператор переключения имеет такую структуру: switch сазе сазе …. otherwise end Он осуществляет ветвление вычислений в зависимости от значений некоторой переменной или выражения, сравнивая значение полученное в результате вычисления выражения в строке switch, со значениями, указанными в строках со словом case. Соответствующая группа операторов case выполняется, если значение выражения совпадает со значением, указанным в соответствующей строке case. Если значение выражения не совпадает ни с одним из значении в группах case, выполняются операторы, следующие за otherwise. 1.5.3 Операторы цикла В языке MATLAB есть две разновидности операторов цикла - условный и арифметический. Оператор цикла с предусловием имеет вид:
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
52
while end Операторы внутри цикла обрабатываются лишь в том случае, если выполнено условие, записанное после слова while. При этом среди операторов внутри цикла обязательно должны быть такие, которые изменяют значения одной из переменных, указанных в условии цикла. Приведем пример вычисления значения синуса при 5 значениях аргумента от 0,2 до 1 с шагом 0,2: i
= 1; while i< =4 x=i/5; si = sin(x); disp([x,si]) i = i+1; end 0.2 0.19867 0.4 0.38942 0.6 0.56464 0.8 0.71736 1 0.84147
Примечание. Обратите внимание на то, какими средствами в приведенном примере обеспечен вывод на экран нескольких переменных в одну строку. Для этого, используется оператор disp. Но, в соответствии с правилами применения этого оператора, в нем должен быть только один аргумент (текст, переменная или матрица). Чтобы обойти это препятствие, нужно несколько числовых переменных объединить в единый объект - векторстроку, а последнее легко выполняется при помощи обычной операции формирования вектора-строки из отдельных элементов. [х1, х2, . . ., хN] Таким образом, с помощью оператора вида: disp([xl, x2, ..., xN]) можно обеспечить вывод результатов вычислений в виде таблицы данных. Арифметический оператор цикла имеет вид: for = :: end где - имя управляющей переменной цикла - счетчика цикла; заданное начальное значение этой переменной; - значение шага, с которым она должна изменяться; - конечное значение переменной цик-
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
53
ла. В этом случае внутри цикла выполняются несколько раз (каждый раз при новом значении управляющей переменной) до тех пор, пока значение управляющей переменной не выйдет за пределы интервала между и . Если параметр не указан, по умолчанию его значение принимается равным единице. Чтобы досрочно выйти из цикла (например, при выполнении некоторого условия), применяют оператор break. Если в программе встречается этот оператор, выполнение цикла досрочно прекращается и начинает выполняться следующий после слова end оператор. Для примера используем предыдущее задание: a=[' i ',' for i=1:5 x=i/5; si=sin(x); if i==1 disp(a) end disp([i,x,si]) end i x 1 0.2 2 0.4 3 0.6 4 0.8 5 1
x
','
sin(x)
'];
sin(x) 0.19867 0.38942 0.56464 0.71736 0.84147
1.5.4 Функции функций Некоторые важные универсальные процедуры в MATLAB используют в качестве переменного параметра имя функции, с которой они оперируют, и потому требуют при обращении к ним указания имени Мфайла, в котором записан текст программы вычисления некоторой другой процедуры (функции). Такие процедуры называют функциями функций. Чтобы воспользоваться такой функцией от функции, необходимо, чтобы пользователь предварительно создал М-файл, в котором вычислялось бы значение нужной функции по заданному значению ее аргумента. Перечислим некоторые из стандартных функций от функций, предусмотренных в MATLAB. Вычисление интеграла методом квадратур осуществляется процедурой: [I, cnt] = quad('', a,b) Здесь а и b - нижняя и верхняя границы изменения аргумента функции; I - полученное значение интеграла; cn- число обращений к вычислению функции, представленной М-файлом с названием, указанным в . Функция quad использует квадратурные формулы НьютонаКотеса четвертого порядка. Аналогичная процедура quad8 использует более точные формулы 8го порядка. Интегрирование обыкновенных дифференциальных уравнений осуществляют функции ode23 и ode45. Они могут применяться как для решения простых дифференциальных уравнений, так и для моделирования сложных динамических систем. Известно, что любая система обыкновенных дифференциальных уравнений (ОДУ) может быть представлена в так называемой форме Коши. dy f ( x, t ) , (1.1) dt где у - вектор переменных состояния системы; t - аргумент (обычно время); f - нелинейная вектор-функция от переменных состояния у и аргумента t. Обращение к процедурам численного интегрирования ОДУ имеет вид: [t, у] = оdе23('', tspan, y0, options) [t, у] = оdе45('', tspan, y0, options), где - строка символов, являющаяся именем М-файла, в котором вычисляется вектор-функция f(y,t), т.е. правые части системы ОДУ; у0 - вектор начальных значений переменных состояния; t - массив значений аргумента, соответствующих шагам интегрирования; у - матрица проинтегрированных значений фазовых переменных, в которой каждый столбец соответствует одной из переменных состояния, а строка содержит значения переменных состояния, соответствующих определенному шагу интегрирования; tspan - вектор-строка [t0 tfinal], содержащая два значения. t0 - начальное значение аргумента t; tfinal - конечное значение аргумента, options - строка параметров, определяющих значения допустимой относительной и абсолютной погрешности интегрирования. Параметр options можно не указывать. Тогда по умолчанию допустимая относительная погрешность интегрирования принимается равной 1.0е-3, а абсолютная (по каждой из переменных состояния) - 1.0е-6. Если же эти значения не устраивают пользователя, то следует перед обращением к процедуре численного интегрирования установить новые значения допустимых погрешностей с помощью процедуры odeset таким образом: орtions = odeset('RelTol',le-4, 'AbsTol', [le-4 le-4 le-5]). Параметр RelTol определяет относительную погрешность чис-
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
55
ленного интегрирования по всем переменным одновременно, а AbsTol является вектором-строкой, состоящим из абсолютных допустимых погрешностей численного интегрирования по каждой из фазовых переменных. Функция ode23 осуществляет интегрирование численным методом Рунге-Кутта 2-го порядка, а с помощью метода 3-го порядка контролирует относительные и абсолютные ошибки интегрирования на каждом шаге и изменяет величину шага интегрирования так, чтобы обеспечить заданные пределы ошибок интегрирования. Для функции ode45 основным методом интегрирования является метод Рунге-Кутта 4-го порядка, а величина шага контролируется методом 5-го порядка. Далее при рассмотрении расчетов переходных процессов в линейных электрических цепях мы рассмотрим применение данного способа решения дифференциальных уравнений на примере. Вычисления минимумов и корней функции осуществляется следующими функциями MATLAB. fmin - нахождение минимума функции одного аргумента; fmins - нахождение минимума функции нескольких аргументов; fzero - нахождение нулей (корней) функции одного аргумента. Последняя из указанных функций может с успехом использоваться для отыскания корней характеристических уравнений при расчете переходных процессов, расчете фильтров и т.д. Обращение к первой из процедур в общем случае имеет вид. Xmin = fmin('', XI, Х2) Результатом этого обращения будет значение Xmin аргумента функции, соответствующее локальному минимуму в интервале Х1> переведены во второе окно (Selected Measurement) для измерения и регистрации результатов. Флажок Plot selected measurements позволяет вывести измеряемые сигналы в виде временных зависимостей. Данный блок позволяет избавиться от многочисленных вспомогательных измерительных блоков на модели, что упрщает ее, делает более удобной и понытной. Примеры применения этого блока мы увидим далее. В моделях, приведенных далее в главе 4 работы, встречаются блоки, не рассмотренные здесь. Их описания и пояснения по применению мы будем приводить по ходу изложения примеров моделирования. 2.4. Построение блок-схем Рассмотрим, какие операции выполняют в процессе построения блок-схем сложных динамических систем. 2.4.1 Выделение объектов При создании и редактировании S-модели нужно выполнять такие операции, как копирование или удаление блоков и линий. Для этого предварительно необходимо выделить один или несколько блоков и линий (объектов). Чтобы выделить отдельный объект, нужно щелкнуть на нем мышью один раз. В результате по углам выделенного блока или в начале и конце линии появятся маленькие черные метки. При этом все другие ранее выделенные объекты станут невыделенными. Если щелкнуть на объекте второй раз, он станет невыделенным. Для выделение нескольких объектов необходимо нажать клавишу [Shift] и, удерживая ее нажатой, выполнить щелчки на каждом выделяемом объекте. Затем клавишу [Shift] отпустить. Группу объектов можно выделить также с помощью рамки. Если требуется выделить всю S-модель, т.е. все объекты в активном окне блок-схемы, то для этого следует воспользоваться командой Select All (Выбрать все) из меню Edit (Правка) или комбинацией клавиш [Ctrl+A]. 2.4.2 Операции с блоками 2.4.2.1 Копирование и перестановка блоков Можно копировать блоки из библиотеки или другой модели в текущую S-модель. Для этого достаточно открыть нужную библиотеку или окно модели-прототипа и перетащить мышью нужный блок в окно создавае-
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
121
мой модели. Блоки можно копировать и при помощи команд меню. Последовательность действий при этом такова: В окне библиотеки или модели выделите блок/блоки, подлежащие копированию. Выберите в меню Edit (Правка) активного окна команду Сору (Копировать). Сделайте активным окно, в которое нужно скопировать блок, и выберите в нем команду Paste (Вставить) из меню Edit (Правка). Каждому скопированному блоку Simulink присваивает имя. Первый скопированный блок будет иметь то же имя, что и блок в библиотеке. Каждый следующий блок того же типа будет иметь такое же имя с добавлением порядкового номера. Пользователь может переименовать блок. При копировании блок получает те же значения настраиваемых параметров, что и блок-оригинал. Перестановка блока внутри модели осуществляется путем перетаскивания его мышью. При этом Simulink автоматически перерисовывает линии, связывающие этот блок с другими блоками. Чтобы переставить несколько блоков вместе с соединительными линиями и с сохранением относительных расстояний, необходимо их выделить и перетащить мышью один из блоков. Все другие выделенные блоки также займут новые места. Копирование блоков одной модели можно выполнить двумя способами: Перетащить блок в нужное положение, удерживая клавишу [Ctrl]. Перетащить блок, удерживая нажатой правую кнопку мыши. 2.4.2.2 Установка параметров блока Функции, которые выполняет блок, зависят от значений параметров блока. Установка этих значений осуществляется в окне настройки блока, которое вызывается после двойного щелчка на изображении блока в блоксхеме. Окна настройки параметров для некоторых блоков показаны выше. Далее, при рассмотрении конкретных примеров моделирования электрических схем, мы, если это необходимо, будем приводить вид этих окон. 2.4.2.3 Удаление блоков Для удаления ненужных блоков из блок-схемы достаточно выделить эти блоки так, как было указано ранее, и нажать клавишу [Del] или [Backspace]. Можно также вызвать команду Clear (Очистить) или Cut (Вырезать) из меню Edit (Правка) окна блок-схемы. Если использована команда
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
122
Cut, то в дальнейшем удаленные блоки можно скопировать в S-модель при помощи команды Paste (Вставить) того же меню. 2.4.2.4 Отсоединение блока Чтобы отсоединить блок от линий, достаточно нажать клавишу [Shift] и, не отпуская ее, перетащить блок в другое место. 2.4.2.5 Изменение угловой ориентации блока В начальном состоянии сигнал проходит через блок слева направо (по левую сторону располагаются входы блока, а по правую сторону — выходы). Чтобы изменить угловую ориентацию блока следует: Выделить блок, который нужно повернуть. Выбрать в меню Format (Формат) окна блок-схемы одну из следующих команд - Flip Block (Поворот блока на 180 градусов) или Rotate Block (Поворот блока по часовой стрелке на 90 градусов). Меню Format можно вызвать, выделив блок и нажав правую кнопку мыши. 2.4.2.6 Изменение размеров и имени блока Изменение размеров блока выполняется следующим образом. Выделите блок и установите указатель мыши на одну из угловых меток блока. Форма указателя при этом изменится - он примет вид двунаправленной стрелки. "Захватите" мышью эту метку и перетяните ее в новое положение. Все имена блоков в модели должны быть уникальными и состоять хотя бы из одного символа. Чтобы изменить имя блока, нужно выполнить щелчок на имени, а затем, используя обычные приемы редактирования, внести необходимые изменения. Для изменения шрифта следует выделить блок, вызвать команду Font (Шрифт) из меню Format (Формат) окна модели и затем выбрать шрифт в открывшемся диалоговом окне. По умолчанию имя блока располагается следующим образом. Если блок ориентирован слева направо, то имя находится под блоком, если справа налево - над блоком, если же сверху вниз или снизу вверх - по правой стороне блока. Изменить местоположение имени выделенного блока можно двумя способами: перетащить имя мышью на противоположную сторону блока; воспользоваться командой Flip Name из меню Format окна модели - она также переносит имя на противоположную сторону блока. Скрыть имя блока можно, используя команду Hide Name (Скрыть имя) меню Format (Формат) окна модели. Чтобы восстановить отображение имени, следует воспользоваться командой Show Name (Показать имя)
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
123
того же меню. 2.4.2.7 Создание соединительных линий Сигналы в модели передаются по линиям. Каждая линия может передавать или скалярный, или векторный сигнал. Линия соединяет выходной порт одного блока с входным портом другого блока. Линия может также разветвляться и соединять один блок с несколькими блоками. Чтобы соединить выходной порт одного блока с входным портом другого, нужно выполнить следующие действия: Установить указатель мыши на выходной порт первого блока (при этом курсор должен принять форму перекрестия). Нажать левую кнопку мыши и, удерживая ее в этом положении, передвинуть указатель ко входному порту второго блока; Отпустить кнопку мыши. Simulink заменит символы портов соединительной линией с указанием направления передачи сигнала. Линии можно рисовать как от входного порта к выходному, так и наоборот, рисунок 2.45. Разветвленная линия, эта такая, которая ответвляется. Она начинается с существующей и передает ее сигнал к входному порту другого блока. Эти липии передают один сигнал. Разветвленная линия дает возможность передать один и тот же сигнал к нескольким блокам. Чтобы образовать ответвление от существующей линии, необходимо выполнить следующие действия: Установить курсор в точку ответвления; Нажать клавишу [Ctrl] и левую кнопку мыши и удерживать их нажатыми; Провести линию ко входному порту нужного блока; Отпустить клавишу [Ctrl] и левую кнопку мыши рисунок 2.45,а. 0
0 1
1
Display
Display
Constant
Constant
Signal Generator
Scope
XY Graph
Signal Generator
Gain
Сигнал №2
Scope
1
1 Sine Wave
Постоянная
Sine Wave
Scope1
Gain
Scope1
Сигнал №1
а
б Рисунок 2.45 – Соединение и разветвление линии
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
XY Graph
124
Блоки можно соединять ломаными линиями, состоящими из нескольких сегментов, рисунок 2.45,б. Для создания следующего сегмента необходимо установить курсор в конец предыдущего сегмента и нарисовать (удерживая левую клавишу мыши) следующий сегмент. Чтобы переместить отдельный сегмент линии, необходимо выполнить следующие действия: Установить указатель на перемещаемом сегменте. Нажать и удерживать левую кнопку мыши. Курсор при этом должен принять форму креста. Переместить указатель в новое положение сегмента и отпустить кнопку мыши. Примечание Сегмент, непосредственно прилегающий к порту блока, переместить невозможно При необходимости линию можно разделить на два сегмента. Для этого следует выполнить следующие действия: Выделить линию и установить курсор в точку излома линии. Нажать клавишу [Shift] и левую кнопку мыши. Курсор при этом примет форму окружности, а на линии образуется излом. Переместить курсор (излом) в новое положение. Отпустить клавишу [Shift] и кнопку мыши. 2.4.2.8 Проставление меток сигналов и комментариев Для наглядности и удобства блок-схемы линии можно снабдить метками, указывающими, какие сигналы по ним проходят. Метки размещают под или над горизонтальной линией, по левую или по правую сторону от вертикальной линии. Метка может быть расположена в начале, в конце или посередине линии, рисунок 2.45,б. Чтобы создать метку сигнала, нужно дважды щелкнуть на сегменте линии и затем ввести текст. Причем двойной щелчок следует выполнять точно на линии, так как в противном случае будет создан комментарий к модели. Перемещение метки осуществляется путем перетаскивания ее мышью на новое место. Если при этом удерживать нажатой клавишу [Ctrl], то метка будет скопирована в новое место. Скопировать метку можно также, выполнив двойной щелчок на другом сегменте линии. Чтобы отредактировать метку, следует щелкнуть на ней и затем внести соответствующие изменения в ее текст. Чтобы удалить метку, выделите ее, удерживая клавишу [Shift], и нажмите клавишу [Del] или [Backspace]. При этом будут уделены все метки
Create PDF files without this message by purchasing novaPDF printer (http://www.novapdf.com)
125
этой линии. Распространение меток линии - это процесс автоматического переноса метки/меток к сегментам линии, разорванной блоками From/Goto и Mux. Чтобы распространить метку, создайте во втором и последующих сегментах линии метки с именем "