exponenta event banner

Преобразование числа в символ

В этом разделе показано, как Symbolic Math Toolbox™ преобразует числа в символьную форму. Обзор символьной и числовой арифметики см. в разделе Выбор числовой или символьной арифметики.

Для преобразования числового ввода в символьную форму используйте sym команда. По умолчанию sym возвращает рациональное приближение числового выражения.

t = 0.1;
sym(t)
ans =
1/10

sym определяет, что значение двойной точности 0.1 аппроксимирует точное символическое значение 1/10. В общем, sym пытается исправить ошибку округления во входах с плавающей запятой, чтобы вернуть точную символьную форму. В частности, sym корректирует ошибку округления в числовых входных данных, которые соответствуют формам p/q, pλ/q, (p/q) 1/2, 2q и 10q, где p и q - целые числа скромного размера.

Для этих форм, продемонстрировать, что sym преобразует входные данные с плавающей запятой в точную символьную форму. Во-первых, численно аппроксимировать 1/7, pi и 1/2.

N1 = 1/7
N2 = pi
N3 = 1/sqrt(2)
N1 =
    0.1429
N2 =
    3.1416
N3 =
    0.7071

Преобразование числовых аппроксимаций в точную символьную форму. sym исправляет ошибку округления.

S1 = sym(N1)
S2 = sym(N2)
S3 = sym(N3)
S1 =
1/7
S2 =
pi
S3 =
2^(1/2)/2

Чтобы вернуть ошибку между вводом и расчетной точной формой, используйте синтаксис sym(num,'e'). См. раздел Преобразование в рациональную символьную форму с термином ошибки.

Вы можете форсировать sym принять ввод как есть, поместив ввод в кавычки. Демонстрация этого поведения на предыдущем входе 0.142857142857143. sym функция не преобразует входные данные в 1/7.

sym('0.142857142857143')
ans =
0.142857142857143

При преобразовании больших чисел используйте кавычки для их точного представления. Продемонстрировать такое поведение путем сравнения sym(133333333333333333333) с sym('133333333333333333333').

sym(1333333333333333333)
sym('1333333333333333333')
ans =
1333333333333333248
ans =
1333333333333333333

Можно указать метод, используемый sym для преобразования чисел с плавающей запятой с помощью дополнительного второго аргумента, который может быть 'f', 'r', 'e', или 'd'. Флаг по умолчанию: 'r', для рациональной формы.

Преобразование в рациональную символическую форму

Преобразование входных данных в точную рациональную форму путем вызова sym с 'r' флаг. Это поведение по умолчанию при вызове sym без флагов.

sym(t, 'r')
ans =
1/10

Преобразование с использованием расширения с плавающей запятой

При звонке sym с флагом 'f', sym преобразует числа с двойной точностью и плавающей запятой в их числовое значение с помощью N*2^e, где N и e - экспонента и мантисса соответственно.

Новообращенный t с помощью расширения с плавающей запятой.

sym(t, 'f')
ans =
3602879701896397/36028797018963968

Преобразование в рациональную символьную форму с термином ошибки

При звонке sym с флагом 'e', sym возвращает рациональную форму t плюс ошибка между расчетным, точным значением для t и его представление с плавающей запятой. Эта ошибка выражается в терминах eps (относительная точность с плавающей запятой).

Новообращенный t в символическую форму. Возвращает ошибку между оценочной символьной формой и значением с плавающей запятой.

sym(t, 'e')
ans =
eps/40 + 1/10

Термин ошибки eps/40 - разница между sym('0.1') и sym(0.1).

Преобразование в десятичную форму

При звонке sym с флагом 'd', sym возвращает десятичное расширение входных данных. digits функция определяет количество используемых значащих цифр. Значение по умолчанию digits составляет 32.

sym(t,'d')
ans =
0.10000000000000000555111512312578

Изменение количества значащих цифр с помощью digits.

digitsOld = digits(7);
sym(t,'d')
ans =
0.1

Для дальнейших расчетов восстановите старое значение digits.

digits(digitsOld)