Я пытаюсь вычислить градиент функции в определенной точке двумя способами: один раз путем анализа аналитического значения градиента и его вычисления, а другой с помощью af (x + h) -f (x) /ч оценка.Затем я могу сравнить их и посмотреть, что является более эффективным.
Я написал код для обоих.Код, который я написал для первого метода, я уверен, работает нормально.К сожалению, код для второго метода дает неправильный ответ.
def cost_gradient_theta1(t,m,x,y):
c=cost(x,y,t,m)
grad=[0]*240
for i in range(240):
t1=t
t1[i]=t[i]+0.000001
grad[i]=(cost(x,y,t1,m)-c)/0.000001
return grad
В приведенном выше описании стоимость - это функция, которую я определил ранее, x и y - константы (фактически списки списков 0 и 1)и t и m - переменные, которые я заинтересован в дифференцировании.Они предназначены для представления списков с плавающей запятой длиной 240 каждый.
Когда я проверил это и сравнил его с «реальным» ответом, 0-я координата оказалась в порядке.Но начиная с 1-й координаты, эти частные производные неверны.
Видите ли вы что-то не так с приведенным выше кодом?