sign
Знак вещественного или комплексного числа
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
sign(z
)
sign(z)
возвращает знак номера z
.
Математически, знак комплексного числа z ≠ 0 задан как. Для вещественных чисел это уменьшает до 1 или - 1.
sign()
и sign(0.0)
return 0
. Пользователь может переопределить это значение прямым присвоением, например:
unprotect(sign): sign(0) := 1: protect(sign):
Если тип z
DOM_INT
, DOM_RAT
, или DOM_FLOAT
, быстрая функция ядра используется, чтобы определить знак. Возвращаемое значение или - 1, 0, или 1.
Если знак выражения не может быть определен, символьный вызов функции возвращен. Реализованы определенные упрощения. В частности, упрощены числовые факторы символьных продуктов. См. Пример 2.
expand
функционируйте переписывает знак продукта к продукту знаков. Например, expand(sign(x*y))
урожаи sign(x)*sign(y)
. См. пример 2.
Для константных выражений, таких как PI - sqrt(2)
, exp(I*3) - I*sin(3)
и т.д. внутренняя оценка с плавающей точкой используется, чтобы определить, представляет ли выражение ненулевое вещественное число. Если так, знак - 1 или 1 возвращен. Внутренне, приближение с плавающей точкой проверяется на надежность. См. Пример 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