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 который определяет числовую рабочую точность.

Примеры

Пример 1

Мы преобразуем некоторые числа и числовые выражения к плаваниям:

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))

Пример 2

Мы иллюстрируем передачу ошибок в численных расчетах. Следующее рациональное число аппроксимирует 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:

Пример 3

Второй аргумент в 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

Пример 4

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:

Пример 5

Мы демонстрируем перегрузку 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:

Параметры

object

Любой объект MuPAD

n

Целое число, больше, чем 1

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

Число с плавающей точкой типа DOM_FLOAT или DOM_COMPLEX, или входной объект с точными числами, замененными числами с плавающей запятой.

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

object

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

Функции MuPAD