Документально подтверждено, что nonlinsolve
возвращает как реальные, так и комплексные решения: https://docs.sympy.org/latest/modules/solvers/solveset.html#nonlinsolve
Поскольку nonlinsolve
является частью новых решателей, он работает с использованием наборов и предназначен для игнорировать любые предположения относительно входных символов. Вы можете получить только реальные решения, пересекаясь с набором действительных чисел:
In [10]: nonlinsolve(test, syms) & Reals ** 18
Out[10]:
⎧⎛2 √10 5 2⋅√10 √10 2 4⋅√10 2 √10 3⋅√10 √10 8 2⋅√10 4 √10
⎨⎜─ - ───, ─ - ─────, -4 + √10, -1, ───, 1, - ─ + ─────, ─ - ───, 3 - √10, -2 + ─────, 1, 1 - ───, ─ - ─────, -1, - ─ + ───, 7 -
⎩⎝3 15 3 3 5 3 15 3 15 5 5 3 3 3 3
2⋅√10 √10⎞ ⎛√10 2 5 2⋅√10 -√10 4⋅√10 2 √10 2 3⋅√10 √10 2⋅√
2⋅√10, 1 - ─────, ───⎟, ⎜─── + ─, ─ + ─────, -4 - √10, -1, ─────, 1, - ───── - ─, ─── + ─, 3 + √10, -2 - ─────, 1, ─── + 1, ───
5 5 ⎠ ⎝ 15 3 3 3 5 15 3 15 3 5 5 3
10 8 4 √10 2⋅√10 -√10 ⎞⎫
── + ─, -1, - ─ - ───, 2⋅√10 + 7, 1 + ─────, ─────⎟⎬
3 3 3 5 5 ⎠⎭