Протестируйте равенство символьных входных параметров
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 вызвана.