Задать вопрос
@Hulumulula
Newbie in programm

Как воспроизвести решение данной функции sin(x)=x в python?

Мне нужно найти все решения данной функции в python. Как мне можно это сделать? Если взять ограничения синуса и прибавлять к -1 + 0,00001 он все равно все решения не находит. К тому же под синусом х в радианах.
  • Вопрос задан
  • 1307 просмотров
Подписаться 3 Простой Комментировать
Решение пользователя Andrey Dugin К ответам на вопрос (3)
adugin
@adugin Куратор тега Python
Посмотрите в эту сторону: scipy.optimize
from scipy.optimize import minimize
import numpy as np

def func(x):
    return np.abs(np.sin(x)-x)

minimize(func, -1)

Результат:
fun: 1.3390927663600727e-08
 hess_inv: array([[ 109.41685172]])
      jac: array([ -9.30984970e-06])
  message: 'Optimization terminated successfully.'
     nfev: 36
      nit: 11
     njev: 12
   status: 0
  success: True
        x: array([-0.00431507])

Извлечение значений:
result = minimize(func, -1)
print(result.fun)  # => 1.3390927663600727e-08
print(result.x[0])  # => -0.0043150659686

То есть найдено приблизительное решение x=-0.00431507. Проверка:
x = -0.00431507
sin(x) - x  # => 1.3390965196077853e-08

Методы можно менять, это влияет на точность:
result = minimize(func, -1, method='Nelder-Mead')
Там ещё есть куча интересных аргументов, изучайте.

P.S. Но вообще странно искать очевидное решение программно.
Ответ написан