sign

Знак вещественного или комплексного числа

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

sign(z)

Описание

sign(z) возвращает знак номера z.

Математически, знак комплексного числа z ≠ 0 задан как. Для вещественных чисел это уменьшает до 1 или - 1.

sign() и sign(0.0) возвращают 0. Пользователь может переопределить это значение прямым присвоением, например:

unprotect(sign): sign(0) := 1: protect(sign):

Если типом z является DOM_INT, DOM_RAT или DOM_FLOAT, быстрая функция ядра используется, чтобы определить знак. Возвращаемое значение или - 1, 0, или 1.

Если знак выражения не может быть определен, символьный вызов функции возвращен. Реализованы определенные упрощения. В частности, упрощены числовые факторы символьных продуктов. Cf. Пример 2.

Функция expand переписывает знак продукта к продукту знаков. Например, expand(sign(x*y)) приводит к sign(x)*sign(y). Cf. Пример 2.

Для константных выражений, таких как PI - sqrt(2), exp(I*3) - I*sin(3) и т.д., внутренняя оценка с плавающей точкой используется, чтобы определить, представляет ли выражение ненулевое вещественное число. Если так, знак - 1 или 1 возвращен. Внутренне, приближение с плавающей точкой проверяется на надежность. Cf. Пример 4.

Взаимодействия среды

sign уважает свойства идентификаторов. Для действительных выражений результат может зависеть от значения переменной окружения DIGITS.

Примеры

Пример 1

Мы вычисляем знак различных вещественных чисел и выражений:

sign(-8/3), sign(3.2), sign(exp(3) - sqrt(2)*PI), sign(0)

Знак комплексного числа z является комплексным числом z/abs(z):

sign(0.5 + 1.1*I), sign(2 + 3*I), sign(exp(sin(2 + 3*I)))

Пример 2

sign приводит к символьному, все же упрощенному, вызов функции, если идентификаторы включены:

sign(x), sign(2*x*y), sign(2*x + y),  sign(PI*exp(2 + y))

В особых случаях функция expand может обеспечить дальнейшие упрощения:

expand(sign(2*x*y)), expand(sign(PI*exp(2 + y)))

Пример 3

sign уважает свойства идентификаторов:

sign(x + PI)

assume(x > -3): sign(x + PI)

unassume(x):

Пример 4

Следующее рациональное число аппроксимирует π приблизительно к 30 цифрам:

p:= 39269908169872415480783042291/12500000000000000000000000000:

Со стандартной точностью DIGITS =10 тест плавающий в sign не дает решающий ответ, больше ли p или меньше, чем π:

float(PI - p)

Этот результат подвергается числовому округлению и не позволяет заключение на знаке номера PI - p. Тест плавающий в sign проверяет надежность приближений с плавающей точкой. В этом случае никакой упрощенный результат не возвращен:

sign(PI - p)

С увеличенным DIGITS может быть принято надежное решение:

DIGITS := 30: sign(PI - p)

delete p, DIGITS:

Возвращаемые значения

Арифметическое выражение.

Перегруженный

z

Смотрите также

Функции MuPAD