floatПреобразуйте в число с плавающей запятой
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
float(object) float(object,n)
float(object) преобразует объектные или числовые подвыражения объекта к числам с плавающей запятой.
float преобразует числа и числовые выражения, такие как sqrt(sin(2)) или sqrt(3) + sin(PI/17)*I к действительным или комплексным числам с плавающей запятой типа DOM_FLOAT или DOM_COMPLEX, соответственно. Если символьные объекты кроме специальных констант, CATALAN, E, ЭЙЛЕР и PI существуют, только числовые подвыражения, преобразованы в плавания. В частности, идентификаторы и индексированные идентификаторы возвращены неизменные float. См. пример 1.
float вызов сопоставлен рекурсивно с операндами выражения. Когда числа (или константы, такие как PI) найдены, они преобразованы в приближения с плавающей точкой. Количество значительных десятичных цифр дано переменной окружения DIGITS; значение по умолчанию равняется 10. Конвертированные операнды объединены арифметическими операциями или вызовами функции согласно структуре выражения. Например, вызов, такой как float(PI - 314/100) может рассматриваться как последовательность числовых операций:
t1 := float(PI); t2 := float(314/100); result := t1 - t2
float может подвергнуться передаче ошибок. См. Пример 2.Второй аргумент n в float(object, n) временно перезаписывает текущую установку для DIGITS. Смотрите пример 3.
float автоматически сопоставлен с элементами наборов и списков. Однако это автоматически не сопоставлено с записями массивов, hfarrays, таблиц и операндов вызовов функции. Используйте map(object, float) для быстрого преобразования с плавающей точкой всех записей массива или таблицы. Используйте mapcoeffs(p, float) преобразовывать коэффициенты полиномиального p из типа DOM_POLY. Управлять поведением float на вызове функции используйте функциональную среду, обеспечивающую "float" паз. См. Пример 4 и Пример 5.
Настройки Pref::floatFormat и Pref::trailingZeroes может использоваться, чтобы изменить экран выход чисел с плавающей запятой.
Рациональные приближения чисел с плавающей запятой могут быть вычислены функциональным numeric::rationalize.
MuPAD® специальные функции, такие как sinexpbesselj и т.д. реализованы как функциональные среды. Через перегрузку, "float" припишите (паз) функциональной среды f, Скажем, называется для оценки плавающей символьных вызовов f(x1, x2, ...) содержавшийся в выражении.
Пользователь может расширить функциональность системной функции float к его собственным функциям. Для этого, функционального f быть обработанным должно быть объявлено как функциональная среда через funcenv. "float" атрибут должен быть записан, который вызван системной функцией float в форме f::float(x1, x2, ...) каждый раз, когда символьный вызов f(x1, x2, ...) в выражении найден. Аргументы передали f::float не преобразованы в плавания, ни один не возвращаемое значение паза, удовлетворяющего дальнейшей оценке плавающей. Таким образом, преобразование плавающее символьных вызовов функций f полностью определяется стандартной программой паза. См. Пример 5.
Также доменный d, Скажем, написанный в языке MuPAD, может перегрузить float задавать оценку плавающую его элементов. Паз d::float должен быть реализован. Если элемент x, Скажем, этой области подвергается оценке плавающей, паз называется в форме d::float(x). Что касается функциональных сред, никакого x ни возвращаемое значение паза подвергается дальнейшей оценке плавающей.
Если область не имеет "float" паз, системная функция float возвращает его неизменные элементы.
Обратите внимание на то, что числа с плавающей запятой MuPAD ограничиваются в размере. На архитектуре на 32 бита происходит переполнение/потеря значимости, если с количествами абсолютного размера, большего/меньшего, чем о
, сталкиваются. На архитектуре на 64 бита пределы о
.
См. документацию для DIGITS для получения дополнительной информации.
Функция чувствительна к переменной окружения DIGITS который определяет числовую рабочую точность.
Мы преобразуем некоторые числа и числовые выражения к плаваниям:
float(17), float(PI/7 + I/4), float(4^(1/3) + sin(7))
![]()
float чувствительно к DIGITS:
DIGITS := 20: float(17), float(PI/7 + I/4), float(4^(1/3) + sin(7))
![]()
Символьные объекты, такие как идентификаторы возвращены неизменные:
DIGITS := 10: float(2*x + sin(3))
![]()
Мы иллюстрируем передачу ошибок в численных расчетах. Следующее рациональное число аппроксимирует exp(2) к 17 десятичным цифрам:
r := 738905609893065023/100000000000000000:
Следующий float вызовите преобразует exp(2) и r к приближениям с плавающей точкой. Ошибки приближения распространяют и усилены в следующем числовом выражении:
DIGITS := 10: float(10^20*(r - exp(2)))
![]()
Ни одна из цифр в этом результате не правильна! Чтобы получить лучший результат, используйте второй аргумент в float увеличивать число цифр для этого конкретного вызова функции:
float(10^20*(r - exp(2)), 20)
![]()
Для дальнейших вычислений освободите переменную r:
delete r:
Второй аргумент в float позволяет вам временно перезаписать текущую установку для количества значительных десятичных цифр. Например, вычислите следующее выражение с 10 и 30 значительными десятичными цифрами. Отобразить числа с плавающей запятой с количеством цифр, что MuPAD использовался для расчета их, устанавливало значение Pref::outputDigits к InternalPrecision:
Pref::outputDigits(InternalPrecision):
Вычислите следующее выражение со значением по умолчанию DIGITS = 10:
x := 10^8: float(sqrt(x^2 + 1) - x)
![]()
Вычислите то же выражение с 30 значительными десятичными цифрами:
float(sqrt(x^2 + 1) - x, 30)
![]()
После оценки float, MuPAD восстанавливает значение DIGITS:
DIGITS
![]()
Для дальнейших вычислений восстановите выходную точность и освободите переменную x:
Pref::outputDigits(UseDigits): delete x
float сопоставлен с элементами наборов и списков:
float([PI, 1/7, [1/4, 2], {sin(1), 7/2}])![]()
Для таблиц и массивов, функционального map должен использоваться, чтобы передать float к записям:
T := table("a" = 4/3, 3 = PI):
float(T), map(T, float)
A := array(1..2, [1/7, PI]): float(A), map(A, float)
![]()
Матричные области перегружают функциональный float. В отличие от массивов, float работает непосредственно над матрицей:
float(matrix(A))
![]()
Используйте mapcoeffs применять float к коэффициентам полинома, сгенерированного poly:
p := poly(9/4*x^2 + PI, [x]): float(p), mapcoeffs(p, float)

delete A, T, p:
Мы демонстрируем перегрузку float функциональной средой. Следующий функциональный Sin должен представлять синусоидальную функцию. В отличие от sin функция в MuPAD, Sin измеряет его аргумент в градусах, а не в радианах (т.е. Sin(x) = sin(PI/180*x)). Единственная функциональность Sin должен произвести значения с плавающей точкой, если аргумент является действительным плаванием. Для всех других видов аргументов состоит в том, чтобы быть возвращен символьный вызов функции:
Sin := proc(x)
begin
if domtype(x) = DOM_FLOAT then
return(Sin::float(x));
else return(procname(args()))
end_if;
end_proc:Функция превращена в функциональную среду через funcenv:
Sin := funcenv(Sin):
Наконец, "float" атрибут реализован. Если аргумент может быть преобразован в действительное число с плавающей запятой, к результату с плавающей точкой приводят. Во всех других случаях, символьном вызове Sin возвращен:
Sin::float := proc(x)
begin
x := float(x):
if domtype(x) = DOM_FLOAT then
return(float(sin(PI/180*x)));
else return(Sin(x))
end_if;
end_proc:Теперь пустите в ход оценку произвольных выражений, включающих Sin возможно:
Sin(x), Sin(x + 0.3), Sin(120)
![]()
Sin(120.0), float(Sin(120)), float(Sin(x + 120))
![]()
float(sqrt(2) + Sin(120 + sqrt(3)))
![]()
delete Sin:
|
Любой объект MuPAD |
|
Целое число, больше, чем 1 |
Число с плавающей точкой типа DOM_FLOAT или DOM_COMPLEX, или входной объект с точными числами, замененными числами с плавающей запятой.
object