Мета проста: виведіть ненульове реальне рішення 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
. Будь ласка, не кажіть "ви повинні насправді обчислити це", оскільки такі вимоги є надто розпливчастими для роботи.