Main Content

isequal

シンボリック入力の等価性をテスト

説明

isequal(a,b) は、ab が同じサイズであり、その内容が等価である場合に logical 1 (true) を返します。それ以外の場合は、isequal は logical 0 (false) を返します。isequalNaN (Not a Number) 値が互いに等しいものと見なしません。isequal は、シンボリック データ構造体の内容およびオブジェクトのプロパティを再帰的に比較します。すべての内容がそれぞれの位置で等しい場合、isequal は logical 1 (true) を返します。

isequal(a1,a2,...,aN) は、すべての入力 a1,a2,...,aN が等しい場合に logical 1 (true) を返します。

数値の等価性のテスト

isequal を使用して数値入力またはシンボリック入力の等価性をテストします。数値入力とシンボリック入力を比較する場合、double とシンボリックは異なるデータ型であるため、isequal0 (false) を返します。

25 が等価であるかテストします。double どうしを比較しているため、MATLAB® の関数 isequal が呼び出されます。isequal は予想どおり 0 (false) を返します。

isequal(2,5)
ans =
  logical
   0

方程式 cos(x) == -1 の解が pi であるかテストします。関数 isequal1 (true) を返す場合、解が pi と等価であることを示します。

syms x
sol = solve(cos(x) == -1, x);
isequal(sol,sym(pi))
ans =
  logical
   1

1 の double 表現とシンボリック表現を比較します。double とシンボリックは異なるデータ型であるため、isequal0 (false) を返します。この場合に 1 (true) が返されるようにするには、代わりに logical を使用します。

usingIsEqual = isequal(pi,sym(pi))
usingLogical = logical(pi == sym(pi))
usingIsEqual =
  logical
   0
usingLogical =
  logical
   1

シンボリック式の等価性のテスト

tan(x)sin(x)/cos(x) が構文的に同じであるかどうかをテストします。式は異なっており、isequal は式間の数学的な比較を行わないため、関数 isequal0 (false) を返します。

syms x
isequal(tan(x),sin(x)/cos(x))
ans =
  logical
   0

tan(x)sin(x)cos(x) で書き換えます。rewritetan(x)sin(x)/cos(x) に正しく書き換えるかテストします。関数 isequal1 (true) を返し、書き換えられた結果がテスト式と等しいことを示します。

f = rewrite(tan(x),'sincos');
testf = sin(x)/cos(x);
isequal(f,testf)
ans =
  logical
   1

数学的な比較 tan(x) == sin(x)/cos(x)x のすべての値に当てはまるかどうかをチェックするには、isAlways を使用します。

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

シンボリックなベクトルと行列の等価性のテスト

isequal を使用してベクトルと行列の等価性をテストします。

solve によって求められた二次方程式の解が予想した解と等しいかテストします。関数 isequal1 (true) を返し、入力が等しいことを示します。

syms a b c x
eqn = a*x^2 + b*x + c;
Sol = solve(eqn, x);
testSol = [-(b+(b^2-4*a*c)^(1/2))/(2*a); -(b-(b^2-4*a*c)^(1/2))/(2*a)];
isequal(Sol,testSol)
ans =
  logical
   1

ヒルベルト行列は、逆行列を正確に計算することが難しい特別な行列です。逆行列が正確に計算されている場合、逆行列と元のヒルベルト行列を乗算すると単位行列が返されます。

次の条件を使用して、hilb(20) の逆行列が正しく計算されているかをシンボリックにテストします。isequal1 (true) を返し、逆行列と元のヒルベルト行列の積が単位行列と等しいことを示します。

H = sym(hilb(20));
prod = H*inv(H);
eye20 = sym(eye(20));
isequal(prod,eye20)
ans =
  logical
   1

NaN を含む入力の比較

NaN (Not a Number) を含む 3 つのベクトルを比較します。isequalNaN 値どうしを等価として扱わないため、isequal は logical 0 (false) を返します。

syms x
A1 = [x NaN NaN];
A2 = [x NaN NaN];
A3 = [x NaN NaN];
isequal(A1, A2, A3)
ans =
  logical
   0

入力引数

すべて折りたたむ

入力。数値、ベクトル、行列、または配列として指定するか、シンボリック数、シンボリック スカラー変数、シンボリック行列変数 (R2021a 以降)、シンボリック配列、シンボリック関数、またはシンボリック式として指定します。

入力。数値、ベクトル、行列、または配列として指定するか、シンボリック数、シンボリック スカラー変数、シンボリック行列変数 (R2021a 以降)、シンボリック配列、シンボリック関数、またはシンボリック式として指定します。

ヒント

  • 入力がシンボリック オブジェクトではない場合、MATLAB の関数 isequal が呼び出されます。いずれかの引数がシンボリックである場合、比較の前に他のすべての引数がシンボリック オブジェクトに変換され、シンボリック関数 isequal が呼び出されます。

  • isequal(a,b) は、ab のサイズが同じであり、それらの内容が構文的に同じ式であるかどうかをチェックします。数学的な比較 a == bab の変数のすべての値に当てはまるかどうかをチェックするには、isAlways(a == b) を使用します。

バージョン履歴

R2006a より前に導入