Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

シンボリック変数の仮定の使用

シンボリック変数に数学的な仮定や条件を設定して変数の領域と範囲を制限できます。この例では、仮定を設定、確認、消去する方法を示します。

既定の仮定

Symbolic Math Toolbox™ の既定の設定では、シンボリック変数は複素変数です。たとえば、z をシンボリック変数として作成すると、Symbolic Math Toolbox で z が複素変数であると仮定されます。

syms z

シンボリック変数が複素数として仮定されているかどうかは、assumptionsを使用して確認できます。z が複素数であれば、assumptions(z) は空のシンボリック オブジェクトを返します。

assumptions(z)
 
ans =
 
Empty sym: 1-by-0
 

仮定の設定

シンボリック変数に数学的な仮定または条件を設定するには、関数assumeを使用します。たとえば、変数 x が 2 より大きいと仮定します。

syms x
assume(x > 2)

assume は変数に対するすべての以前の仮定を新しい仮定で置き換えます。新しい仮定を既存の仮定に追加する場合は、assumeAlsoを使用します。たとえば、x は同時に整数であるという仮定を追加します。これで、変数 x は 2 より大きい整数になります。

assumeAlso(x,"integer")

assume および assumeAlso では、変数または式が実数、有理数、整数、正の数値のセットに属していることを記述できます。assume および assumeAlso を使用して、シンボリック変数または式に x > 2 のような数学的な条件を設定することもできます。

あるいは、sym または syms を使用してシンボリック変数を宣言するときに仮定を設定することもできます。これにより、実数、有理数、整数、正の数値のセットに仮定が制限されます。たとえば、sym を使用して、実数のシンボリック変数 a および b と正のシンボリック変数 c を作成します。

a = sym("a","real");
b = sym("b","real");
c = sym("c","positive");

仮定をもつこれらのシンボリック変数を syms を使用して作成することもできます。

syms a b real
syms c positive

既存の仮定の確認

シンボリック変数に設定されているすべての仮定を確認するには、変数名を入力引数に指定して、関数 assumptions を使用します。たとえば、次のコマンドは変数 x に現在設定されている仮定を返します。

assumptions(x)
ans = (xZ2<x)

MATLAB® ワークスペースのすべてのシンボリック変数に設定されているすべての仮定を確認するには、入力引数を指定せずに assumptions を使用します。

assumptions
ans = (aRbRxZ0<c2<x)

シンボリック オブジェクトおよびその仮定の削除

シンボリック オブジェクトとその仮定は別々に保存されます。シンボリック変数 x が実数であるという仮定を設定すると、実際にはシンボリック オブジェクト x とそのオブジェクトが実数であるという仮定が作成されます。オブジェクトは MATLAB ワークスペースに格納され、仮定はシンボリック エンジンに格納されます。clear を使用して MATLAB ワークスペースからシンボリック オブジェクトを削除しても、x が実数であるという仮定はシンボリック エンジンに残ります。

syms x
assume(x,"real")
clear x

sym を使用して変数を再作成する場合、既存の仮定が適用されます。syms を使用して変数を再作成する場合、その変数の既存の仮定は消去されます。

たとえば、x が実数であるという仮定により、多項式 x^2 + 1 == 0 は根をもたなくなります。

x = sym("x");
solve(x^2 + 1 == 0, x)
 
ans =
 
Empty sym: 0-by-1
 

シンボリック変数 x には、x が実数であるというシンボリック エンジンに格納された仮定がまだあるため、この多項式の複素根は解として表示されません。仮定を消去するには、syms を使用して変数を再作成します。

syms x

同じ多項方程式を再度解きます。

solve(x^2 + 1 == 0, x)
ans = 

(-ii)

シンボリック オブジェクトとその仮定の両方を削除する場合は、まず assume(x,"clear") を使用してシンボリック オブジェクトの仮定を消去してから、clear x を使用してオブジェクトを消去します。

assume(x,"clear")
clear x

シンボリック変数の消去の詳細については、仮定の消去とシンボリック エンジンのリセットを参照してください。

関連するトピック