assume
シンボリック オブジェクトの仮定を設定
説明
例
一般的な仮定
関連付けられた構文を使用して仮定を設定します。
シンボリック変数 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
論理演算子 and
、or
、xor
、not
またはそれらのショートカットを使用して、複数の仮定を同時に設定します。たとえば、-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
を作成します。set
を rational
として指定します。
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")
入力引数
ヒント
assume
はシンボリック変数に以前に設定された仮定を削除します。ある仮定を追加する際に以前の仮定も保持するには、assumeAlso
を使用します。clear
を使用して MATLAB® ワークスペースからシンボリック変数を削除するとき、その変数に設定したすべての仮定はシンボリック エンジン内に残ります。後で同じ名前の新しいシンボリック変数を宣言した場合は、これらの仮定は継承されます。シンボリック変数
var
に設定されたすべての仮定を消去するには、次のコマンドを使用します。assume(var,"clear")
MATLAB ワークスペースからすべてのオブジェクトを削除し、MATLAB ワークスペースに関連付けられた Symbolic Math Toolbox™ エンジンを閉じて、その仮定をすべて消去するには、次のコマンドを使用します。
clear all
MATLAB は、不等式の複素数を実数軸に対して投影します。
condition
が不等式の場合は、不等式の両辺が実数値を表していなければなりません。複素数体は順序体ではないため、複素数をもつ不等式は無効です (5 + i
が2 + 3*i
より大きいか小さいかは断定できません)。たとえば、x > i
はx > 0
になり、x <= 3 + 2*i
はx <= 3
になります。ツールボックスではシンボリック関数についての仮定をサポートしていません。代わりに、シンボリック変数およびシンボリック式に仮定を設定してください。
sym
とsyms
を使用して、新しいシンボリック変数を作成するときには、変数が実数、正の数、整数または有理数であるという仮定も設定できます。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 で導入