Эта тема показывает, как Symbolic Math Toolbox™ преобразовывает числа в символьную форму. Для обзора символьной и числовой арифметики смотрите, Выбирают Symbolic or Numeric Arithmetic.
Чтобы преобразовать числовой вход в символьную форму, используйте команду 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, пи, и.
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)