長い式の共通項の略記
長い式は、同一部分式のインスタンスをいくつか含むことがよくあります。こういった式は、部分式を略語で置き換えるとより短く見えます。sympref
を使用して、ライブ スクリプトのシンボリック式の略記された出力形式を使用するかどうかを指定できます。
たとえば、solve
を使用して方程式 を解きます。
syms x
sols = solve(sqrt(x) + 1/x == 1, x)
sols =
関数 solve
はシンボリック式として厳密解を返します。既定では、ライブ スクリプトは略記された出力の形式でシンボリック式を表示します。シンボリック設定では内部アルゴリズムを使用して略記する部分式を選択します。入れ子になった略語もこれに含まれます。たとえば、項 は として略記された部分式を含みます。シンボリック設定で、略記する部分式の選択を設定することはできません。
'AbbreviateOutput'
の設定を false
にすると、略記された出力の形式を無効にできます。返された結果は、長くて読みにくい式です。
sympref('AbbreviateOutput',false);
sols
sols =
sympref
を使用して設定した内容は、現在およびこれ以降の MATLAB® セッションを通じて維持されます。'default'
オプションを指定して、'AbbreviateOutput'
の既定値に戻します。
sympref('AbbreviateOutput','default');
subexpr
は長い式を短くするために使用できる別の関数です。この関数は、sympref
とは異なり、1 つの共通の部分式のみを略記し、入れ子になった略語はサポートしません。sympref
および subexpr
はまた、置き換える部分式を選択できません。
subexpr
の 2 番目の入力引数を使用して、共通の部分式を置き換える変数名を指定します。たとえば、sols
内の共通の部分式を変数 t
で置き換えます。
[sols1,t] = subexpr(sols,'t')
sols1 =
t =
sympref
および subexpr
は置き換える部分式を選択する方法を提供していませんが、それらの部分式をシンボリック変数として定義し、解を手動で書き換えることができます。
たとえば、新しいシンボリック変数 a1
と a2
を定義します。
syms a1 a2
a1
と a2
の値を代入する前に解 sols
を a1
と a2
で書き換えて、sols
の評価を回避します。
sols = [(1/2*a1 + 1/3 + sqrt(3)/2*a2*1i)^2;...
(1/2*a1 + 1/3 - sqrt(3)/2*a2*1i)^2]
sols =
a1
と a2
に、値 と をそれぞれ代入します。
a1 = t + 1/(9*t)
a1 =
a2 = t - 1/(9*t)
a2 =
subs
を使用して sols
を評価します。結果はこの例の最初の出力と同じになります。
sols_eval = subs(sols)
sols_eval =