Main Content

logical

シンボリック方程式、シンボリック不等式、またはシンボリック条件が真となるかどうかの判定

説明

tf = logical(cond) は、cond 内の条件が真となるかどうかをチェックし、logical 値の配列を返します。仮定または数学的変換が必要な条件をテストするには、代わりに isAlways を使用します。

すべて折りたたむ

3/52/3 未満かどうかをチェックします。

tf = logical(sym(3)/5 < sym(2)/3)
tf = logical
   1

複数の条件が同時に真となるかどうかをチェックするには、論理演算子を使用して条件を組み合わせます。たとえば、12 未満かつ exp(log(x)) == x であるかどうかをチェックします。explog などの他の関数が使用されている条件を定義する場合、それらの関数は条件の定義時に評価される点に注意してください。

syms x
cond1 = 1 < 2 & exp(log(x)) == x
cond1 = x=x
tf = logical(cond1)
tf = logical
   1

複数の条件の場合、それらの条件をシンボリック配列として表すことができます。

cond2 = [1 < 2; exp(log(x)) == x]
cond2 = 

(1x=x)

tf = logical(cond2)
tf = 2x1 logical array

   1
   1

左辺がシンボリック型で右辺が数値型である不等式をテストします。両辺の式のデータ型には互換性があるため、この不等式は真です。

tf = logical(sym(11)/4 - sym(1)/2 > 2)
tf = logical
   1

logical は、int などの他の関数を含む方程式や不等式の有効性もチェックします。たとえば、積分を含む次の方程式の左辺は sym(1) として評価されます。この方程式の両辺は等しいため、logical1 (true) を返します。

syms x
tf = logical(int(x,x,0,2) - 1 == 1)
tf = logical
   1

logical は、条件が真となるかどうかをチェックする際に単純化を行ったり数学的変換を適用したりしません。たとえば、logical を使用して (x+1)2x2+2x+1 が等しいかどうかをチェックします。

syms x
tf = logical((x+1)^2 == x^2+2*x+1)
tf = logical
   0

simplify を使用して、シンボリック方程式で表される条件を単純化します。この方程式は x のすべての値について常に真となるため、関数 simplify はシンボリック logical 定数 symtrue を返します。

cond = simplify((x+1)^2 == x^2+2*x+1)
cond = symtrue

symtrue に logical を使用すると、シンボリック論理定数が logical 1 (true) に変換されます。

tf = logical(cond)
tf = logical
   1

単純化が必要な方程式をチェックするには、代わりに isAlways を使用します。

tf = isAlways((x+1)^2 == x^2+2*x+1)
tf = logical
   1

sqrt などの関数を含む方程式が真となるかどうかをチェックします。x が非負であるという追加の仮定がなければ、sqrt(x^2)x として評価されません。

syms x
tf = logical(x == sqrt(x^2))
tf = logical
   0

assume を使用して、x が非負であるという仮定を設定します。これで、式 sqrt(x^2)x として評価され、x == x が真となるため、logical1 を返します。

assume(x >= 0)
tf = logical(x == sqrt(x^2))
tf = logical
   1

関数 logical 自体はシンボリック変数に関する仮定を無視する点に注意してください。

syms x
assume(x == 5)
tf = logical(x == 5)
tf = logical
   0

変数に対する仮定を考慮して式を比較するには、isAlways を使用します。

tf = isAlways(x == 5)
tf = logical
   1

計算を続けるため、x に設定された仮定を syms を使用して再作成することで消去します。

syms x

関数 logical は、条件が真となるかどうかをチェックする際に単純化を行ったり数学的変換を適用したりしません。たとえば、logical は、次の方程式の数学的等価性を認識しません。

syms x
tf = logical(sin(x)/cos(x) == tan(x))
tf = logical
   0

logical は次の不等式も真であるとみなします。

tf = logical(sin(x)/cos(x) ~= tan(x))
tf = logical
   1

単純化または数学的変換が必要な方程式および不等式の有効性をテストするには、代わりに isAlways を使用します。isAlways は、決定不可能な入力に対して false を返す際、警告を発します。

tf = isAlways(sin(x)/cos(x) == tan(x))
tf = logical
   1

tf = isAlways(sin(x)/cos(x) ~= tan(x))
Warning: Unable to prove 'sin(x)/cos(x) ~= tan(x)'.
tf = logical
   0

入力引数

すべて折りたたむ

入力。シンボリックな方程式、不等式、あるいは等式または不等式のシンボリック配列として指定します。また、論理演算子 andorxornot またはそれらのショートカットを使用して、複数の条件を結合することもできます。

ヒント

  • シンボリックな方程式の場合、左辺と右辺が等しい場合にのみ、logical は logical 1 (true) を返します。その他の場合は logical 0 (false) を返します。

  • ~= を使用して作成されたシンボリックな不等式の場合、左辺と右辺が等しい場合にのみ、logical は logical 0 (false) を返します。その他の場合は logical 1 (true) を返します。

  • その他すべての不等式 (<<=> または >= を使用して作成) では、logical は、不等式が真となることを証明できる場合には logical 1 を、不等式が偽となることを証明できる場合には logical 0 を返します。logical で、不等式が真となるか偽となるかを判断できない場合には、エラーが返されます。

  • logical は、条件ステートメントに対して単純化や数学的変換を行いません。数学的変換と単純化を適用して条件ステートメントを比較するには、isAlways を使用します。

  • シンボリック型を含む条件ステートメントを logical を使用してチェックするには、比較される式のデータ型に互換性がなければなりません。たとえば、logical(1==sym(1))1 (true) を返します。互換性のあるデータ型が式に含まれていない場合、logical はエラーを返します。たとえば、syms f(x) g(y); tf = logical(f~=g) はエラーを返します。

  • logical はシンボリック変数に関する仮定を無視します。

バージョン履歴

R2012a で導入