Привет, я новичок в r и пытаюсь использовать grad в r

#r

#r

Вопрос:

 log1<-function(x,theta){ #make function with 2 argument
    return(-length(x)*log(2*pi) sum(log(1-cos(x-theta))))
 }
g<-grad(func=log1, theta) # But I am getting an error. 
  
  1. Я получаю сообщение об ошибке при использовании функции градиента.

Комментарии:

1. Привет, Мэри. Ваша функция возвращает скалярное значение при передаче векторных значений x и theta , поэтому неясно, как вы ожидаете, что она будет работать grad ?

Ответ №1:

для вашей функции log1 требуется два аргумента x и theta , но вы только передаете theta , без значения по умолчанию для обоих аргументов. Попробуйте:

 library(numDeriv)
log1<-function(x,theta){ #make function with 2 argument
  return(-length(x)*log(2*pi) sum(log(1-cos(x-theta))))
}
g<-grad(func = log1, x=4, theta=5)
  

или назначьте некоторые значения по умолчанию для ваших переменных, чтобы вы могли сделать что-то вроде этого:

 log1<-function(x=3,theta=4){ #make function with 2 argument
  return(-length(x)*log(2*pi) sum(log(1-cos(x-theta))))
}
g<-grad(func = log1, x=c(1,2,3))