Числовой к символьному преобразованию

Эта тема показывает, как 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)