r peut générer une fonction SPLINE à l'aide de SPLINEFUN () dans la bibliothèque de splines. Cependant, j'ai besoin d'évaluer cette fonction à ses premier et deuxième dérivés. Y a-t-il un moyen de faire cela?
Par exemple p> Comment puis-je évaluer f '(x) pour un vecteur de x? p> p> p>
3 Réponses :
Il est très facile de faire car la capacité d'évaluer la fonction sur ses dérivés est intégrée à la fonction! merci r-core! p> p>
Ce n'est pas un opérateur "==", mais "=".
Vous pouvez également être intéressé par la fonction TKSPLINE dans le package SecourchDemos qui tracera la fonction Spline avec ses dérivés. P>
L'utilisation de l'argument Deriv = SPLINEfun est sensible et il convient d'ajouter que les deuxième et troisième dérivés sont censés être disponibles, mais si vous travaillez à travers les exemples, vous réaliserez que les approximations linéaires sont déchirées et discontinues. À des degrés supérieurs.
Dans la situation dans laquelle vous avez une expression analytique, certaines dispositions ont certes limitées pour la différenciation algorithmique. Voir la page Aide (DERIV) pour plus de détails. P> puis construit "à la main" une deuxième fonction avec ce résultat. Ou vous pouvez utiliser l'exemple DD fourni sur la page Aide (DERIV) pour automatiser le processus un peu plus: P> DD <- function(expr,name, order = 1) {
if(order < 1) stop("'order' must be >= 1")
if(order == 1) D(expr,name)
else DD(D(expr, name), name, order - 1)
}
DD(expression(sin(pi/x)), "x", 2)
-(sin(pi/x) * (pi/x^2) * (pi/x^2) - cos(pi/x) * (pi * (2 * x)/(x^2)^2))
DD(expression(sin(pi/x)), "x")
-(cos(pi/x) * (pi/x^2))
funD<- function(x){}
body(funD) <- DD(expression(sin(pi/x)), "x")
funD
#function (x)
#-(cos(pi/x) * (pi/x^2))
funD(2)
# [1] -4.809177e-17 as it should be at a maximum
funDD <- function(x){}
body(funDD) <- DD(expression(sin(pi/x)), "x", 2)
funDD(2)
# [1] -0.6168503 as it should be at a maximum.
+1 merci pour la perspicacité; Cependant, j'utilise une spline pour se rapprocher d'un modèle de calcul intensité de calcul.
J'avais peur de ça. Je conseillerais de courir à travers les exemples de la page SPLINEFUN pour avoir une meilleure idée de la façon dont ils se comportent avec une commande supérieure (de 1) arguments à dériver =. Cela a eu du sens après avoir passé du temps à comploter, mais au début, les résultats semblaient apparemment jarring.