Арифметика произвольной точности

Функция 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.

Наши рекомендации