Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методички / TROPA V MATLAB_21.doc
Скачиваний:
154
Добавлен:
17.09.2018
Размер:
2.47 Mб
Скачать

1.6 Векторы и матрицы

Вектор – это упорядоченный перечень чисел. Вектор можно ввести с клавиатуры, набрав в командной строке перечень чисел, отделенных запятыми или пробелами, помещенный в квадратные скобки. Например:

V=[1 2 3]

V =

1 2 3

>> Z=[-2,0 1,4]

Z =

-2 0 1 4

Символ <:> (двоеточие) дает возможность простого создания векторов, каждый элемент которых отличается от предшествующего на постоянную величину (шаг или приращение). Шаг может быть и отрицательным. Например:

>> V=-0.1:0.3:1.4

V =

-0.1000 0.2000 0.5000 0.8000 1.1000 1.4000

Шаг, равный единице, можно не указывать:

>> X=-2:2

X =

-2 -1 0 1 2

Элементы вектора X можно выделить в виде X(1), X(2) и т. д. Например:

>> X(4)

ans =

1

Чтобы изменить форму вектора X со строчной на столбцовую, введем символ <′> (апостроф) после X:

>> X'

ans =

-2

-1

0

1

2

Вектор-столбец можно ввести с командной строки, но значения элементов в перечне должны отделятся знаком <;> (точка с запятой):

>> A=[1.3;5.4;6.9]

A =

1.3000

5.4000

6.9000

MATLAB способен эффективно выполнять операции с векторами. Например, чтобы возвести в куб элементы вектора X, введем следующую команду:

>> X.^3

ans =

-8 -1 0 1 8

Подробнее операции над векторами и матрицами будут рассмотрены ниже. Матрица – это прямоугольный набор чисел. Рассмотрим матрицу размером 2×3:

B=.

В MATLAB эту матрицу можно ввести с помощью следующей команды:

>> B=[1 3 0;-2 -2 5]

B =

1 3 0

-2 -2 5

Отметим, что элементы матрицы в строке отделяются друг от друга пробелами, а сами строки разделяются точкой с запятой. Элементы в строке можно также отделять друг от друга запятыми.

Элементы матрицы B можно выделить в виде B(1,1), B(2,3) и т. д. Например:

>> B(1,2)

ans =

3

Чтобы транспонировать матрицу B, введем символ <′> (апостроф) после B:

>> B'

ans =

1 -2

3 -2

0 5

Чтобы возвести в квадрат элементы матрицы B, достаточно ввести следующую команду:

>> B.^2

ans =

1 9 0

4 4 25

Векторы и матрицы – это массивы однородных данных, которые отличаются числом измерений. Под вектором в MATLAB понимается одномерный массив данных, а под матрицей – двумерный массив. Подробнее тема массивов будет рассмотрена ниже.

1.7 Встроенные функции. Функции, задаваемые пользователем

Основные элементарные математические функции приведены в табл. 1.1.

Таблица 1.1. Основные элементарные функции

exp

Экспонента

abs

модуль

log

натуральный логарифм

asin

арксинус

log10

десятичный логарифм

acos

арккосинус

sqrt

квадратный корень

atan

арктангенс

sin

Синус

sinh

гиперболический синус

cos

Косинус

cosh

гиперболический косинус

tan

Тангенс

tanh

гиперболический тангенс

cot

Котангенс

asinh

гиперболический арксинус

cec

Секанс

acosh

гиперболический арккосинус

csc

Косеканс

atanh

гиперболический арктангенс

Аргументами элементарных функций могут быть действительные либо комплексные числа, а также массивы. Если в качестве аргумента функции задан массив, результат представляет собой массив, полученный поэлементным вычислением функции для соответствующих элементов исходного массива. Аргументы тригонометрических функций задаются в радианах. Обратные к ним функции возвращают результат также в радианах. Примеры:

>> acosh(2)

ans =

1.3170

>> sin(1+i)

ans =

1.2985 + 0.6350i

>> exp(0:3)

ans =

1.0000 2.7183 7.3891 20.0855

Справочная информация по встроенным элементарным функциям содержится в разделе elfun справочной системы MATLAB. Способы получения этой информации подробно рассмотрены в Приложении 1. В разделе elfun содержится информация о функциях комплексного аргумента real, angle, abs и т. д. (см. раздел 1.5). В раздел elfun включены также функции округления и остатка от деления: round (округление до ближайшего целого), fix (усечение дробной части числа), floor (округление до меньшего целого), ceil (округление до большего целого), mod (остаток от деления с учетом знака), rem (остаток в смысле модульной арифметики), sign (знак числа). В этих случаях о комплексных аргументах не может быть и речи. Примеры:

>> round(-4.7)

ans =

-5

>> mod(7,2)

ans =

1

В MATLAB предусмотрены встроенные функции, связанные с целочисленной арифметикой: factor (разложение числа на простые множители), isprime (истина, если число простое), primes (формирование списка простых чисел), rat (приближение числа в виде отношения двух небольших целых чисел), lcm (наименьшее общее кратное), gcd (наибольший общий делитель). Примеры:

>> factor(123456789)

ans =

3 3 3607 3803

>> isprime(7)

ans =

1

>> primes(50)

ans =

2 3 5 7 11 13 17 19 23 29 31 37 41 43 47

>> gcd(1236,175992)

ans =

12

Есть также функции, предназначенные для решения стандартных задач комбинаторики: функция perms вычисляет число перестановок, а функция nchoosek – число сочетаний. Например, C124 – число сочетаний из 12 по 4, легко находится вызовом функции nchoosek:

>> nchoosek(12,4)

ans =

495

Информация по функциям целочисленной арифметики содержится в разделе specfun справочной системы MATLAB. В разделе specfun находится также информация по встроенным специальным математическим функциям (функциям Бесселя besselj, bessely, полиномам Лежандра legendre и др.).

MATLAB включает побитовые функции преобразования систем счисления: dec2bin (перевод десятичного числа в двоичное); bin2dec (перевод двоичного числа в десятичное); dec2hex (перевод десятичного числа в шестнадцатеричное); hex2dec (перевод шестнадцатеричного числа в десятичное). Примеры:

>> dec2bin(11)

ans =

1011

>> bin2dec('1011')

ans =

11

>> dec2hex(350)

ans =

15E

>> hex2dec('15E')

ans =

350

Информация по этим функциям находится в разделе strfun справочной системы MATLAB.

И, наконец, есть функции для работы со значениями даты и времени. Чтобы отобразить календарь какого - либо года и месяца, нужно задать функцию calendar с двумя аргументами. Например, отобразим календарь на март 2008 года:

>> calendar(2008,3)

Mar 2008

S M Tu W Th F S

0 0 0 0 0 0 1

2 3 4 5 6 7 8

9 10 11 12 13 14 15

16 17 18 19 20 21 22

23 24 25 26 27 28 29

30 31 0 0 0 0 0

Функция calendar без аргументов выводит в командное окно календарь на текущий месяц.

Пара функций tic и toc позволяет вычислить время выполнения системой MATLAB той или иной операции. Если в командной строке набрать

>> tic, Fun, toc

где Fun – команда или набор команд, то будет отображен не только результат выполнения команды Fun, но и приблизительное время ее выполнения (в секундах), которое зависит от быстродействия данного компьютера. Это время может несколько отличаться при повторном замере. Поэтому делают несколько измерений, а в качестве итоговой оценки используют среднее арифметическое значение затраченного времени. Пример:

>> tic, A=1:100; B=0.01:0.01:1;C=A*B', toc

C =

3.3835e+003

elapsed_time =

0.0100

Информация о функциях даты и времени содержится в разделе timefun справочной системы MATLAB.

В MATLAB мы будем использовать как встроенные функции, так и свои собственные функции. Собственные функции можно задавать в отдельных файлах, которые называются M-файлами (см. Главу 3). M-файлы-функции полезны для задания функций, которые требуют несколько промежуточных команд для вычисления результата. Задание простых функций, которые можно выразить в одной строке, осуществляется с помощью команды inline.

В этом примере показано, как задается функция f(x) = с использованием команды inline:

>> f=inline('1/x^2','x')

f =

Inline function:

f(x) = 1/x^2

Вычислим эту функцию, например, при x = 2:

>> f(2)

ans =

0.2500

Как отмечалось ранее, большинство функций системы MATLAB могут оперировать как скалярами, так и массивами. Для того, чтобы заданная вами функция могла оперировать массивами, вставте точки перед математическими операторами <^>, <*>, </>. Векторизацию символьного выражения S осуществляет команда vectorize(S). Таким образом, чтобы получить векторизованную версию функции f(x) = , введем строку

>> f=inline(vectorize('1/x^2'),'x')

f =

Inline function:

f(x) = 1./x.^2

Теперь можно вычислить эту функцию для вектора:

>> f(1:5)

ans =

1.0000 0.2500 0.1111 0.0625 0.0400

Отметим, что можно также задавать собственные функции с двумя или более аргументами. Например:

>> g=inline(vectorize('1/(x^2+y^2)'),'x','y')

g =

Inline function:

g(x,y) = 1./(x.^2+y.^2)

Тогда выполнение выражения

>> g([1 2],[3 4])

ans =

0.1000 0.0500

дает значения функции в точках (1;2) и (3;4).

Соседние файлы в папке Методички