В данном, конкретном случае, удалось "победить" Матлаб следующим образом:
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
Конечно целостность решения можно проверять взяв
![$s$ $s$](https://dxdy-03.korotkov.co.uk/f/6/f/9/6f9bad7347b91ceebebd3ad7e6f6f2d182.png)
по модулю 1, а вещественность - через идентификацию мнимой части (например, при
![$q=5$ $q=5$](https://dxdy-02.korotkov.co.uk/f/d/7/6/d769ed96671012bdb2a454e20ba5b68e82.png)
получаем вещественное
![$s$ $s$](https://dxdy-03.korotkov.co.uk/f/6/f/9/6f9bad7347b91ceebebd3ad7e6f6f2d182.png)
). Но все же это странно выглядит - по идее, если для переменной задать ограничение
syms n integer и целого решения нет, то и решателю должно быть легче и ответ должен быть
![$s$ $s$](https://dxdy-03.korotkov.co.uk/f/6/f/9/6f9bad7347b91ceebebd3ad7e6f6f2d182.png)
=[ ] (то есть пустым). Есть какие-нибудь соображения?