Main Content

assumeAlso

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

説明

assumeAlso(condition) は、conditioncondition のすべてのシンボリック変数について有効であることを記述します。これらのシンボリック変数に以前に設定されたすべての仮定を保持します。

assumeAlso(expr,set) は、以前に設定されたすべての仮定に加えて、exprset に属すことを記述します。

関係式として指定する仮定

assume を使用して仮定を設定します。さらに仮定を指定するには assumeAlso を使用します。

xy の両方が非負であると仮定して、次の方程式の解を求めます。

syms x y
assume(x >= 0 & y >= 0)
s = solve(x^2 + y^2 == 1, y)
Warning: Solutions are valid under the following
conditions: x <= 1;
x == 1.
 To include parameters and conditions in the
 solution, specify the 'ReturnConditions' value as
'true'. 
> In solve>warnIfParams (line 482)
  In solve (line 357) 
s =
  (1 - x)^(1/2)*(x + 1)^(1/2)
 -(1 - x)^(1/2)*(x + 1)^(1/2)

ソルバーは、解は両方とも特定の条件下でのみ有効であるという警告を出します。

x < 1 という仮定を追加します。以前の仮定を削除せずに新しい仮定を追加するには、assumeAlso を使用します。

assumeAlso(x < 1)

展開された仮定を使用して同じ方程式を解きます。

s = solve(x^2 + y^2 == 1, y)
s =
(1 - x)^(1/2)*(x + 1)^(1/2)

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

assume([x y],'clear')

集合として指定する仮定

syms を使用して仮定を設定します。さらに仮定を指定するには assumeAlso を使用します。

シンボリック変数 n を宣言するときには、n が正であるという仮定を設定します。

syms n positive

assumeAlso を使用して、同じ変数 n に対するその他の仮定を追加します。たとえば、n が整数であることも仮定します。

assumeAlso(n,'integer')

assumptions を使用して、変数 n に影響を与えるすべての仮定を返します。この場合、n は正の整数になります。

assumptions(n)
ans =
[ 0 < n, in(n, 'integer')]

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

assume(n,'clear')

行列要素についての仮定

各行列要素に対して同じ仮定を設定する近道として、行列に対する仮定を使用します。

自動生成された要素からなる 3 行 3 列のシンボリック行列 A を作成します。A のすべての要素が有理数であると仮定するために、set'rational' として指定します。

A = sym('A',[3 3],'rational')
A =
[ A1_1, A1_2, A1_3]
[ A2_1, A2_2, A2_3]
[ A3_1, A3_2, A3_3]

次に、A の各要素が 1 よりも大きいという仮定を追加します。

assumeAlso(A > 1)

assumptions を使用して、A の要素に影響を与える仮定を返します。

assumptions(A)
ans =
[ 1 < A1_1, 1 < A1_2, 1 < A1_3, 1 < A2_1, 1 < A2_2, 1 < A2_3,...
 1 < A3_1, 1 < A3_2, 1 < A3_3,...
 in(A1_1, 'rational'), in(A1_2, 'rational'), in(A1_3, 'rational'),...
 in(A2_1, 'rational'), in(A2_2, 'rational'), in(A2_3, 'rational'),...
 in(A3_1, 'rational'), in(A3_2, 'rational'), in(A3_3, 'rational')]

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

assume(A,'clear')

矛盾する仮定

仮定を追加するときには、新しい仮定が前の仮定と矛盾しないことを確認します。矛盾する仮定は、整合性がなく予期しない結果になる可能性があります。場合によっては、assumeAlso は矛盾する仮定を検出し、エラーを表示します。

矛盾する仮定を設定してみます。assumeAlso はエラーを返します。

syms y
assume(y,'real')
assumeAlso(y == i)
Error using mupadengine/feval (line 172)
Inconsistent assumptions.
Error in sym/assumeAlso (line 627)
                feval(symengine, 'assumeAlso', cond);

ただし、assumeAlso では、矛盾する仮定の検出は保証されません。たとえば、y が非ゼロであり、yy*i の両方が実数であると仮定します。

syms y
assume(y ~= 0)
assumeAlso(y,'real')
assumeAlso(y*i,'real')

assumptions を使用して、変数 y に影響を与えるすべての仮定を返します。

assumptions(y)
ans =
[ in(y, 'real'), in(y*1i, 'real'), y ~= 0]

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

assume(y,'clear')

入力引数

すべて折りたたむ

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

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

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

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

ヒント

  • assumeAlso は、シンボリック変数に以前に設定されたすべての仮定を保持します。以前の仮定を新しい仮定で置き換えるには、assume を使用します。

  • 仮定を追加するときには、新しい仮定が既存の仮定に矛盾しないことを必ず確認してください。既存の仮定を確認するには、assumptions を使用します。Symbolic Math Toolbox™ では矛盾する仮定の検出は保証されません。矛盾する仮定は、整合性がなく予期しない結果になる可能性があります。

  • 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 になります。

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

  • 仮定を 1 つずつ追加する代わりに、1 回の関数呼び出しで、複数の仮定を設定できます。複数の仮定を設定するには、assume を使用します。さらに、論理演算子 andorxornotallany またはそれらのショートカットを使用して、これらの仮定を組み合わせます。

バージョン履歴

R2012a で導入