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
.
Мы вычисляем знак различных вещественных чисел и выражений:
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)))
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)))
sign
уважает свойства идентификаторов:
sign(x + PI)
assume(x > -3): sign(x + PI)
unassume(x):
Следующее рациональное число аппроксимирует π приблизительно к 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