В этом разделе показано, как Symbolic Math Toolbox™ преобразует числа в символьную форму. Обзор символьной и числовой арифметики см. в разделе «Выбор числовой или символьной арифметики».
Для преобразования числового входа в символьную форму используйте sym
команда. По умолчанию sym
возвращает рациональное приближение числового выражения.
t = 0.1; sym(t)
ans = 1/10
sym
определяет, что значение двойной точности 0.1
аппроксимирует точное символическое значение 1/10
. В целом, sym
пытается исправить округление входных входов с плавающей точкой, чтобы вернуть точную символьную форму. В частности, sym
исправляет ошибку округления в числовых входах, которые соответствуют формам <reservedrangesplaceholder5> / <reservedrangesplaceholder4>, <reservedrangesplaceholder3> π / q, (p / q)1/2, 2q, и 10q, где p и q являются скромными целыми числами.
Для этих форм демонстрируйте, что sym
преобразует входы с плавающей точкой в точную символьную форму. Во-первых, численно аппроксимируйте 1/7, pi, и .
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)