このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
assumeAlso
シンボリック オブジェクトの仮定を追加
説明
例
関係式として指定する仮定
assume
を使用して仮定を設定します。さらに仮定を指定するには assumeAlso
を使用します。
x
と y
の両方が非負であると仮定して、次の方程式の解を求めます。
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
が非ゼロであり、y
と y*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')
入力引数
ヒント
assumeAlso
は、シンボリック変数に以前に設定されたすべての仮定を保持します。以前の仮定を新しい仮定で置き換えるには、assume
を使用します。仮定を追加するときには、新しい仮定が既存の仮定に矛盾しないことを必ず確認してください。既存の仮定を確認するには、
assumptions
を使用します。Symbolic Math Toolbox™ では矛盾する仮定の検出は保証されません。矛盾する仮定は、整合性がなく予期しない結果になる可能性があります。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
になります。ツールボックスではシンボリック関数についての仮定をサポートしていません。代わりに、シンボリック変数およびシンボリック式について仮定を実行してください。
仮定を 1 つずつ追加する代わりに、1 回の関数呼び出しで、複数の仮定を設定できます。複数の仮定を設定するには、
assume
を使用します。さらに、論理演算子and
、or
、xor
、not
、all
、any
またはそれらのショートカットを使用して、これらの仮定を組み合わせます。
バージョン履歴
R2012a で導入