Протестируйте равенство символьных входных параметров
isequal(a,b)
isequal(a1,a2,...,aN)
isequal(
возвращает логический a,b
)1
(true
), если A
и B
одного размера, и их содержимое имеет равную ценность. В противном случае isequal
возвращает логический 0
(false
). isequal
не считает NaN
(не номер) значениями равный. isequal
рекурсивно сравнивает содержимое символьных структур данных и свойства объектов. Если все содержимое в соответствующих местоположениях равно, isequal
возвращает логический 1
(true
).
isequal(
возвращает логический a1,a2,...,aN
)1
(true
), если все входные параметры a1,a2,...,aN
равны.
Протестируйте числовые или символьные входные параметры на равенство с помощью isequal
. Если вы сравниваете числовые входные параметры с символьными входными параметрами, isequal
возвращает 0
(false
), потому что двойной и символьный отличные типы данных.
Протестируйте, если 2
и 5
равны. Поскольку вы выдерживаете сравнение, удваивается, функция MATLAB® isequal
вызвана. isequal
возвращает 0
(false
) как ожидалось.
isequal(2,5)
ans = logical 0
Протестируйте, если решением уравнения cos(x) == -1
является pi
. Функция isequal
возвращает 1
(true
), означающий, что решение равно pi
.
syms x sol = solve(cos(x) == -1, x); isequal(sol,sym(pi))
ans = logical 1
Сравните двойные и символьные представления 1
. isequal
возвращает 0
(false
), потому что двойной и символьный отличные типы данных. Чтобы возвратить 1
(true
) в этом случае, используйте logical
вместо этого.
usingIsEqual = isequal(pi,sym(pi)) usingLogical = logical(pi == sym(pi))
usingIsEqual = logical 0 usingLogical = logical 1
Протестируйте, если rewrite
правильно переписывает tan(x)
как sin(x)/cos(x)
. Функция isequal
возвращает 1
(true
), означающий, что переписанный результат равняется проверяемому выражению.
syms x f = rewrite(tan(x),'sincos'); testf = sin(x)/cos(x); isequal(f,testf)
ans = logical 1
Тестовые векторы и матрицы для равенства с помощью isequal
.
Протестируйте, если решения квадратного уравнения, найденного solve
, равны ожидаемым решениям. функция isequal
возвращает 1
(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)
правильно вычисляется. isequal
возвращает 1
(true
), означающий, что продукт инверсии и исходной Гильбертовой матрицы равен единичной матрице.
H = sym(hilb(20)); prod = H*inv(H); eye20 = sym(eye(20)); isequal(prod,eye20)
ans = logical 1
NaN
Сравните три вектора, содержащие NaN
(не номер). isequal
возвращает логический 0
(false
), потому что isequal
не обрабатывает значения NaN
как равные друг другу.
syms x A1 = [x NaN NaN]; A2 = [x NaN NaN]; A3 = [x NaN NaN]; isequal(A1, A2, A3)
ans = logical 0
Когда ваши входные параметры не являются символьными объектами, функция isequal
MATLAB вызвана. Если один из аргументов является символьным, то все другие аргументы преобразованы в символьные объекты перед сравнением, и символьная функция isequal
вызвана.