В данном, конкретном случае, удалось "победить" Матлаб следующим образом:
z=sym(7);
syms n real
s=solve(sin(z)*cos(n) - cos(z)*sin(n) == 0, 'PrincipalValue',true);
double(s)
ans =
7
Но несмотря на ограничение переменной (real) в следующем, например, случае, Матлаб выдает комплексное решение:
z=sym(7); q=sym(4);
syms n real
s=solve(sin(z)*cos(n) - cos(q)*sin(n) == 0, 'PrincipalValue',true);
double(s)
ans =
2.3536 + 0.0000i
Конечно целостность решения можно проверять взяв
по модулю 1, а вещественность - через идентификацию мнимой части (например, при
получаем вещественное
). Но все же это странно выглядит - по идее, если для переменной задать ограничение
syms n integer и целого решения нет, то и решателю должно быть легче и ответ должен быть
=[ ] (то есть пустым). Есть какие-нибудь соображения?