Мета проста: виведіть ненульове реальне рішення xрівняння sin(x) = -mx, заданого введенням m, у найменшій кількості байтів.
Технічні умови:
- Ваша відповідь повинна бути правильною на 3 значущі цифри.
- Ви можете вивести будь-яке реальне рішення, крім тривіального рішення
x=0. Можна припуститиm, що існує хоча б одне рішення. Ви також можете припуститиm!=0.
Очевидно субоптимальний розчин пітона з використанням градієнтного спуску :
from math import *
from random import *
a=x=0.001
m = 5.
def dE(x):return 2*(sin(x)+m*x+1)*(cos(x)+m)
for i in xrange(1000): x-=dE(x)*a
print x
Тестові справи
-0.25 -> ±2.4746
-0.1 -> ±2.8523 or ±7.0682 or ±8.4232
0.2 -> ±4.1046 or ±4.9063
x=0є тривіальним рішенням. Ви повинні вказати, яке рішення ви хочете.
m=0має рішення ( x=kπдля цілого числа k). Значення mяких не мають нетривіальних реальних рішень - це ті, що занадто далеко 0.
aвирішитиsin(x)=-ax. Будь ласка, не кажіть "ви повинні насправді обчислити це", оскільки такі вимоги є надто розпливчастими для роботи.