Измените формат вывода символьных результатов

В этом примере показано, как изменить формат вывода символьных результатов в Symbolic Math Toolbox™ при помощи sympref функция. Чтобы продемонстрировать использование функции, этот пример использует полином третьей степени.

Измените Выходной порядок полинома третьей степени

Создайте полином третьей степени, состоящий из одной переменной и трех коэффициентов. Задайте переменную и коэффициенты как символьные переменные при помощи syms команда.

syms x a b c
f(x) = (a*x^2 + b)*(b*x - a) + c
f(x) = c-ax2+ba-bxc - (a*x^2 + b) * (-b*x)

Символьные настройки сохраняются через следующие сеансы MATLAB®. Восстановите все символьные настройки к значениям по умолчанию. Расширьте полином и возвратите выходной параметр в порядке по умолчанию.

sympref('default');
poly = expand(f)
poly(x) = -a2x2+abx3-ab+b2x+c- a^2*x^2 + a*b*x^3 - a*b + b^2*x + c

Выходной формат по умолчанию отображает условия символьного полинома в алфавитном порядке, не отличая различные символьные переменные в каждом одночленном термине.

Чтобы изменить выходной порядок полинома, установите 'PolynomialDisplayStyle' настройка. 'ascend' опция сортирует выход в порядке по возрастанию на основе стандартного математического обозначения для полиномов. Здесь, переменная x с самым высоким порядком в одночленном термине отображен в последний раз.

sympref('PolynomialDisplayStyle','ascend');
poly
poly(x) = c-ab+b2x-a2x2+abx3c - a*b + b^2*x - a^2*x^2 + a*b*x^3

Измените Выходное отображение полиномиальных корней

По умолчанию символьные результаты в Live скриптах набираются в стандартном математическом обозначении, долгие выражения сокращены, и матрицы установлены в круглых скобках (круглые скобки). Можно изменить формат вывода путем установки символьных настроек.

Найдите корни или нули полинома третьей степени с помощью solve. В Symbolic Math Toolbox, root функция представляет корни полинома.

sols = solve(poly,x)
sols = 

(root(σ1,z,1)root(σ1,z,2)root(σ1,z,3))where  σ1=abz3-a2z2+b2z-ab+c[корень (a*b*z^3 - a^2*z^2 + b^2*z - a*b + c, z, 1); корень (a*b*z^3 - a^2*z^2 + b^2*z - a*b + c, z, 2); корень (a*b*z^3 - a^2*z^2 + b^2*z - a*b + c, z, 3)]

Чтобы отобразить результаты без того, чтобы быть сокращенным, установите 'AbbreviateOutput' настройка к false.

sympref('AbbreviateOutput',false);
sols
sols = 

(root(abz3-a2z2+b2z-ab+c,z,1)root(abz3-a2z2+b2z-ab+c,z,2)root(abz3-a2z2+b2z-ab+c,z,3))[корень (a*b*z^3 - a^2*z^2 + b^2*z - a*b + c, z, 1); корень (a*b*z^3 - a^2*z^2 + b^2*z - a*b + c, z, 2); корень (a*b*z^3 - a^2*z^2 + b^2*z - a*b + c, z, 3)]

Чтобы отобразить символьную матрицу с квадратными скобками, а не круглые скобки, устанавливают 'MatrixWithSquareBrackets' настройка к true.

sympref('MatrixWithSquareBrackets',true);
sols
sols = 

[root(abz3-a2z2+b2z-ab+c,z,1)root(abz3-a2z2+b2z-ab+c,z,2)root(abz3-a2z2+b2z-ab+c,z,3)][корень (a*b*z^3 - a^2*z^2 + b^2*z - a*b + c, z, 1); корень (a*b*z^3 - a^2*z^2 + b^2*z - a*b + c, z, 2); корень (a*b*z^3 - a^2*z^2 + b^2*z - a*b + c, z, 3)]

Чтобы отобразить результаты в символах ASCII вместо в набранном математическом обозначении, установите 'TypesetOutput' настройка к false.

sympref('TypesetOutput',false);
sols
 
sols =
 
root(a*b*z^3 - a^2*z^2 + b^2*z - a*b + c, z, 1)
root(a*b*z^3 - a^2*z^2 + b^2*z - a*b + c, z, 2)
root(a*b*z^3 - a^2*z^2 + b^2*z - a*b + c, z, 3)
 

Настройки вы устанавливаете использование sympref сохранитесь через свои текущие и будущие сеансы работы с MATLAB. Восстановите символьные настройки к значениям по умолчанию для следующего шага.

sympref('default');

Отобразите Вывод С плавающей точкой символьных чисел

Замените полиномиальные коэффициенты на символьные числа с помощью subs. Функция возвращает решения без любого приближения.

numSols = subs(sols,[a b c],[sqrt(2) pi 0.001])
numSols = 

(root(σ1,z,1)root(σ1,z,2)root(σ1,z,3))where  σ1=1000π2z3-2000z2+1000zπ2-1000π2+1[корень (1000*sym (пи) *sqrt (sym (2)) *z^3 - 2000*z^2 + 1000*z*sym (пи) ^2 - 1000*sym (пи) *sqrt (sym (2)) + 1, z, 1); корень (1000*sym (пи) *sqrt (sym (2)) *z^3 - 2000*z^2 + 1000*z*sym (пи) ^2 - 1000*sym (пи) *sqrt (sym (2)) + 1, z, 2); корень (1000*sym (пи) *sqrt (sym (2)) *z^3 - 2000*z^2 + 1000*z*sym (пи) ^2 - 1000*sym (пи) *sqrt (sym (2)) + 1, z, 3)]

Чтобы отобразить результаты в формате с плавающей точкой, установите 'FloatingPointOutput' настройка к true. Эта опция отображает символьные числа в фиксированном десятичном формате с 4 цифрами после десятичной точки. Для комплексного результата класса 'sym', эта настройка влияет на действительные и мнимые части независимо.

sympref('FloatingPointOutput',true);
numSols
numSols = 

(0.45014.6427e-05-1.4904i4.6427e-05+1.4904i)[vpa ('0.4501'); vpa ('4.6427e-05') - vpa ('1.4904i'); vpa ('4.6427e-05') + vpa ('1.4904i')]

Настройки отображения, которые вы устанавливаете, не влияют на расчет символьных результатов. Можно использовать vpa функционируйте, чтобы аппроксимировать символьные числа в точности с плавающей точкой с 4 значительными цифрами.

vpaSols = vpa(numSols,4)
vpaSols = 

(0.4501-1.4904i1.4904i)[vpa ('0.4501');-vpa ('1.4904i'); vpa ('1.4904i')]

Восстановите значение по умолчанию 'FloatingPointOutput' путем определения 'default' опция.

sympref('FloatingPointOutput','default');