Main Content

ライブ エディターでのシンボリックな結果の出力表示形式の変更

この例では、関数symprefを使用して、MATLAB® ライブ エディターでのシンボリックな結果の出力表示形式を変更する方法を示します。この関数の使用方法を示すために、この例では 3 次多項式を使用します。

3 次多項式の出力順序の変更

1 つの変数と 3 つの係数で構成される 3 次多項式を作成します。変数と係数は、symsコマンドを使用してシンボリック変数として定義します。

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

シンボリック基本設定は、連続する MATLAB セッションを通じて維持されます。すべてのシンボリック基本設定を既定値に戻します。多項式を展開し、既定の順序で出力を返します。

sympref('default');
poly = expand(f)
poly(x) = -a2x2+abx3-ab+b2x+c

既定の出力形式では、それぞれの単項式の項で異なるシンボリック変数を区別せずに、シンボリック多項式の項がアルファベット順に表示されます。

多項式の出力順序を変更するには、'PolynomialDisplayStyle' 設定を使用します。'ascend' オプションを指定すると、多項式の標準の数学的表記に基づいて、出力が昇順に並べ替えられます。ここでは、単項式の項の次数が最も高い変数 x が最後に表示されています。

sympref('PolynomialDisplayStyle','ascend');
poly
poly(x) = c-ab+b2x-a2x2+abx3

多項式の根の出力表示の変更

既定では、ライブ スクリプトのシンボリックな結果は標準の数学的表記で整形され、長い式は略記され、行列は小かっこで設定されます。この出力表示形式はシンボリック基本設定を使用して変更できます。

solveを使用して、3 次多項式の根または零点を求めます。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

結果を略記せずに表示するには、'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))

シンボリック行列を大かっこで表示するには、'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)]

結果を整形された数学的表記でなく 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

結果を浮動小数点形式で表示するには、'FloatingPointOutput' 設定を true に設定します。このオプションでは、シンボリック数が小数点以下 4 桁の固定 10 進数形式で表示されます。クラス 'sym' の複素数の結果については、この設定は実数部と虚数部に個別に適用されます。

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

(0.45014.6427e-05-1.4904i4.6427e-05+1.4904i)

設定した表示設定は、シンボリックな結果の計算には影響しません。関数vpaを使用して、有効桁数 4 桁の浮動小数点精度でシンボリック数を近似できます。

vpaSols = vpa(numSols,4)
vpaSols = 

(0.4501-1.4904i1.4904i)

'default' オプションを指定して、'FloatingPointOutput' の既定値に戻します。

sympref('FloatingPointOutput','default');