Чтобы ответить на вопрос в комментарии: «если бы я сделал это следующим образом: find_root (diff ((1/2) * (sin (5 * x) −x) ^ 2), x, -0.1,0.1); он возвращает мне -0.1, а если я поставлю его -0.3, он вернет -0.3 ".
Проблема в том, что вам нужно написать diff(..., x)
, а не просто diff(...)
без второго аргумента x
. Здесь я попробовал это:
(%i1) e:(1/2)*(sin(5*x)-x)^2;
2
(sin(5 x) - x)
(%o1) ---------------
2
(%i2) e1:diff(e,x);
(%o2) (5 cos(5 x) - 1) (sin(5 x) - x)
(%i3) find_root(e1, x, -0.1, 0.1);
(%o3) 0.0
(%i4) find_root(e1, x, -0.3, -0.1);
(%o4) - 0.2738876812009132
(%i5) find_root(e1, x, 0.1, 0.3);
(%o5) 0.2738876812009132