Арифметика произвольной точности
Функция digits служит для установки числа цифр в числах арифметики произвольной точности. Она используется в следующем виде:
digits — возвращает число значащих цифр в числах арифметики произвольной точности (по умолчанию 32);
Примеры:
» digits
Digits = 32
» vpa pi
ans =
3.1415926535897932384626433832795
» digits(6)
» pi
ans =
3.1416
Для проведения вычислений в арифметике произвольной точности служит функция vpa:
▪ R = vpa(S) — возвращает результат вычислений каждого элемента символьного массива S, используя арифметику произвольной точности с текущим числом цифр D, установленным функцией digits. Результат R имеет тип sym.
▪ vpa(S,D) — возвращает результат вычислений каждого элемента массива S, используя арифметику произвольной точности с количеством знаков чисел D.
Примеры:
vpa(exp(1),50)
ans =
2.7182818284590450907955982984276488423347473144531
Символьные операции с выражениями
1. Функция упрощения выражений – simplify
Функция simplify(S) поэлементно упрощает символьные выражения массива S. Если упрощение невозможно, то возвращается исходное выражение.
Примеры:
» syms a b x;
» V = [sin(х)^2 + соs(х)^2 log(a*b)]
» simplify(V)
ans =
[ 1, log(a*b)]
» simplify((a^2 - 2*a*b + b^2) / (a - b))
ans =
a – b
Дополнительные возможности упрощения обеспечивает функция simple.
2. Функция расширения (раскрытия скобок) выражений - expand
Функция expand(S) расширяет выражения, входящие в массив S. Рациональные выражения она раскладывает на простые дроби, полиномы — на полиномиальные разложения и т. д. Функция работает со многими алгебраическими и тригонометрическими функциями.
Примеры:
» syms a b x;
» S=[(x + 2)*(x + 3)*(x + 4) sin(2*x)];
» expand(S)
ans =
[ x^3 + 9*x^2 + 26*x + 24 , 2*sin(x)*cos(x)]
» expand(sin(a + b))
ans =
sin(a)*cos(b) + cos(a)*sin(b)
» expand((a + b)^:3)
ans =
а^3 + 3*а^2*Ь + 3*а*Ь^2 + Ь^3
3. Разложение выражения на простые множители – factor
Функция factor(S) поэлементно разлагает выражения вектора S на простые множители, а целые числа — на произведение простых чисел. Следующие примеры иллюстрируют применение функции:
» x=sym('х');
» factor(x^7-l)
ans =
( х – 1 )*( х^6 + х^5 + х^4 + х^3 + х^2 + х + 1 )
» factor(х^2 – х - 1)
ans =
хА2 – х - 1
» factor(sym('123456789'))
ans =
(3 )^2*(3803)*(3607)
4. Комплектование по степеням – collect
Функция co11ect(S,v) обеспечивает комплектование выражений в составе вектора или матрицы S по степеням переменной v.
5. Упрощение выражений – simple
Функция simple(S) выполняет различные упрощения для элементов массива S и выводит как промежуточные результаты, так и самый короткий конечный результат. В другой форме — [R, HOW] = simple(S) – промежуточные результаты не выводятся.
6. Приведение к рациональной форме – numden
Функция [N,D] = numden(A) преобразует каждый элемент массива А в рациональную форму в виде отношения двух неприводимых полиномов с целочисленными коэффициентами. При этом N и D — числители и знаменатели каждого преобразованного элемента массива.
Примеры:
» [n,d] = numden(sym(8/10))
n =
d =
» syms x y
» [ n, d ] = numden (x*y + y / x)
n =
y*(x^2 + 1)
d =
x
7. Обеспечение подстановок – subs
Одной из самых эффектных и часто используемых операций символьной математики является операция подстановки. Она реализуется функцией subs, имеющей ряд форм записи:
• subs(S) — заменяет в символьном выражении S все переменные их символьными значениями, которые берутся из вычисляемой функции или рабочей области системы MATLAB.
• subs(S,NEW) — заменяет все свободные символьные переменные в S из списка NEW.
• subs (S, OLD, NEW) — заменяет OLD на NEW в символьном выражении S. При одинаковых размеров массивов OLD и NEW замена идет поэлементно. Если S OLD — скаляры, a NEW — числовой массив или массив ячеек, то скаляры расширяются до массива результатов.
Пример:
» syms a b x у;
» subs(x - y, y, l)
ans =
x - l
» subs(sin(x) + cos(y), [x,y], [a,b])
ans =
sin(a)+cos(b)
8. Обращение функции – finverse
Часто возникает необходимость в задании функции, обратной по отношению к заданной функции f . Для этого в Symbolic имеется функция обращения inverse, которая задается в двух формах:
• g = finverse(f) — возвращает функцию, обратную к f. Считается, что f — функция одной переменной, например 'х'. Тогда g(f(x)) = х.
• g = finverse(f,v) — возвращает функцию, обратную к f, относительно заданной переменной v, так что g(f(v)) = v. Эта форма используется, если f — функция нескольких переменных.
Примеры:
» syms х
» finverse(sinh(x))
ans =
asnnh(x)
» finverse(expCx))
ans =
log(x)
9. Суперпозиция функций – compose
• compose(f, g) — возвращает f(g(y)), где f = f(x) и g = g(y). Независимые переменные х и у находятся с помощью функции findsym.