ドキュメンテーション

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

assumeAlso

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

構文

  • assumeAlso(condition)
  • assumeAlso(expr,set)

説明

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: The solutions are valid under the following
conditions: x <= 1; x == 1. To include parameters and
conditions in the solution, specify the 'ReturnConditions'
option. 
> In solve>warnIfParams at 514
  In solve at 356 
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 =
[ in(n, 'integer'), 0 < n]

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

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 =
[ 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'),...
 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]
 

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

assume(A,'clear')

矛盾する仮定

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

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

syms y
assume(y,'real')
assumeAlso(y == i)
Error using mupadmex
Error in MuPAD command: Inconsistent assumptions
detected. [property::_setgroup]

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

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

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

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

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

assume(y,'clear')

関連する例

入力引数

すべて折りたたむ

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

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

'integer''rational''real'、または 'positive' のいずれかの文字列で指定される整数、有理数、実数または正の数値の集合。

詳細

すべて折りたたむ

ヒント

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

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

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

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

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

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

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

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

参考

| | | | | | | | |

R2012a で導入

この情報は役に立ちましたか?