ebook img

Система MATLAB. Часть 1 PDF

73 Pages·2.793 MB·Russian
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Система MATLAB. Часть 1

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО КУЛЬТУРЕ И КИНЕМАТОГРАФИИ Федеральное государственное образовательное учреждение высшего профессионального образования "Санкт-петербургский государственный университет кино и телевидения" Кафедра математики и информатики М.С. Семченок, Н.М. Семченок СИСТЕМА MATLAB Учебное пособие. Часть 1. САНКТ-ПЕТЕРБУРГ 2005 УДК 681.3 Семченок М.С., Семченок Н.М. Система MATLAB. Часть 1.: Учебное по- Введение собие. — СПб.: изд. СПбГУКиТ, 2004. – 140 с. ДанноеучебноепособиепосвященоприменениюсистемыMATLABдля решения различных математических задач. В первой части пособия изло- жены основы программирования на языке MATLAB, а также достаточно подробно рассмотрены графические возможности этой системы. Система MATLAB (MATrix LABoratory) — это язык программирования вы- Учебное пособие предназначено для студентов дневного, вечернего и сокогоуровня, допускающийработу в режимекомандногоинтерпретатора, заочного отделений. главным предназначением которого является выполнение матричных вы- числений. Рецензенты — профессор Попов М.М., Непомнящая Е.Ю. СистемаMATLABбыласозданакомпаниейMathWorksв1984 году как интерактивная оболочка над пакетами подпрограмм, написанных на язы- ке FORTRAN, для решения линейных систем (LINPACK) и исследования проблемы собственных значений (EISPACK). В дальнейшем к MATLAB были добавлены пакеты подпрограмм для решения других задач вычис- лительной математики, а также многочисленные графические инструкции, Рекомендовано к изданию в качестве учебного пособия кафедрой открывающие перед пользователем широкие возможности для создания математики и информатики. высококачественой двумерной и трехмерной графики. Входной язык программирования MATLAB близок по синтаксису к со- Протокол № от 30.08.05 г. временным системам программирования на базе универсальных алгорит- мических языков таких как FORTRAN, С или Java. И хотя MATLAB уступает этим языкам в быстродействии, содержащиеся в нем уникальные библиотеки численных методов и средств визуализации результатов вы- числений зачастую позволяют пользователю получить конечный результат быстрее, чем при использовании традиционных языков программирования. Система MATLAB обладает возможностями как процедурного, так и объектноориентированногоязыкапрограммирования.Крометого,онасред- ствами интерактивной разработки графических интерфейсов, в котором могут присутствовать такие стандартные элементы, как меню, кнопки, пе- реключатели, линейки прокрутки и.т.п. На базе ядра MATLAB созданы многочисленныерасширения,ориенти- рованные на решение задач в специальных областях науки и техники. Вот лишь некоторые из них: (cid:1)c СПбГУКиТ, 2005 • Communications Toolbox — пакет, предназначенный для разработки (cid:1)c Семченок М.С., Семченок Н.М., 2005 г. цифровых и аналоговых устройств передачи информации. 3 • Data Acquisition Toolbox — пакет, обеспечивающий взаимодействие системы MATLAB в режиме реального времени с внешними устрой- ствами ввода/вывода, такими как измерительные приборы, интер- фейсные платы и датчики. • Filter Design Toolbox — пакет инструментов для построения и ана- Глава 1 лиза цифровых фильтров. • Image Processing Toolbox — пакет, предназначенный для цифровой обработки растровых изображений. Начало работы с MATLAB • Optimization Toolbox — пакет подпрограмм для решения линейных и нелинейных задач оптимизации с большим числом неизвестных. • Partial Differential Equation Toolbox — пакет, предназначенный для численногорешениязадачматематическойфизикиметодомконечных элементов. ЧтобызапуститьсистемуMATLABнакомпьютере,работающемподуправ- • Signal Processing Toolbox — пакет программных средст для анализа лением операционнойсистемысемейства Microsoft Windows, нужно щелк- нуть по кнопке Пуск, выбрать из меню пункт Программы, затем в новом и обработки сигналов. меню перейти к пункту MATLAB 6.5 и щелкнуть по ярлыку . • Symbolic Math Toolbox — пакет, позволяющий проводить в системе Для запуска MATLAB можно также щелкнуть мышью по соответствую- MATLAB символьные математические преобразования. щей иконке на рабочем столе или выполнить в консоли команду matlab. ОсобоеместосредипакетоврасширенияMATLABзанимаетSIMULINK, 1.1 Вычисления в командном окне являющийсятесноинтегрированнойс MATLABграфическойсредой,пред- назначенной для моделирования и анализа аналоговых и дискретных ди- намических систем. После запуска системы на экране появляется главное окно рабочей среды Построение моделей в SIMULINK осуществляется в интерактивном MATLAB. По умолчанию это окно имеет вид, изображенный на рис. 1.1. графическом конструкторе и заключается в перетаскивании в окно мо- Если на вашем компьютере это окно выглядит по-другому, выберите в дели элементарных блоков из набора стандартных библиотек и настройки менюданногоокнапоследовательнопунктыView,Desktop Layout иDefault. связей между ними. При этом автоматически создаются системы диффе- В главном окне рабочей среды системы MATLAB расположены: ренциальных уравнений, описывающие данную модель. • Строка меню, содержащая пункты File, Edit, View, Web, Window и Возможность следить за процессами, происходящими в системе в ходе Help. моделирования, обеспечивается специальными устройствами наблюдения, входящими в состав библиотеки SIMULINK, такими как, например, вир- • Панель инструментов, в которой находятся кнопки, позволяющиесо- туальные осциллографы и датчики. здавать новые или открывать существующие файлы, выполнять опе- В данном учебном пособии рассматриваются только основные возмож- рации сбуферомобмена,обращаться ксправочнойсистемеMATLAB ности системы MATLAB. Дополнительные сведения о работе с MATLAB и т.п. можно найти в книгах из приведенного списка литературы или на сайте разработчика этой системы: http://www.mathworks.com/. • Командное окно (Command Window), в котором проводятся вычисле- ния ивыполняетсязапускпрограмм,написанныхнаязыкеMATLAB. 4 5 6 7 Глава 1. Начало работы с MATLAB 1.1. Вычисления в командном окне >> 2 + 3 ans = 5 >> Мывидим,чтосистемаMATLABвычислилазначениевыражения,при- своиларезультатавтоматическисозданнойпеременнойansивывелановое приглашение командной строки. Кроме того, в окне Workspace появилась запись, соответствующая переменной ans, а в окне Command History — набранное нами выражение. Теперь вычислим значение выражения 2(1 + cosπ/3) и присвоим ре- зультат переменной с именем x. Обратите внимание, что имя переменной в MATLAB может быть составлено только из букв латинского алфавита, цифр и символа подчеркивания(_). При этом большие и маленькие буквы различаются. >> x = 2*(1+cos(pi/3)) Рис. 1.1. Главное окно рабочей среды системы MATLAB x = 3 • Окно с заголовком Workspace, в котором отображается текущее со- Редактирование выполненных команд в MATLAB невозможно. Однако стояние рабочего пространства MATLAB1. всегда можно поместить в новую строку копию ранее введенной команды. • Окно с заголовком Command History, в котором отображается список Для этого достаточно, находясь в новой строке, пролистатьклавишами [↑] и [↓] историю ранее введенных команд. Кроме того, можно также скопи- ранее введенных команд. ровать необходимую команду из окна Command History. • Строка состояния, в которой расположена кнопка Start, обеспечива- >> y = 2*(1+sin(pi/3)) ющая удобный доступ ко всем специальным приложениям MATLAB. Рядом с этой кнопкой расположен индикатор, отражающий состоя- y = ние вычислительного ядра MATLAB. В момент проведения расчетов 3.7321 в этой строке отображается слово Busy (Занято). Длинные команды, которые не помещаются целиком в одной строке, В верхнем левом углу командного окна расположено приглашение ко- можно переносить на следующую строку, используя знак переноса в виде мандной строки (>>) и мигающий курсор. Чтобы выполнить в системе трех идущих подряд точек. MATLAB какое-либо действие, надо ввести в этой строке соответствую- >> 1+2+3+4+5+6+7+8+9+10+... щую команду и нажать клавишу [Enter]. 11+12+13+14+15+16+17+18+... В качестве первого примера сложим два числа. 19+20+21+22+23+24+25+26 1Рабочее пространство — это область памяти, в которой MATLAB запоминает значения переменных. ans = 351 8 9 Глава 1. Начало работы с MATLAB 1.1. Вычисления в командном окне Подавить автоматический режим вывода результатов вычислений можно, поставив в конце команды точку с запятой. Создадим, например, переменную R, значением которой является мат- рица размера 100×100, составленная из случайных чисел. >> R = rand(100); В том, что такая переменная действительно создана, можно убедиться, взглянув в окно с заголовком Workspace. Щелкнув же по иконке пере- менной в этом окне, вы сможете не только просмотреть, но и изменить значения элементов матрицы R. Вовремяпроведениявычисленийкомандноеокноблокируетсядоихза- вершения. Обычно это незаметно для пользователя, так как вычисления в MATLABвыполняются очень быстро. Но иногда получается так, что из-за ошибок в построении вычислительного алгоритма, переоценки машинных ресурсов компьютера или по какой-либо другой причине, время вычисле- ний становится либо неприемлемо большим, либо вообще бесконечным. Втакойситуациивычислениянеобходимопрервать,нажавкомбинацию клавиш[Ctrl-Break].Попробуйте,например,прерватьследующийбесконеч- ный цикл. Рис. 1.2. Первые вычисления в MATLAB. >> while true end Очиститькомандноеокноможноспомощьюкомандыclc. Однакосле- Лишние пробелы в командной строке игнорируются, если они не нару- дует помнить, что при этом значения всех переменных, которые были со- шают синтаксис языка MATLAB. зданы с момента запуска MATLAB,сохранятся в памяти компьютера. Для >> x =2+ 3 *sin( pi /3 ) очистки памяти следует выполнить команду clear. x = 1.1.1 Арифметические вычисления 4.5981 Основумногихрасчетовсоставляютвычислениязначенийарифметических Если же попытаться поставить пробел внутри синтаксической кон- выражений. В качестве операндов этих выражений могут выступать кон- струкции, MATLAB выведет сообщение об ошибке и укажет позицию, в станты, вещественные и комплексные переменные, элементарные и спе- которой эта ошибка была допущена. циальные функции. Одной из главных особенностей MATLAB является то, что, в отличие от большинства других языков программирования, эта >> ex p(1) система допускает непосредственное использование массивов в качестве операндов и аргументов функций. ??? ex p(1) Основным типом данных, с которыми работает MATLAB, являются | массивы. Чаще всего в математических вычислениях используются одно- Error: Missing operator, comma, or semicolon. мерные (векторы) и двумерные массивы (матрицы). ПриработесMATLABчастоприходитсяоперироватьсконструкциями, Чтобы задать вектор-строку, то есть массив размера 1×n, необходимо распечатка которых в командном окне потребовала бы не одного десятка заключить ее элементы в квадратные скобки, разделив их запятыми или экранных страниц. В таком случае выводить их на экран бессмысленно. пробелами. 10 11 Глава 1. Начало работы с MATLAB 1.1. Вычисления в командном окне >> a = [1 2 3] С помощью функции eye можно построить единичную матрицу. a = >> eye(3) 1 2 3 ans = Вектор-столбец задается похожим образом, только в качестве раздели- 1 0 0 теля следует использовать точку с запятой. 0 1 0 0 0 1 >> b = [1; 2; 3] Функция magic строит магический квадрат — матрицу, у которой b = сумма элементов каждой строки, каждого столбца и каждой диагонали 1 одинакова. 2 3 >> magic(3) Вектор-столбец может быть преобразован в вектор-строку с помощью ans = операции транспонирования символом которой является апостроф (’). 8 1 6 >> b’ 3 5 7 4 9 2 ans = Элементами массивов могут быть вещественные и комплексные числа 1 2 3 с плавающей точкой. Для формирования матрицы применяются оба типа разделителей. В MATLAB используется аппаратно реализованная арифметика двой- ной точности для десятичных чисел с плавающей точкой. >> A = [1 2 3; 4 5 6; 7 8 9] Десятичное число с плавающей точкой — это число, представленное в виде x×10n, где x называется мантиссой, а n — показателем. Для дости- A = жения однозначности представления требуется, чтобы первая цифра ман- 1 2 3 тиссы была ненулевой. Поскольку на каждое число с плавающей точкой 4 5 6 в памяти компьютера отводится заранее фиксированное число разрядов (в 7 8 9 случае чисел с двойной точностью количество этих разрядов равно 64, то есть 8 байт по 8 бит), то имеется лишь конечное множество чисел с пла- В MATLAB имеется много функций, предназначенных для построения вающей точкой и существуют наибольшее и наименьшее число, зависящее как стандартных, так и специальных матриц. от аппаратной реализации арифметики с плавающей точкой. Функция zeros, например, используется для создания матриц, запол- В MATLAB вещественные числа по модулю могут находится в интер- ненных нулями. вале [10−308,10308]. >> zeros(3) Числа с плавающей точкой распределены в интервале между наимень- шим и наибольшимпредставимым числом.Причемв окрестностинуля они ans = расположены значительно гуще, чем по краям интервала. 0 0 0 Очевидно, что однозначно отобразить континуальное множество веще- 0 0 0 ственных чисел на конечное множество чисел с плавающей точкой невоз- 0 0 0 можно. Поэтому любые операции, проводимые над числами с плавающей 12 13 Глава 1. Начало работы с MATLAB 1.1. Вычисления в командном окне точкой, в принципе не могут быть точными, так как всегда приходится Независимо от выбранного формата вывода результатов вычисления в производить округление до ближайшего числа с плавающей точкой. MATLAB всегда проводятся с максимально возможной точностью. Но при Вещественное число в MATLAB состоит из целой части со знаком или этом всегда следует помнить, что количество верных значащих цифр в без знака, десятичной точки, дробной и степенной части. Степенная часть полученном ответе далеко не всегда будет совпадать с тем количеством должна состоять из буквы e и целого числа со знаком или без знака. цифр, что видны на экране. Иногда при неустойчивости задачи или при Такимобразом,правильнаязаписьвMATLABчисла−1234.5678долж- неудачном выборе вычислительного алгоритма верные значащие цифры в на иметь следующий вид. результате могут отсутствовать вообще. Если происходит переполнениеразрядной сетки, то есть результат опе- >> -1.2346e+003 рации выходит за рамки диапазона, допустимого для чисел с плавающей точкой, то MATLAB возвращает в качестве результата внутреннее пред- Допустимы,однако,идругиевариантызаписивещественныхчисел,ко- ставление бесконечности (Inf). торые,впрочем,все равно автоматическиприводятсяк стандартной форме. >> 1/0 >> -1234.5678 ans = ans = Inf -1.2346e+003 Втехслучаях,когдарезультатнеопределен,чтопроисходит,например, >> -1.2346*10^3 при делении 0 на 0, возвращается специальная константа NaN (Not a Number). ans = >> 0/0 -1.2346e+003 Количество значащих десятичных цифр при вычислениях в MATLAB ans = может достигать 15-16. Однако для большей компактности результата при NaN выводе в командное окно часть значащих цифр обычно отбрасывается. Комплексные числа в MATLAB представляются в памяти компьюте- По умолчаниюсистемаиспользуеткомпактныйформат,задаваемый ко- ра парой чисел с плавающей точкой и записываются в форме a+bi (или мандой format short. Переключиться в режим вывода большего числа a+bj), где символом i (или j) обозначается мнимая единица. Обрати- знаков после десятичной точки можно, выполнив команду format long. те внимание, что символ операции умножения между мнимой единицей и >> format long мнимой частью комплексногочисла ставить не следует. Это связано с тем, >> pi что система MATLAB допускает переобозначениепеременных i и j, >> z = 5+7i ans = 3.14159265358979 z = 5.0000 + 7.0000i >> format short >> pi С помощью функций real и imag можно выделить вещественную и мнимую части комплексного числа. ans = 3.1416 >> real(z) 14 15 Глава 1. Начало работы с MATLAB 1.1. Вычисления в командном окне ans = >> x = 2; 5 >> y = 1-i; >> a = [1 2 3]; >> imag(z) >> A = [ 1 2 3; 4 5 6; 7 8 9]; >> whos ans = 7 Name Size Bytes Class Функция complex позволяет сконструировать комплексное число из A 3x3 72 double array упорядоченной пары вещественных чисел. a 1x3 24 double array >> complex(3, 5) x 1x1 8 double array y 1x1 16 double array (complex) ans = 3.0000 + 5.0000i Grand total is 26 elements using 216 bytes Функция conj возвращает комплексно-сопряженное число (символом Кроме того, при выполнении арифметическихопераций MATLAB стре- комплексного сопряжения в MATLAB является также апостроф). мится,насколькоэтовозможно,выполнитьприведениеоперандовкодному >> z’ размеру. Поэтому первой особенностью арифметики MATLAB является возмож- ans = ность, наряду со стандартной операцией умножения массива на скаляр, 5.0000 - 7.0000i выполнить сложение или вычитание массива и скаляра. Скаляр в этом Модуль и аргумент комплексного числа можно вычислить при помощи случае автоматически преобразуется в массив, размер которого совпадает функций abs и angle. с размером соседнего операнда, а все элементы равны исходному скаляру. >> abs(z) >> a + x ans = ans = 8.6023 3 4 5 >> angle(z) >> A - x ans = ans = 0.9505 -1 0 1 2 3 4 При работе в MATLAB необходимо учитывать две существенные осо- 5 6 7 бенности реализации арифметическихвычислений в этой системе. Во-первых,в MATLABвсе скалярныепеременныетрактуются как мас- Второй особенностью арифметики MATLAB является наличие в этой сивы размера 1×1. Действительно, если присвоить следующие значения системе двух комплектов символов для операций умножения, деления и переменнымиспомощьюкомандыwhosвывести вкомандноеокноинфор- возведения в степень. Один набор операций имеет традиционную симво- мациюобэтихпеременных,томожноувидеть,чтообескалярныеперемен- лику(*,/,^) ивыполняетсядлямассивовпо правиламлинейнойалгебры. ные рассматриваются системой MATLAB как одноэлементные векторы из Второй набор имеет ту же символику, перед которой ставится точка чиселсплавающейточкой(double arrayиdouble array(complex)). (.*, ./, .^), при этом операции выполняются поэлементно. 16 17 Глава 1. Начало работы с MATLAB 1.1. Вычисления в командном окне Необходимость в поэлементных операциях диктуется тем, что при про- Влинейнойалгебревозведениевстепеньможетбытьосуществленотолько граммировании на языке MATLAB эти операции зачастую позволяют из- в случае квадратной матрицы. бежать чрезмерного использования операторов цикла. Различия между традиционными и поэлементными операциями удобно >> A^3 рассмотреть на примерах. ans = >> A = [1 2; 3 4]; 37 54 >> B = [2 4; 6 8]; 81 118 >> b = [5; 6]; >> C = [1 2 3; 4 5 6]; Операцию поэлементого возведения в степень можно применить к любой >> D = [-4 5 -6; 1 -2 3]; матрице. Умножение матриц и векторов в линейной алгебре возможно только в >> A.^3 том случае, если число столбцов первого сомножителя равно числу строк второго. Операция правого деления двух матрицэквивалентна умножению ans = делимой матрицы на обратную матрицу делителя (A/B = AB−1). 1 8 27 64 >> A*b >> C.^2 ans = 17 ans = 39 1 4 9 16 25 36 >> B/A В системе MATLAB определены все элементарные и большая часть ans = специальных функций. 2 0 0 2 • sqrt(x) — квадратный корень; Поэлементное умножение или деление массивов осуществимо только • exp(x), log(x) — экспонента и натуральный логарифм; тогда, когда они имеют одинаковые размеры. • sin(x), cos(x), tan(x), cot(x), sec(x), csc(x) — тригоно- >> C.*D метрические функции; ans = • asin(x), acos(x), atan(x),acot(x), asec(x), acsc(x) — об- -4 10 -18 ратные тригонометрическиефункции; 4 -10 18 • sinh(x), cosh(x), tanh(x), coth(x), sech(x), csch(x) — ги- перболическиефункции; >> C./D • asinh(x),acosh(x),atanh(x),acoth(x),asech(x),acsch(x) ans = — обратные гиперболическиефункции; -0.2500 0.4000 -0.5000 4.0000 -2.5000 2.0000 • erf(x) — функция ошибок; 18 19 Глава 1. Начало работы с MATLAB 1.1. Вычисления в командном окне • gamma(z) — гамма-функция; 1.1.2 Символьные вычисления в MATLAB • airy(z), airy(2,z)—функцииЭйрипервогоивторого порядка; СистемаMATLABсамапосебеспособнавыполнятьтолькочисленныерас- четы. Поэтому если попытаемся вычислить выражение, в которое входят • besselj(k,z), bessely(k,z), besseli(k,z), besselk(k,z) переменные, не имеющие числового значения, то получим сообщение об — функции Бесселя первого и второго рода и модифицированные ошибке. функции Бесселя. >> (x-1)^2 Аргументами любой математической функции в MATLAB могут быть как вещественные, так и комплексные числа. В случае комплексногоаргу- ??? Undefined function or variable ’x’. мента возвращается главное значение функции. Возможностьпроведения символьных вычислений в MATLABобеспечива- >> atan(1) ется подключением к этой системе пакета компьютерной алгебры Maple. Реализовано это подключение при помощи пакета Symbolic Math Toolbox. ans = Символьные операции можно выполнять только в том случае, если все 0.7854 операнды в выражении имеют символьный тип (sym). Приведение число- вых констант и переменных к символьному типу осуществляется посред- >> sqrt(1+i) ством функции sym. В MATLAB осуществляется перегрузка2 арифметических операций и ans = основных функций в том случае, если их операнды или аргументы имеют 1.0987 + 0.4551i символьный тип. Векторы и матрицы могут также являться аргументами элементарных Воспользуемся перегрузкой операции сложения и просуммируем два и специальных функций. В этом случае значения функции вычисляются рациональных числа. для всех элементов массива. >> a = sym(1/2); >> exp( [1 2 3 4 5] ) >> b = sym(1/3); >> c = a + b ans = 2.7183 7.3891 20.0855 54.5982 148.4132 c = 5/6 >> A = [ pi/2 pi/3; pi/6 -pi/2] Обратите внимание, что результат операции наследует тип операндов. >> whos A = 1.5708 1.0472 Name Size Bytes Class 0.5236 -1.5708 >> sin(A) 2Перегрузкой функции в программировании называется автоматическая смена вычислительного алгоритма в зависимости от типа фактических значений ее фор- мальных параметров. Перегрузка функций позволяет использовать одни и те же ans = имена функций и символы операций для проведения вычислений с объектами, 1.0000 0.8660 имеющимисущественно различное внутреннее представление структуры. 0.5000 -1.0000

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.