Язык программирования Matlab
Рассмотрение особенностей Matlab - язык программирования, используемого для составления программных кодов. Ознакомление с процессом компилирования программного кода. Изучение основных арифметических операторов Matlab. Характеристика бинарных операторов.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | контрольная работа |
Язык | русский |
Дата добавления | 30.09.2017 |
Размер файла | 1,9 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
Название пакета Matlab является сокращением от английского Matrix Laboratory (что означает матричная лаборатория). Этим же термином (то есть Matlab) называют и язык программирования, используемый для составления программных кодов. Как известно, программный код может компилироваться или интерпретироваться. В первом случае получаем исполнительный (машинный) код, который выполняется центральным процессором. При интерпретации происходит преобразование в промежуточный код, который выполняется непосредственно системой-интерпретатором. Скомпилированный код обычно выполняется быстрее, чем интерпретируемый код. Вместе с тем интерпретируемые языки программирования, как правило, более демократичны в плане синтаксиса. Программный код Matlab интерпретируется. Однако это никак не ставит под сомнение вычислительные возможности Matlab. Основой для реализации разных типов данных в Matlab являются матрицы, что объясняет многие особенности среды (и языка программирования) Matlab. К матрицам мы будем достаточно часто апеллировать по ходу изложения материала книги.
Значительная часть функциональных возможностей приложения Matlab реализована через пакеты инструментов (английский термин toolbox). Это коллекции функций и других утилит, предназначенных для решения узко специальных задач. Большинство пакетов имеют узкую, специфическую направленность. Приложение Matlab предназначено (в первую очередь) для выполнения числовых расчетов и визуализации получаемых результатов. Пакет содержит огромное число утилит для выполнения самых разных операций и позволяет создавать собственные полнофункциональные программные коды. Вместе с тем в Matlab могут выполняться и символьные расчеты. Этой цели служит встроенная в Matlab среда MuPAD. Таким образом, пользователю Matlab предоставляются широкие возможности не только в области числовых, но и символьных расчетов.
1. Простые вычисления
Под простыми, или пошаговыми, подразумевают вычисления, обычно выполняемые в командном окне приложения Matlab. Соответствующая инструкция или команда вводится в командном окне и затем выполняется. На рисунке 1 показано, как может выглядеть рабочее окно приложения Matlab при запуске. Интерес в данном случае представляет внутреннее окно (обычно в центре рабочего окна приложения) с названием Command Window - командное окно. В этом окне можно заметить индикатор строки ввода (в виде двойной стрелки >>). Для ввода команды курсор необходимо переместить после индикатора строки ввода и ввести инструкцию для выполнения. Другими словами, в строку ввода командного окна необходимо ввести выражение и, нажав клавишу «Enter», запустить процесс вычисления этого выражения. Результат вычислений отображается внизу, под выполняемой командой. По умолчанию результат заносится в системную переменную «ans».
Рисунок 1
На рисунке 2 приведен пример вычисления нескольких арифметических выражений. В данном случае приведены результаты вычисления выражений 1+2*3 и (5^2-4)/7 соответственно. В первом случае, как и ожидалось, получаем в качестве результата значение 7, во втором - значение 3.
Рисунок 2
В качестве основных арифметических операторов в Matlab используются: оператор «+» для вычисления суммы, оператор «-» для вычисления разности, оператор «*» для вычисления произведения, оператор «/» для вычисления частного и оператор «^» для возведения в степень.
В общем смысле переменная - это область памяти, к которой можно обращаться по имени для получения значения, записанного в этой области, а также его изменения. В строго типизированных языках программирования (таких, как С++, Java или Pascal) для использования переменной необходимо предварительно ее объявить, указав при этом, к какому типу она относится. В Matlab ничего подобного делать не нужно. Переменной сразу можно присваивать значение. В качестве оператора присваивания используется знак равенства «=». Имя переменной, которой присваивается значение, указывается слева от оператора присваивания, а присваиваемое переменной значение справа от оператора присваивания. Значение, присваиваемое переменной, если речь идет о скалярных величинах, может быть числом или выражением, содержащим другие переменные. При этом необходимо, чтобы этим переменным ранее уже было присвоено значение. Пример использования скалярных переменных в пошаговых вычислениях приведен в рабочем документе на рисунке 3.
Рисунок 3
Первой командой x=0.5*sin(0.1) присваивается значение переменной «x». При этом использована встроенная функция Matlab «sin()» для вычисления синуса. Присвоенное в результате этой переменной значение отображается внизу под строкой ввода в формате:
«переменная =
значение»
Аналогично следующей командой y=0.3*cos(0.2) значение присваивается переменной «y». Здесь «cos()» - встроенная функция Matlab для вычисления косинуса. Обращаем также внимание читателя, что в качестве десятичного разделителя при вводе действительных чисел с дробной десятичной частью используется точка.
Наконец, командой z=(x^2+y^2)^(1/3) значение присваивается переменной «z». В выражение, определяющее значение переменной «z», входят переменные «x» и «y». Однако поскольку предварительно этим переменным были присвоены значения, ошибки не возникает и значение переменной «z» присваивается корректно.
Есть две базовые операции, которые достаточно полезны, особенно при большем объеме вычислений. Во-первых, в некоторых случаях нужно узнать, какие переменные рабочего пространства уже используются, и, во-вторых, иногда приходится, образно выражаясь, "удалять переменные с игрового поля" - то есть освобождать память, выделенную под эти переменные. Первая операция выполняется с помощью инструкции «whos». Если ввести в командную строку эту инструкцию и нажать клавишу «Enter», будет выведен список доступных в рабочем пространстве переменных с описанием их некоторых атрибутов.
Рисунок 4
В данном случае список состоит из четырех переменных: трех объявленных переменных пользователя «x», «y» и «z», и системной переменной «ans». Очистка пространства переменных осуществляется с помощью инструкции «clear», после которой, через пробел, указываются имена удаляемых переменных. На рисунке 5 представлен результат выполнения команды «clear x y», после которой выполнена команда «whos» для проверки списка переменных рабочего пространства.
Рисунок 5
Поскольку командой «clear x y» переменные «x» и «y» из рабочего пространства удалены, в списке переменных остались только переменная «z» и системная переменная «ans». Хотя значение переменной «z» присваивается на основе значений переменных «x» и «y», их удаление из рабочего пространства (или изменение их значения) назначение переменной «z» никак не влияет. Для удаления из рабочего пространства всех переменных используют инструкцию «clear» без указания переменных.
В предыдущих примерах использовались скалярные величины. С точки зрения основополагающей идеологии и технической реализации, скаляры в Matlab являются скорее экзотикой, чем обычным явлением. Дело в том, что в Matlab базовым типом данных являются матрицы (или массивы). В этом отношении скаляр "с точки зрения Matlab" (если можно так выразиться) является матрицей размера 1х Как известно, массивы можно индексировать, то есть для доступа к элементу массива указывается имя массива и его индекс (или индексы). Индексы указываются после имени матрицы (массива) в круглых скобках и разделяются запятыми. К скалярной переменной можно обращаться как по имени, так и указав индексы - в данном случае это (1,1). Пример обращения к скалярной величине в обычном режиме и с помощью пары единичных индексов показан на рисунке 6.
Командой «MyVar=10» переменной «MyVar» присваивается значение «10». Обращаться к переменной можно как по имени «MyVar», так и в режиме обращения к элементу матрицы «MyVar(1,1)». В обоих случаях в качестве результата возвращается значение скалярной переменной «MyVar».
Поскольку все переменные в Matlab априори рассматриваются как матрицы, никаких особых инструкций при объявлении матриц выполнять не нужно, за исключением того, что для матрицы необходимо задать значения ее элементов. Делается это достаточно просто. Список элементов матрицы заключается в квадратные скобки, списки значений элементов строки разделяются запятыми или пробелами, а списки значений разных столбцов разделяются точкой с запятой. Например, командой «A=[1 2 3]» задается вектор-строка (матрица размеров 1х3) с элементами «1», «2» и «3» соответственно.
Рисунок 6
Командой «B=[4;5;6]» задается вектор-столбец (матрица размеров 3х1) с элементами «4», «5» и «6». Наконец, командой «C=[1,2;3,4;5,6]» задается матрица размерами 3х2 (3 строки и 2 столбца). Примеры выполнения этих команд приведены в документе на рисунке 7.
Рисунок 7
К элементам матрицы можно обращаться в обычном режиме, указав два индекса (номер строки и номер столбца, на пересечении которых находится элемент). Существует также способ обращения по обобщенному индексу. Обобщенный индекс элемента матрицы определяется как его порядковый номер, если отсчет начинать с верхнего левого элемента сверху вниз и от левого столбика к правому. Так, если матрица «X» имеет размеры «n» на «m», то к элементу с индексами «i» и «j» можно обратиться либо как «X(i,j)», либо как «X(n*(j-1)+i)». Хотя второй способ индексирования элементов может показаться несколько запутанным, он соответствует техническому способу индексации элементов матрицы в памяти, поэтому вычисления в таком случае выполняются быстрее. На рисунке 8 приведен фрагмент документа, в котором в различном режиме выполняется обращение к элементам матрицы «C», определенной ранее. В частности, командой «C(1)» получаем значение элемента «C(1,1)» (значение1). Инструкция «C(5)» является ссылкой на элемент «C(2,2)», значение которого равно «4».
Рисунок 8
2. Арифметические операции
Основные арифметические операторы Matlab позволяют выполнять операции не только со скалярными величинами, но и с матрицами. Более того, можно утверждать, что основная часть операторов ориентирована на выполнение матричных операций. перечислены основные арифметические операторы Matlab с кратким описанием результата их применения к операндам разного типа (если такие допустимы).
Таблица 1 Основные арифметические операторы Matlab.
Оператор |
Описание |
|
+ |
Оператор сложения. Оператор бинарный. Операндами могут быть как скалярные величины, так и матричные. Для двух скалярных операторов выполняется сложение. Для двух матричных операндов (матрицы одинаковых размеров) выполняется поэлементное сложение: результатом является матрица той же размерности, что и матрицы-операнды, а ее элементы равны сумме соответствующих элементов складываемых матриц. Если один операнд - скаляр, а другой - матрица, то результатом является матрица, каждый элемент которой равен сумме скаляра и соответствующего элемента матрицы-операнда. |
|
- |
Оператор вычитания. Бинарный оператор. Операндами могут быт скаляры, матрицы одинаковых размеров или матрица и скаляр. Для скаляров вычисляется разность. Для операндов-матриц вычисляется матрица, элементы которой равны разности соответствующих элементом матриц-операндов. Если один операнд - матрица, а другой - скаляр, то результатом является матрица, элементы которой вычисляются как разность соответствующего элемента матрицы-операнда и скаляра (с учетом порядка операндов). Можно вычитать скаляр из матрицы и матрицу из скаляра. |
|
* |
Оператор умножения. Бинарный оператор. Если операндами являются скаляры, вычисляется произведение скалярных величин. Для операндов-матриц вычисляется матричное произведение. Если один операнд - матрица, а другой - скаляр, результатом является матрица, элементы которой вычисляются как произведение соответствующего элемента матрицы-операнда и скаляра. |
|
/ |
Оператор деления. Бинарный оператор. Если оба операнда - скаляры, то в качестве результата возвращается частное от деления скаляра на скаляр. Если первый операнд - матрица, а второй - скаляр, в качестве результата возвращается матрица, каждый элемент которой получается поэлементным делением матрицы-операнда на скаляр. В случае если оба операнда - квадратные матрицы одного ранга, в качестве результата возвращается произведение матрицы - первого операнда на матрицу, обратную к матрице - второму операнду. |
|
^ |
Оператор возведения в степень. Бинарный оператор. Первым операндом может быть скаляр или квадратная матрица. Если первый операнд - скаляр, то второй может быть любым действительным скаляром. В качестве результата возвращается первый операнд, возведенный в степень, определяемую вторым операндом. Если первый операнд - квадратная матрица, то второй операнд должен быть целочисленным (может быть отрицательным). Результатом является матрица, вычисляемая возведением матрицы-операнда в целочисленную степень, определяемую вторым операндом. |
|
\ |
Оператор левостороннего деления. Бинарный оператор. Операндами являются квадратные матрицы одного ранга. Результатом является матрица, равная произведению матрицы, обратной к первому операнду-матрице, на второй операнд-матрицу. |
|
.* |
Оператор поэлементного умножения. Бинарный оператор. Операндами являются матрицы одинакового размера. Результатом является матрица, элементы которой равны произведению соответствующих элементов матриц-операндов. |
|
./ |
Оператор поэлементного деления. Бинарный оператор. Операндами являются матрицы одинакового размера. Результатом является матрица, элементы которой вычисляются как частное от деления элементов матрицы - первого аргумента на соответствующие элементы матрицы - второго аргумента. |
|
.\ |
Оператор поэлементного левостороннего деления. Бинарный оператор. Операндами являются матрицы одинакового размера. Результатом является матрица того же размера. Выполняется деление элементов матрицы - второго операнда на соответствующие элементы матрицы - первого операнда. |
|
' |
Оператор вычисления сопряженной матрицы. Унарный оператор. Результатом является матрица, сопряженная к матрице-оператору. |
|
.' |
Оператор транспонирования. Унарный оператор. Результатом является матрица, транспонированная к матрице-операнду. |
|
.^ |
Оператор поэлементного возведения в степень. Бинарный оператор. Операндами могут быть скаляры или матрицы (в разной комбинации). Если первый аргумент - матрица, а второй - скаляр или матрица той же размерности, то в качестве результата возвращается матрица, элементы которой получаются возведением элементов первой матрицы в степень, определяемую вторым операндом-скаляром или соответствующими элементами второго операнда-матрицы. Если первый операнд скалярный, а второй является матрицей, то результатом будет матрица того же размера, что матрица-операнд (второй). Элементы матрицы-результата получаются возведением скаляра (первый операнд) в степень, определяемую соответствующим элементом второго (матричного) операнда. |
Приведенные операторы практически полностью перекрывают весь спектр возможных операций, которые приходится выполнять с матрицами. Некоторые примеры использования арифметических операторов с матричными операндами приведены в табл. 2. Матрицы «A» и «B» при этом инициализированы в документе следующими командами (жирным шрифтом выделен ввод пользователя):
>> A=[1,3;-2,4]
A =
1 3
-2 4
>> B=[-1,1;3,-2]
B =
-1 1
3 -2
Таблица 2 Примеры выполнения арифметических операций с матрицами.
Команды |
Описание |
|
>> A*B ans = 8 -5 14 -10 |
Произведение матриц. Вычисляется по правилам вычисления матриц в линейной алгебре. |
|
>> A/B ans = 11 4 8 2 |
Деление матриц. Матрица A умножается на матрицу, обратную к матрице B. |
|
>> A\B ans = -3000 0000 0.1000 0 |
Левостороннее умножение матриц. Матрица, обратная к матрице A, умножается на матрицу B. |
|
>> A./B ans = -0000 3.0000 -0.6667 -2.0000 |
Поэлементное деление матриц. Элементы матрицы A делятся на соответствующие элементы матрицы B. |
|
>> A.\B ans = -0000 0.3333 -5000 -0.5000 |
Левостороннее поэлементное деление. Элементы матрицы B делятся на соответствующие элементы матрицы A. |
|
>> A.*B ans = -1 3 -6 -8 |
Поэлементное умножение матриц. Элементы матрицы A умножаются на соответствующие элементы матрицы B. |
|
>> A+B ans = 0 4 1 2 |
Сумма матриц. Вычисляется по правилам вычисления суммы матриц в линейной алгебре (складываются соответствующие элементы матриц A и B). |
|
>> A-B ans = 2 2 -5 6 |
Разность матриц. Вычисляется по правилам расчета разности двух матриц (от элементов матрицы A вычитаются соответствующие элементы матрицы B). |
|
>> A.' ans = 1 -2 3 4 |
Транспонирование матрицы. Результатом является матрица, транспонированная к матрице A. |
Рисунок 9
Рисунок 10
Однако арифметические операторы далеко не единственные операторы, используемые при вычислениях.
3. Логические операторы и операторы сравнения
Важную группу операторов составляют логические операторы и операторы сравнения. Операндами в этом случае могут быть как скаляры, так и матрицы. Прежде, чем приступить к рассмотрению этих операторов, отметим некоторые особенности работы с логическими значениями.
Обычно под логическими значениями подразумевают тип данных, переменные которого могут принимать два значения - истина и ложь («true» и «false» соответственно). В Matlab любое числовое значение, отличное от нуля, интерпретируется как истина (или «true»), а ненулевые значения интерпретируются как ложь (или «false»). Фактически, это есть правило перевода числовых значений в логические значения. Обратное преобразование выполняется по следующему правилу: логическое значение истина (или «true») преобразуется в числовое значение «1», а логическое значение ложь (или «false») преобразуется в числовое значение «0».
Если некоторой переменной присвоить в качестве значения «true» или «false», отображаемым будет соответственно значение «1» или «0».
Операндами для операторов сравнения выступают числовые значения. Это бинарные операторы. Если оба операнда - скаляры, сравнение выполняется по правилам сравнения чисел. При истинном соотношении возвращается значение «1», при ложном - значение «0». Если операндами являются матрицы одинаковых рангов, сравниваются соответствующие элементы матриц (по правилам сравнения числовых значений). Результатом является "логическая матрица": ее элементы равны 1 или 0 в зависимости от результата сравнения соответствующих элементов исходных матриц. Если одним операндом является скаляр, а другим - матрица, то выполняется сравнение каждого элемента матрицы со скаляром. Операторы сравнения перечислены в таблице 3. бинарный программирование компилирование
Таблица 3 Операторы сравнения Matlab.
Оператор |
Описание |
|
== |
Оператор проверки на предмет равенства. |
|
~ = |
Оператор проверки значений операндов на предмет неравенства. |
|
> |
Оператор проверки того, что значение первого операнда больше значения второго операнда. |
|
< |
Оператор проверки того, что значение первого операнда меньше значения второго операнда. |
|
> = |
Оператор проверки того, что значение первого операнда не меньше значения второго операнда. |
|
< = |
Оператор проверки того, что значение первого операнда не больше значения второго операнда. |
Как и в случае операторов сравнения, операндами логических операторов могут выступать как скаляры, так и матрица (одновременно оба или только один). Если операндами являются скаляры, соответствующие логические операции выполняются по описанным выше правилам преобразования числовых и логических значений. Если оба операнда - матрицы одинаковых размеров, логические операции выполняются поэлементно. При условии, что один операнд - матрица, а второй - скаляр, логическая операция выполняется для каждого элемента матрицы и скаляра. Логические операторы Matlab представлены в таблице 4.
Таблица 4 Логические операторы Matlab.
Оператор |
Описание |
|
& |
Логическая операция и. Результатом является истина (значение 1), если оба операнда истинны. В противном случае возвращается 0. |
|
| |
Логическая операция или. Результатом является истина (значение 1), если хотя бы один операнд истинен. В противном случае возвращается 0. |
|
~ |
Логическая операция отрицания. Для истинного операнда возвращается значение 0, а для ложного - значение |
Как в операциях сравнения, так и в логических операциях для элементов матриц или скаляров (в зависимости от типа операндов) возвращаются значения «0» (ложь) и «1» (истина).
4. Комплексные числа
В Matlab можно использовать не только действительные, но и комплексные числа. Ввод комплексных чисел в рабочей области выполняется в соответствии с правилами представления комплексных чисел. В качестве мнимой единицы можно использовать, на выбор, переменные «i» или «j», без какого бы то ни было предварительного объявления. Однако если переменной «i» или «j» присвоить числовое значение, соответствующую переменную в качестве мнимой единицы задействовать не получится.
>> z=1+2i
z =
0000 + 2.0000i
>> z+j
ans =
0000 + 3.0000i
>> (2-4i)*(1+z)
ans =
12.0000 - 4.0000i
>> i*z
ans =
-2.0000 + 0000i
При вводе комплексного значения между мнимой частью и мнимой единицей оператор умножения можно не ставить. По умолчанию для отображения мнимой единицы используется символ «i» (хотя может вводиться как «j»). Существует ряд функций, облегчающих работу с комплексными числами. Среди них имеет смысл выделить функции «real()» и «imag()» для вычисления действительной и мнимой частей комплексного числа соответственно, функцию «conj()» для вычисления комплексно сопряженного числа, а также функцию «complex()», принимающую два аргумента (действительная и мнимая части), на основании которых создается комплексное число.
>> complex(3,-2)
ans =
3.0000 - 2.0000i
>> conj(ans)
ans =
3.0000 + 2.0000i
>> real(ans)
ans =
3
>> imag(2-4i)
ans =
-4
Комплексными могут быть не только скалярные величины, но и матрицы.
Рисунок 11
5. Оператор создания интервала значений
Достаточно популярным и часто используемым в Matlab является оператор "двоеточие", то есть «:». Существует несколько вариантов его использования. Рассмотрим самые общие. Для создания вектора-строки со значениями, равно распределенными в некотором интервале, оператор используют в следующем формате: «нижняя граница диапазона, оператор (то есть «:») и верхняя граница диапазона» - например: «x=a:b». При этом создается вектор-строка (для приведенной команды вектор записывается в переменную «x»). Первый элемент вектора равен нижней границе указанного диапазона (значение «a»). Шаг дискретности изменения значений элементов вектора равен единице. Значение последнего элемента определяется верхней границей указанного диапазона (в данном случае «b»). Так, командой «x=1:10» создается вектор-строка со значениями «1, 2, 3 и т.д. до 10» включительно (жирным шрифтом выделен ввод пользователя):
>> x=1:10
x =
1 2 3 4 5 6 7 8 9 10
Рисунок 12
Если нужно создать вектор-строку с последовательностью значений и шагом дискретности, отличным от единицы, используют тот же оператор "двоеточие" (то есть «:»), но в несколько ином формате: «указывается нижняя граница диапазона значений, оператор "двоеточие", шаг дискретности, снова оператор "двоеточие", и верхняя граница диапазона» - например: «y=a:m:b». Формируется вектор-строка с первым значением - нижней границей диапазона (для приведенной команды это «a»). Каждый следующий элемент получается прибавлением к предыдущему величины, указанной в качеств шага дискретности (в данном случае «m»). Значения элементов сформированного массива не превышают верхнюю границу диапазона (то есть «b»). Пример такого использования оператора "двоеточие" приведен ниже (отрывок кода из рабочей области, жирным выделен ввод пользователя):
>> y=1:0.7:10
y =
Columns 1 through 8
0000 7000 2.4000 3.1000 3.8000 4.5000 5.2000 5.9000
Columns 9 through 13
6.6000 7.3000 8.0000 8.7000 9.4000
Рисунок 13
В данном случае создается вектор-строка y со значениями от 1 до 10 с шагом дискретности 0.7 - значения 0, 7, 2.4 и т.д. до 9.4 включительно (следующее гипотетическое значение в последовательности 10.1 превышает верхнюю границу диапазона 10, поэтому в формируемый вектор оно не входит). Сообщения «Columns 1 through 8» и «Columns 9 through 13» появляются автоматически как следствие того, что результат выполнения команды «y=1:0.7:10» в одну строку не помещается, поэтому выполняется перенос части вектора-результата в следующую строку. Данные сообщения призваны облегчить процесс индексной идентификации элементов.
Второй способ использования оператора "двоеточие" - при индексировании элементов. Как и в предыдущем случае, существует несколько форматов, или правил, использования оператора "двоеточие" в индексах.
Например, если оператор "двоеточие" используется в формате «A(i:j,k)»,
то в качестве результата возвращается вектор-столбец, который формируется из элементов матрицы «A», находящихся в «k-м» столбце с «i-й» по «j-ю» строку включительно. Ссылка в формате «A(:,k)» возвращает в качестве значения весь «k-й» столбец матрицы «A».
Можно использовать оператор "двоеточие" при указании сразу двух индексов. Например, командой «A(i:j,m:n)» возвращается подматрица, состоящая их строк с «i-й» по «j-ю» и одновременно столбцов с «m-го» по «n-й».
Рассмотрим некоторые примеры использования оператора "двоеточие".
В частности, исходная матрица «A» вводится командой:
A=[1 2 3 4;5 6 7 8;9 10 11 12;13 14 15 16]
A =
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
В следующих командах оператор "двоеточие" используется для извлечения подматриц из исходной матрицы «A»:
>> A(1:3,2)
ans =
2
6
10
>> A(3,2:4)
ans =
10 11 12
>> A(3:4,1:2)
ans =
9 10
13 14
Например, командой «A(1:3,2)» возвращается вектор-столбец, составленный из элементов с первой по третью строку во втором столбце матрицы «A». Командой «A(3,2:4)» возвращается вектор-строка, который составлен из элементов третьей строки со второго по четвертый столбец включительно матрицы «A». Наконец, командой «A(3:4,1:2)» возвращается подматрица матрицы «A», верхний левый элемент которой имеет индексы «(3,1)», а правый нижний элемент имеет индексы «(4,2)».
6. Встроенные математические функции
В Matlab по умолчанию доступно достаточно большое количество встроенных функций. Ядро их составляют математические функции, которые на практике используются сравнительно часто. Некоторые из них перечислены в таблице 5.
Таблица 5 Некоторые математические функции Matlab.
Функция |
Описание |
|
abs () |
Модуль числа (в том числе и комплексного), указанного аргументом функции. |
|
acos () |
Арккосинус для числа, указанного аргументом функции. |
|
acosd () |
Арккосинус аргумента функции. Результат представлен в градусах. |
|
acot () |
Арккотангенс числа, указанного аргументом функции. |
|
acotd () |
Арккотангенс аргумента функции. Результат представлен в градусах. |
|
acsc () |
Арккосеканс числа, указанного аргументом функции. |
|
acscd () |
Арккосеканс аргумента функции. Результат представлен в градусах. |
|
asec () |
Арксеканс числа, указанного аргументом функции. |
|
asecd () |
Арксеканс аргумента функции. Результат представлен в градусах. |
|
asech () |
Арксеканс гиперболический от числа, указанного аргументом функции. |
|
asin () |
Арксинус от числа, указанного аргументом функции. |
|
asind () |
Арксинус аргумента функции. Результат представлен в градусах. |
|
asinh () |
Арксинус гиперболический от числа, указанного аргументом функции. |
|
atan () |
Арктангенс от числа, переданного аргументом функции. |
|
atan2 () |
У функции два аргумента (например, atan(y,x)). В качестве результата возвращается направление (угол в диапазоне значений от -р до р) на точку с соответствующими координатами (в данном случае, точка с координатами (y,x)). Если аргументы комплексные, их мнимые части игнорируются. |
|
atand () |
Арктангенс аргумента функции. Результат представлен в градусах. |
|
atanh () |
Арктангенс гиперболический от числа, переданного аргументом функции. |
|
ceil () |
Функция округления аргумента в направлении плюс бесконечности - округление выполняется до целого значения, которое не меньше, чем аргумент. |
|
cos () |
Косинус от числа, переданного аргументом функции. |
|
cosd () |
Косинус аргумента функции, указанного в градусах. |
|
cosh () |
Косинус гиперболический от числа, переданного аргументом функции. |
|
cot () |
Котангенс от числа, переданного аргументом функции. |
|
cotd () |
Котангенс аргумента функции, указанного в градусах. |
|
coth () |
Котангенс гиперболический от числа, переданного аргументом функции. |
|
csc () |
Косеканс от числа, переданного аргументом функции. |
|
cscd () |
Косеканс аргумента функции, указанного в градусах |
|
csch () |
Косеканс гиперболический от числа, переданного аргументом функции. |
|
exp () |
Экспонента: показательная функция с основанием-константой Эйлера и показателем степени, определяемым аргументом функции. |
|
expm1 () |
Командой вида expm1(x) с повышенной точностью вычисляется значение exp(x)- |
|
factor () |
Функцией возвращается вектор-строка с простыми множителями числа (с учетом их кратности), указанного аргументом функции. |
|
factorial () |
Функция для вычисления факториала числа, указанного аргументом функции. |
|
fix () |
Функция округления в направлении нуля. Результатом является число, получающееся округлением аргумента функции до ближайшего целого значения в направлении нуля. |
|
floor () |
Функция округления аргумента до ближайшего целого значения, которое не превышает аргумент, - округление в направлении минус бесконечности. |
|
gcd () |
Функцией возвращается наибольший общий делитель целых чисел или целочисленных массивов - аргументов функции. |
|
hypot () |
Корень квадратный из суммы квадратов модулей аргументов, переданных функции. |
|
idivide () |
У функции два аргумента. Результатом является целая часть отделения первого аргумента на второй. Можно также указать опцию - в одинарных скобках имя функции, с помощью которой выполняется округление. |
|
lcm () |
Функцией в качестве результата возвращается наименьшее общее кратное для целых чисел или целочисленных массивов - аргументов функции. |
|
log () |
Натуральный логарифм от числа, указанного аргументом функции. |
|
log10 () |
Логарифм по основанию 10 от числа, указанного аргументом функции. |
|
log1p () |
Командой вида log1p(x) с повышенной точностью вычисляется значение log(1+x). |
|
log2 () |
Логарифм по основанию 2 от числа, указанного аргументом функции. |
|
mod () |
Функцией возвращается остаток от деления значения первого аргумента функции на значение второго аргумента. Целая часть отделения определяется функцией froor(). |
|
nchoosek () |
Функцией в качестве значения возвращаются биномиальные коэффициенты. Если функция вызвана в формате nchoosek (n,k), то в качестве результата возвращается значение: , |
|
nextpow2 () |
Функцией в качестве значения возвращается ближайшее целое число - степень двойки, которое не меньше модуля аргумента функции. |
|
nthroot () |
Командой nthroot(x,n) в качестве значения возвращается корень порядка n (второй аргумент) из действительного числа или элементов действительного массива x (первый аргумент). |
|
pow2 () |
Функция может вызываться с одним или двумя аргументами. Если у функции один аргумент (массив) и функция вызывается в формате pow2(x), то в качестве результата возвращается массив степеней двойки, показатели степени определяются массивом x. Если функция вызывается с двумя аргументами в формате pow2 (x,y), то результатом является x.*2.^y. |
|
power () |
У функции два аргумента. Если аргументы скалярные, в качестве результата возвращается значение первого аргумента, возведенное в степень, определяемую вторым аргументом. В более общем случае в качестве результата выполнения команды power (A,B) возвращается 'A.^B'. |
|
primes () |
Функцией генерируется список простых чисел. Количество чисел указывается аргументом функции. |
|
rem () |
Функцией возвращается остаток от деления значения первого аргумента функции на значение второго аргумента. Целая часть отделения определяется функцией fix(). |
|
round () |
Функция округления аргумента до ближайшего целого значения. |
|
sec () |
Секанс от числа, указанного аргументом функции. |
|
secd () |
Секанс аргумента функции, указанного в градусах. |
|
sign () |
Знак числа, указанного аргументом функции (для положительных чисел - единица, для отрицательных чисел - минус единица, для нуля - ноль). |
|
sin () |
Синус от числа, указанного аргументом функции. |
|
sind () |
Синус аргумента функции, указанного в градусах. |
|
sqrt () |
Корень квадратный из числа, указанного аргументом функции. |
|
Функция |
Описание |
|
tan () |
Тангенс от числа, указанного аргументом функции. |
|
tand () |
Тангенс аргумента функции, указанного в градусах. |
Хотя большинство из представленных выше функций с математической точки зрения определены для скалярных величин, обычно они могут применяться и для аргументов-матриц. В этом случае действие функционального оператора применяется к каждому из элементов матрицы. Например, если переменная «A» является матрицей с элементами «A(i,j)», то в результате выполнения команды «exp(A)» получим матрицу того же ранга, а ее элементы вычисляются как «exp(A(i,j))». В некоторых случаях такой подход неприемлем. Существуют так называемые матричные функции, аргументами которых по определению являются матрицы (в основном квадратные). Результат этих функций вычисляется по алгоритмам, разработанным специально для матриц. Так, в Matlab есть встроенные матричные функции для экспоненты, логарифма и квадратного корня. Это соответственно функции «expm()», «logm()» и «sqrtm()». Например, если «A» - квадратная матрица, то функцией «expm(A)» вычисляется матричная экспонента. По определению это ряд:
exp (A) =
Результатом является матрица, которая вычисляется, как правило, на основе собственных чисел и собственных векторов матрицы «A». Матричный логарифм для аргумента-матрицы «A», вычисляемый инструкцией «logm(A)», представляет собой матрицу такую, что матричная экспонента от нее равна матрице «A». Другими словами, по определению если «B=logm(A)», то «expm(B)=A», и функция «logm()» является обратной к функции «expm()». Аналогично, в результате извлечения квадратного корня из матрицы «A» с помощью функции «sqrtm()» получаем матрицу, которая, будучи возведенной в квадрат, дает матрицу «A». Например, если «B=sqrtm(A)», то «B*B=A».
В Matlab также широко представлены специальные функции, некоторые их них приведены в таблице 6.
Таблица 6. Некоторые специальные математические функции Matlab.
Функция |
Описание |
|
airy () |
Функция Эйри. |
|
besselh () |
Функция Бесселя третьего рода (функция Ханкеля). |
|
besseli () |
Командой besseli(n,x) возвращается модифицированная функция Бесселя первого рода (индекса n). |
|
besselj () |
Командой besselj(n,x) возвращается функция Бесселя первого рода (индекса n), которая является одним из решений уравнения Бесселя. |
|
besselk () |
Командой besselk(n,x) возвращается модифицированная функция Бесселя второго рода (индекса n), которая является одним из решений модифицированного уравнения Бесселя. Для целых индексов соответствующее выражение рассчитывается как лимит. |
|
bessely () |
Командой besselj(n,x) возвращается функция Бесселя второго рода (индекса n), которая является одним из решений уравнения Бесселя. Для целых индексов соответствующее выражение рассчитывается как лимит. |
|
beta () |
Бета-функция Эйлера. |
|
betainc () |
Неполная бета-функция Эйлера. |
|
betaln () |
Логарифм натуральный от бета-функции Эйлера. Аргументами передаются аргументы бета-функции. |
|
ellipj () |
Эллиптическая функция Якоби. Если функция вызывается с двумя аргументами в формате ellipj(u,m), в качестве результата возвращаются значения (вектор) для функций sn(u) , cn(u) и dn(u). |
|
ellipke () |
Функция для вычисления полного эллиптического интеграла первого и второго рода (вектор значений). |
|
erf () |
Функция ошибок. |
|
erfc () |
Функция ошибок (остаточная). |
|
erfcx () |
Функция ошибок (остаточная нормированная). |
|
erfi nv () |
Обратная функция к функции ошибок erf(). |
|
erfcinv () |
Обратная функция к функции ошибок erfc(). |
|
expint () |
Интегральная экспонента. |
|
gamma () |
Гамма-функция Эйлера. |
|
gammainc () |
Неполная гамма-функция. |
|
gammaln () |
Логарифм натуральный от гамма-функции Эйлера. Аргументом функции передается аргумент гамма-функции. |
|
legendre () |
Функция для вычисления присоединенных полиномов Лежандра. В результате вызова функции в формате legendre(n,x) возвращается вектор-столбец значений присоединенных полиномов Лежандра m() Pn x для m= 0,1,2,...,n |
|
psi() |
Пси-полигамная функция. |
Как и в случае с базовыми математическими функциями, для большинства специальных функций аргументами могут указываться матрицы. В этом случае функция вычисляется для каждого из элементов матрицы.
7. Формат вывода числовых данных
В некоторых случаях приходится изменять способ, которым данные с результатом выполнения команд пользователя выводятся на экран. В первую очередь отметим, что можно вообще не отображать результат выполнения команды в командном окне. Для этого достаточно соответствующую команду закончить точкой с запятой (то есть «;»). В этом случае после нажатия клавиши «Enter» команда выполняется, но результат ее выполнения в командном окне не отображается. Такой режим особенно удобен в тех случаях, когда нужно выполнять громоздкие промежуточные расчеты, которые, с одной стороны, необходимы для получения конечного результата, а с другой - загромождают рабочее пространство. Поэтому разумный выход из такой ситуации - скрыть результат выполнения команды. Числовой формат вывода в явном виде задается с помощью инструкции «format». В команде определения формата вывода после ключевого слова «format» указывается применяемый формат. Допустимые форматы, с кратким их описанием, перечислены в таблице 7.
Таблица 7 Числовые форматы.
Формат |
Описание |
|
short |
Формат отображения числовых данных, при котором после десятичной точки отображается четыре цифры (формат данных с фиксированной точкой). Формат используется по умолчанию. |
|
long |
Числовой формат, при котором после десятичной точки отображается 7, 14 и 15 цифр в зависимости от типа числовых данных (формат данных с фиксированной точкой). |
|
short e |
Формат отображения числовых данных с мантиссой и показателем степени (формат данных с плавающей точкой), при котором после десятичной точки отображается четыре цифры. |
|
long e |
Числовой формат отображения с мантиссой и показателем степени (формат данных с плавающей точкой), при котором после десятичной точки отображается 7, 14 и 15 цифр в зависимости от типа числовых данных. |
|
short g |
В зависимости от значения, для отображения применяется либо формат с плавающей точкой, либо с фиксированной точкой. После десятичной запятой отображается четыре цифры. |
|
long g |
В зависимости от значения, для отображения применяется либо формат с плавающей точкой, либо с фиксированной точкой. После десятичной запятой отображается 7, 14 или 15 цифр. |
|
short eng |
Инженерный формат с четырьмя отображаемыми цифрами после десятичной точки и показателем степени, кратным трем. |
|
long eng |
Инженерный формат с 7, 14 или 15 отображаемыми цифрами после десятичной точки и показателем степени, кратным трем. |
|
+ |
Формат, при котором для положительных чисел отображается знак +, для отрицательных отображается знак -, а для нуля отображается пробел. |
|
bank |
Финансовый формат, при котором после десятичной точки отображается две цифры. |
|
hex |
Отображение чисел в шестнадцатеричной системе счисления. |
|
rat |
Отображение чисел в виде рациональной дроби. |
|
compact |
Режим отображения результатов вычислений в компактной форме, с уменьшенными интервалами между строками. |
|
loose |
Режим отображения результатов вычислений с увеличенными интервалами между строками. Используется по умолчанию. |
Ниже приведен пример отображения числа р в разных форматах (в командах использована встроенная константа «Matlab pi»):
>> pi
ans =
3.1416e+000
>> format long
>> pi
ans =
3.141592653589793
>> format long e
>> pi
ans =
3.141592653589793e+000
>> format long eng
>> pi
ans =
3.14159265358979e+000
>> format bank
>> pi
ans =
3.14
>> format rat
>> pi
ans =
355/113
>> format +
>> pi
ans =
+
Рисунок 14
Настройки формата вывода влияют только на способ отображения числовых значений, но никак не точность их представления. Поэтому главным критерием при выборе способа вывода данных может быть вопрос удобства. Есть одна функция, которая хотя напрямую и не относится к определению формата вывода числовых данных, ее использование значительно облегчает процесс взаимодействия пользователя с системой. Это функция «clc», которая позволяет очистить рабочее пространство от команд ввода и результатов их выполнения.
Практическая часть
1. Создать вектор-строку: начальный элемент равен - р, конечный р, шаг равен 0. Транспонировать строку в столбец.
2. Создать три вектор-строки из 5 элементов fi = [xn, xn-1, xn-2, xn-3, xn-4], где n = 5 для х = 2, 3, 4. Объединить эти строки в матрицу А (3 Ч 5).
3.Создать три вектор-столбца из 5 элементов арифметической прогрессии. Элемент арифметической прогрессии рассчитывается по формуле:
an =an-1 + d,
где «аn-1» - предыдущий элемент; «аn» - последующий.
Пять элементов вектора формируются, начиная с задания первого элемента «а» и c использованием шага арифметической прогрессии «d» для задания последующих элементов:
- для первого вектор-столбца: a = 2; d = 1:
- для второго вектор-столбца: a = 7; d = 2:
- для третьего вектор-столбца: a = 10; d =-2:
4. Объединить эти вектор-столбцы в матрицу В (5 Ч 3).
5. Транспонировать матрицу В и объединить с матрицей А в матрицу М(6 Ч 5).
6. Из матрицы A убрать вторую строку.
7. У матрицы В обнулить третью строку и убрать две последние строки.
8. Создать матрицу Н(2 Ч 2) путем выделения первых двух строк и столбцов матрицы М.
9. Создать с помощью функции repmat матрицу, состоящую из 2 Ч 3 матриц Н.
10. Создать матрицы размерностью 3 Ч 3:
C - единиц:
D - нулей:
F - равномерно распределенных случайных чисел:
E - нормально-распределенных случайных чисел:
11. Найти минимальный элемент в матрице равномерно-распределенных чисел размерностью 3 Ч 5, используя функцию «reshape».
1. Построить на отрезке [-1,-0.3]с шагом 0.005 графики огибающих функций.
Первый график вывеси красной сплошной линией, а второй - зеленой штрих-пунктирной линией с маркерными точками х. Затем на полученные графики наложить графики дискретных отсчетов этих же функций без затирания предыдущего результата.
2. Построить графики суточных температур; значения векторов времени и температуры за два дня приведены ниже.
Время - 0 4 7 9 10 11 12 13 13.5 14 14.5 15 16 17 18 20 22.
Температура 10 мая - 14 15 14 16 18 17 20 22 24 28 25 20 16 13 13 14 13. Температура 11 мая - 12 13 13 14 16 18 20 20 25 25 25 20 16 12 12 11 10.
Оформить графики заголовком 'All temperature', по оси «Х» подписать 'Time'; по оси «У» `Temperature'; в легенде - '10 may', '11 may' и разместить ее в нижнем левом углу.
3.Построить 3-хмерные графики функции:
z(x,y) = 4 sin(2рx) cos(5рy)(1 - x2 )y(1 ?y)
на прямоугольной области «x [?1], y [0.1]» с шагом 0.05 всеми способами, рассмотренными в лабораторной работе, размещая их в отдельных областях на одном окне. Названия функций, применяемых для построения графиков, включить в заголовки этих графиков.
Размещено на Allbest.ru
...Подобные документы
Язык и среда Matlab. Управляемая графика. Библиотека математических функций. Программный интерфейс. Использование операторов при составлении выражений. Работа в командной строке. Команды save, load и clear. Рабочий каталог. Сохранение рабочей сессии.
презентация [413,6 K], добавлен 14.11.2013Анализ возможностей пакета MATLAB и его расширений. Язык программирования системы. Исследование выпрямительного устройства. Моделирование трёхфазного трансформатора. Схема принципиальная регулируемого конвертора. Возможности гибкой цифровой модели.
презентация [5,1 M], добавлен 22.10.2013Характерные черты программирования на алгоритмическом языке СИ (алфавит, операции, специфика операторов, комментарии и другие элементы). Аналитический обзор и рассмотрение примеров программ, иллюстрирующих особенности применения основных операторов СИ.
презентация [251,0 K], добавлен 26.07.2013Изучение программирования в MATLAB. Использование команд Save и Load, операторы ввода и вывода для работы в командном окне. Отладка собственных программ. Интерфейс MATLAB. Отличия поздней версии MATLAB от более ранних. Средство Source Control Interface.
контрольная работа [43,0 K], добавлен 25.12.2011Разработка программного кода и алгоритма действий приложения "калькулятор". Использование функций в программе Matlab. Разработка кнопок, опций, интерфейса, оформление. Части кода Matlab и тестовый набор. Инструкция пользователя по работе программы.
курсовая работа [527,1 K], добавлен 27.09.2014Особенности работы в режиме командной строки в системе Matlab. Переменные и присваивание им значений. Комплексные числа и вычисления в системе Matlab. Вычисления с использованием функции sqrt. Неправильное использование функций с комплексными аргументами.
дипломная работа [1,9 M], добавлен 30.07.2015Методы численного интегрирования. Характеристика основных составляющих структурного программирования. Решение задания на языке высокого уровня Паскаль. Построение графического решения задачи в пакете Matlab. Решение задания на языке высокого уровня C.
курсовая работа [381,7 K], добавлен 10.05.2018Matlab - матричная лаборатория - система программирования для научно-технических расчетов. Особенности ввода векторов. Специальные матрицы, простые команды. Простые примеры, иллюстрирующие эффективность Matlab. Графический способ решения уравнений.
реферат [46,3 K], добавлен 05.01.2010Математическая основа параллельных вычислений. Свойства Parallel Computing Toolbox. Разработка параллельных приложений в Matlab. Примеры программирования параллельных задач. Вычисление определенного интеграла. Последовательное и параллельное перемножение.
курсовая работа [1,1 M], добавлен 15.12.2010Программа на языке Си как набор операторов разделенных между собой точкой с запятой, знакомство с особенностями структуры, назначение. Общая характеристика линейных и циклических вычислительных процессов. Рассмотрение основных видов операторов цикла.
презентация [139,7 K], добавлен 26.07.2013MATLAB – матричная лаборатория – наиболее развитая система программирования для научно-технических расчетов. Переменные и элементы xy-графики. Простые примеры, иллюстрирующие эффективность MATLAB. Системы линейных алгебраических уравнений и полиномы.
методичка [47,2 K], добавлен 26.01.2009Общие сведения о языке программирования Matlab. Функции работы с векторами и матрицами. Операторы условных переходов. Построение двумерных графиков. Построение гистограммы изображения. Функции его преобразования и зашумления, метрики определения качества.
лабораторная работа [853,5 K], добавлен 25.10.2015Исследование линейных динамических моделей в программном пакете Matlab и ознакомление с временными и частотными характеристиками систем автоматического управления. Поиск полюса и нуля передаточной функции с использованием команд pole, zero в Matlab.
лабораторная работа [53,1 K], добавлен 11.03.2012Характеристика базовых конструкций языков программирования. Изучение истории их развития и классификации. Определение основных понятий языков программирования. Описание основных операторов, которые используются в языках программирования высокого уровня.
курсовая работа [400,6 K], добавлен 10.11.2016Использование программного обеспечения MatLab для выполнения математических расчетов в области линейной алгебры, теории информации и обработки сигналов, автоматического и автоматизированного управления. Возможности стандартного интерфейса программы.
курсовая работа [178,7 K], добавлен 08.08.2011Побудова поверхней у математичному пакеті MATLAB по завданій системі рівнянь. Виконання розрахунків та графічних малюнків за допомогою функції surf, що є більш наглядною в порівнянні з plot3. Особливості інтерфейсу користувача даної задачі MATLAB.
лабораторная работа [1,9 M], добавлен 28.08.2015Возможности, визуализация и графические средства MATLAB. Устройство асинхронных двигателей. Математические модели асинхронной машины. Пакет визуального программирования Simulink. Преобразование уравнений асинхронной машины в неподвижной системе координат.
дипломная работа [2,1 M], добавлен 30.08.2010Ознакомление со структурой и основными свойствами языка программирования Лисп; рассмотрение его арифметических, логических и специальных функций. Характеристика отличительных особенностей диалектов языка - MacLISP, MuLISP, InterLISP и CommonLISP.
курсовая работа [364,1 K], добавлен 17.10.2011Процесс создания канального вокодера. Программа на языке Matlab, модель, созданная с помощью системы Matlab Simulink. Осуществление сжатия и восстановления речевого сигнала в реальном времени до уровня не более 4800 бит/с с удовлетворительным качеством.
курсовая работа [393,7 K], добавлен 12.03.2009Алфавит языка программирования C#. Лексемы языка программирования. Область действия переменных. Понятие классов и объектов. Структура программного модуля на С#. Управление процессом повторения вычислений. Продолжение цикла и модификация параметра цикла.
курсовая работа [557,1 K], добавлен 10.03.2014