Алгебраические и арифметические функции
В системе MATLAB определены следующие алгебраические и арифметические функции:
abs(X) — возвращает абсолютную величину для каждого числового элемента вектора X. Если X содержит комплексные числа, abs(X) вычисляет модуль каждого числа. Примеры:
abs(-5) = 5
abs(3+4i) =5
» abs([1 -2 1 3i 2+3i ])
ans =
1.0000 2.0000 1.0000 3.0000 3.6056
ехр(Х) — возвращает экспоненту для каждого элемента X. Для комплексного числа z = х + i*y функция exp(z) вычисляет комплексную экспоненту: exp(z)=exp(x)*(cos(y)+i*sin(y)).
Примеры:
» ехр([1 23])
ans =
2.7183 7.3891 20.0855
» exp(2+3i)
ans =
-7.3151 + 1.0427i
factor(n) — возвращает вектор-строку, содержащую простые множители числа п. Для массивов эта функция неприменима. Пример:
f = factor(221)
f =
13 17
G=gcd(A, В) — возвращает массив, содержащий наибольшие общие делители соответствующих элементов массивов целых чисел А и В. Функция gcd (0.0) возвращает значение 0, в остальных случаях возвращаемый массив G содержит положительные целые числа;
[G, С. D] = gcd(A, В) — возвращает массив наибольших общих делителей G и массивов С и D, которые удовлетворяют уравнению A(i) .*С(1) + B(i) .*D(i) = G(i). Они полезны для выполнения элементарных эрмитовых преобразований. Примеры:
» А=[2 6 9]:
» В=[2 3 3]:
» gcd(A.B)
ans =
2 3 3
» [G.C.D]=gcd(A.B)
G =
2 3 3
C =
0 0 0
D=
1 1 1
lcm(A.B) — возвращает наименьшие общие кратные для соответствующих парных элементов массивов А и В. Массивы А и В должны содержать положительные целые числа и иметь одинаковую размерность (любой из них может быть скаляром). Пример:
» А=[1 354];
» В=[2 462];
» lcm(А.В)
ans =
2 12 30 4
log (X) — возвращает натуральный логарифм элементов массива X. Для комплексного или отрицательного z, где z = х + y*i, вычисляется комплексный логарифм в виде log(z) = log(abs(z)) + i*atan2(y,x). Функция логарифма вычисляется для каждого элемента массива. Область определения функции включает комплексные и отрицательные числа, что способно привести к непредвиденным результатам при некорректном использовании. Пример:
» Х=[1.2 3.34 5 2.3];
» log(X)
ans=
-0.1823 1.2060 1.6094 0.8329
log2(X) — возвращает логарифм по основанию 2 элементов массива X;
[F,E] = log2(X) — возвращает массив действительных значений F и массив целых чисел Е. Элементы массива F обычно лежат в диапазоне 0.5 J abs(F) < 1. Для действительных X возвращаемые массивы F удовлетворяют уравнению вида X = F. *2. Е. Для нулевых значений X возвращаются F = 0 и Е = 0.
Пример:
» Х=[2 4.678 5;0.987 1 3];
» [F.E] = log2(Х)
F =
0.5000 0.5847 0.6250
0.9870 0.5000 0.7500
Е =
2 3 3
0 1 2
log10(X) — возвращает логарифм по основанию 10 для каждого элемента X. Область функции включает комплексные числа, что способно привести к непредвиденным результатам при некорректном использовании.
Пример:
» Х=[1.4 2.23 5.8 3];
» log10(X)
ans =
0.1461 0.3483 0.7634 0.4771
mod(x.y) — возвращает х mod у;
mod(X, Y) — возвращает остаток от деления X на Y (т. е., X - Y.*floor(X./Y)) для ненулевого Y, и X в противном случае. Если операнды X и Y имеют одинаковый знак, функция mod(X, Y) возвращает тот же результат, что mod(Х, Y). Однако (для положительных X и Y) mod(-x.y) = rem(-x,y)+y.
Примеры:
» М = mod(5.2)
М =
1
» mod(10.4)
ans =
2
pow2(Y) — возвращает массив X, где каждый элемент есть Z Y ;
pow2(F.E) — вычисляет Х=Р*2 £ для соответствующих элементов F и Е. Аргументы F и Е — массивы действительных и целых чисел соответственно.
Пример:
» d=pow2(pi/4,2)
d =
3.1416
р = nextpow2(A) — возвращает такой показатель степени р, что 2 Р i abs(A). Эта функция эффективно применяется для выполнения быстрого преобразования
Фурье. Если А не является скалярной величиной, то nextpowZ возвращает значение nextpow2(length(A)).
Пример:
» х=[2 678934567784324];
» length(x)
ans =
16
» р = nextpow2(x)
Р =
4
» х=4:
» р = nextpow2(x)
Р =
2
» Х=45;
» р = nextpow2(x)
Р =
6
Функция primes(n) возвращает вектор-строку простых чисел, меньших или равных n. Пример:
» р = primes(25)
Р =
2 3 5 7 11 13 17 19 23
[N,D] = rat(X) - возвращает массивы N и D, такие что N./D аппроксимирует X с точностью 1 .е-6*norm(Х(:),!). Даже при том, что все числа с плавающей запятой — рациональные числа, иногда желательно аппроксимировать их дробями, у которых числитель и знаменатель являются по возможности малыми целыми числами. Функция rat пытается это сделать;
[N.D] = rat(X.tol) — возвращает массивы N и D, такие что N./D аппроксимирует X с точностью tol.
rat (X) без выходных параметров просто выдает на экран массив цепных дробей;
rats(X.strlen) — возвращает ряд, полученный путем упрощенной рациональной аппроксимации элементов X. Аргумент strlen — длина возвращаемой строки. Функция возвращает знак «*», если полученное значение не может быть напечатано в строке, длина которой задана значением strlen. По умолчанию strlen=13. Тот же алгоритм аппроксимации используется в командном окне MATLAB при задании рационального формата вывода командой format rat.
Пример:
» [g.j]=rat(pi.le-10)
g=
312689
j =
99532
sqrt(A) — возвращает квадратный корень каждого элемента массива X. Для отрицательных и комплексных элементов X функция sqrt(X) вычисляет комплексный результат.
Пример:
» А=[25 21.23 55.8 3]:
» sqrt(A)
ans =
5.0 4.6076 7.4699 1.7321
На рис. 8.1 представлены графики ряда распространенных алгебраических функций. Эти графики получены в результате исполнения следующего файла-сценария:
syms x
subplot(2,2.1).ezplot(x*2.[-5 5]).xlabel( " ).grid on
subplot(2,2.2).ezplot(exp(x),[-2 2]),xlabel(").grid on
subplot(2.2.3).ezplot(log(x).[0 5]),grid on
subplot(2.2.4),ezplot(sqrt(x).[0 10]).grid on
Рис. 8.1. Графики ряда алгебраических функций
Графики дают наглядное представление о поведении представленных на них функций. Обратите внимание на применение графической команды ezplot из пакета Symbolic Math ToolBox (она отличается от обычной команды ezplot MATLAB отсутствием заключения символьных переменных в'), команды syms, также входящей в пакет Symbolic Math .Toolbox и задающей символьную переменную х, и несколько необычное применение команды xlabel (''). Эта команда с аргументом в виде пустой строки снимает вывод обозначения горизонтальной оси на двух верхних графиках. Если этого не сделать, то символ «х» окажется наложенным на наименование функций нижних графиков, которое команда ezpl ot выводит над графиками автоматически.