ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

assume

シンボリック オブジェクトの仮定を設定

説明

assume(condition) は、condition が有効であることを意味します。assume は加法的ではありません。代わりに、condition の変数に対する以前の仮定をすべて、自動的に消去します。

assume(expr,set) は、exprset に属することを意味します。assume は、expr の変数に対する以前の仮定を消去します。

assume(expr,'clear') は、expr の変数すべてに対し、すべての仮定を消去します。

一般的な仮定

関連付けられた構文を使用して仮定を設定します。

x についての仮定構文
実数assume(x,'real')
有理数assume(x,'rational')
正の数値assume(x,'positive')
正の整数assume(x,{'positive','integer'})
-1 より小さい、または 1 より大きいassume(x<-1 | x>1)
2 から 10 までの整数assume(in(x,'integer') & x>2 & x<10)
非整数assume(~in(z,'integer'))
0 と等しくないassume(x ~= 0)
偶数assume(x/2,'integer')
奇数assume((x-1)/2,'integer')
0 から 2πassume(x>0 & x<2*pi)
π の倍数assume(x/pi,'integer')

変数が偶数または奇数であると仮定する

x/2 が整数であると仮定することにより、x が偶数であると仮定します。(x-1)/2 が整数であると仮定することにより、x が奇数であると仮定します。

x が偶数であると仮定します。

syms x
assume(x/2,'integer')

solve を使用して、0 から 10 の間にあるすべての偶数を求めます。

solve(x>0,x<10,x)
ans =
 2
 4
 6
 8

x が奇数であると仮定します。assume は加法的ではなく、以前の仮定 in(x/2, 'integer') を自動的に消去します。

assume((x-1)/2,'integer')
solve(x>0,x<10,x)
ans =
 1
 3
 5
 7
 9

計算を続けるため、x に設定された仮定を消去します。

assume(x,'clear')

複数の仮定

assume コマンドを連続して使用しても複数の仮定は設定されません。むしろ、それぞれの assume コマンドは以前の仮定を削除し、新しい仮定を設定します。複数の仮定は、assumeAlso または & 演算子を使用して設定します。

assume を使用して、x > 5 を仮定したあと x < 10 を仮定します。2 つ目の設定時に assume が最初の仮定を消去したため、2 つ目の仮定だけが存在することを、assumptions を使用して確認します。

syms x
assume(x > 5)
assume(x < 10)
assumptions
ans =
x < 10

assumeAlso を使用して、2 つ目の仮定に加えて 1 つ目の仮定も仮定します。両方の仮定が存在することを確認します。

assumeAlso(x > 5)
assumptions
ans =
[ 5 < x, x < 10]

x の仮定を消去します。

assume(x,'clear')

& 演算子を使用して、両方の条件を仮定します。両方の仮定が存在することを確認します。

assume(x>5 & x<10)
assumptions
ans =
[ 5 < x, x < 10]

計算を続けるため、x に設定された仮定を消去します。

assume(x,'clear')

被積分関数についての仮定

シンボリック パラメーター a に対する仮定がある場合とない場合について、次の不定積分を計算します。

assume を使用して、a-1 と等しくないという仮定を設定します。

syms x a
assume(a ~= -1)

この積分を次のように計算します。

int(x^a,x)
ans =
x^(a + 1)/(a + 1)

次に、仮定を消去し、同じ積分を計算します。仮定がない場合、int は区分的結果を返します。

assume(a,'clear')
int(x^a, x)
ans =
piecewise(a == -1, log(x), a ~= -1, x^(a + 1)/(a + 1))

方程式のパラメーターと変数についての仮定

返される方程式の解を、仮定を使って特定の区間に制限します。

次の方程式を解きます。

syms x
eqn = x^5 - (565*x^4)/6 - (1159*x^3)/2 - (2311*x^2)/6 + (365*x)/2 + 250/3;
solve(eqn, x)
ans =
   -5
   -1
 -1/3
  1/2
  100

assume を使用して、解を区間 -1 <= x <= 1に制限します。

assume(-1 <= x <= 1)
solve(eqn, x)
ans =
   -1
 -1/3
  1/2

論理演算子 andorxornot またはそれらのショートカットを使用して、複数の仮定を同時に設定します。たとえば、-1 未満のすべての負の解と 1 より大きいすべての正の解は、次のようになります。

assume(x < -1 | x > 1)
solve(eqn, x)
ans =
  -5
 100

計算を続行するよう仮定を消去します。

assume(x,'clear')

単純化のために仮定を使用

適切な仮定を使用することによって、式を更に単純化できます。

simplify を使用して、式 sin(2*pi*n) を単純化してみます。関数 simplify は入力を単純化できず、入力をそのまま返します。

syms n
simplify(sin(2*n*pi))
ans =
sin(2*pi*n)

n が整数であると仮定します。今度は simplify は式を単純化します。

assume(n,'integer')
simplify(sin(2*n*pi))
ans =
0

計算を続行するよう仮定を消去します。

assume(n,'clear')

式についての仮定

シンボリック式に対して仮定を設定します。

変数だけではなく、式に対しても仮定を設定できます。たとえば、次の積分を計算します。

syms x
f = 1/abs(x^2 - 1);
int(f,x)
ans =
-atanh(x)/sign(x^2 - 1)

仮定 x2 – 1 > 0 を設定して、より単純な結果を得ます。

assume(x^2 - 1 > 0)
int(f,x)
ans =
-atanh(x)

計算を続行するよう仮定を消去します。

assume(x,'clear')

関係式を証明するための仮定

特定の条件で成立する関係式を、まずその条件を仮定し、次に関数 isAlways を使用することで証明します。

x が整数でない場合、sin(pi*x)0 にならないことを証明します。関数 isAlways は論理 1 (true) を返します。これは設定された仮定の下で、任意の x について条件が成り立つことを意味します。

syms x
assume(~in(x,'integer'))
isAlways(sin(pi*x) ~= 0)
ans =
  logical
   1

行列要素についての仮定

sym を使用して、行列のすべての要素に仮定を設定します。

自動生成された要素からなる 2 行 2 列のシンボリック行列 A を作成します。setrational として指定します。

A = sym('A',[2 2],'rational')
A =
[ A1_1, A1_2]
[ A2_1, A2_2]

assumptions を使用して、A の要素に設定された仮定を返します。

assumptions(A)
ans =
[ in(A1_1, 'rational'), in(A1_2, 'rational'),...
  in(A2_1, 'rational'), in(A2_2, 'rational')]

assume を使用して、行列のすべての要素に仮定を設定することもできます。ここで、A のすべての要素に正の有理数の値があると仮定します。仮定を文字ベクトルの cell {'positive','rational'} として設定します。

assume(A,{'positive','rational'})

assumptions を使用して、A の要素に設定された仮定を返します。

assumptions(A)
ans =
[ 0 < A1_1, 0 < A1_2, 0 < A2_1, 0 < A2_2,...
  in(A1_1, 'rational'), in(A1_2, 'rational'),...
  in(A2_1, 'rational'), in(A2_2, 'rational')]

計算を続行するよう仮定を消去します。

assume(A,'clear')

入力引数

すべて折りたたむ

仮定のステートメント。シンボリック式、方程式、関係式、あるいはシンボリック式、方程式、関係式のベクトルまたは行列として指定します。また、論理演算子 andorxornot またはそれらのショートカットを使用して、複数の仮定を結合することもできます。

仮定の設定対象となる式。シンボリック変数、式、ベクトルまたは行列として指定します。expr がベクトルか行列の場合、assume(expr,set) とすると expr の各要素が set に属するという仮定が設定されます。

一連の仮定。文字ベクトル、string 配列、または cell 配列として指定します。使用可能な仮定は 'integer''rational''real'、または 'positive' です。

文字ベクトルの string 配列または cell 配列を指定して、複数の仮定を結合することができます。たとえば、set["positive" "rational"] または {'positive','rational'} として指定することで、正の有理数の値を仮定します。

ヒント

  • assume はシンボリック変数に以前に設定された仮定を削除します。ある仮定を追加する際に以前の仮定も保持するには、assumeAlso を使用します。

  • clear を使用して MATLAB® ワークスペースからシンボリック変数を削除するとき、その変数に設定したすべての仮定はシンボリック エンジン内に残ります。後で同じ名前の新しいシンボリック変数を宣言した場合は、これらの仮定は継承されます。

  • シンボリック変数 var に設定されたすべての仮定を消去するには、次のコマンドを使用します。

    assume(var,'clear')
  • MATLAB ワークスペースからすべてのオブジェクトを削除し、MATLAB ワークスペースに関連付けられた Symbolic Math Toolbox® エンジンを閉じて、その仮定をすべて消去するには、次のコマンドを使用します。

    clear all
  • MATLAB は、不等式の複素数を実数軸に対して投影します。condition が不等式の場合は、不等式の両辺が実数値を表していなければなりません。複素数体は順序体ではないため、複素数をもつ不等式は無効です (5 + i2 + 3*i より大きいか小さいかは断定できません)。たとえば、x > ix > 0 になり、x <= 3 + 2*ix <= 3 になります。

  • ツールボックスではシンボリック関数についての仮定をサポートしていません。代わりに、シンボリック変数およびシンボリック式について仮定を実行してください。

  • symsyms を使用して、新しいシンボリック変数を作成するときには、変数が実数、正の数、整数または有理数であるという仮定も設定できます。

    a = sym('a','real');
    b = sym('b','rational');
    c = sym('c','positive');
    d = sym('d','positive');
    e = sym('e',{'positive','integer'});

    より効率的には

    syms a real
    syms b rational
    syms c d positive
    syms e positive integer

R2012a で導入