Производная вложенных выражений в R - PullRequest
0 голосов
/ 22 апреля 2020

Я пытаюсь оценить производную проекции параметра c кривой. Предположим, что alpha (t) = (X (t), Y (t)) - некоторая плоская кривая. У меня есть функция betaAlpha (X (t), Y (t)), которая проецирует плоскую кривую на единичную сферу. Я пытаюсь найти betaAlpha '(alpha (t))

betaAlpha (X (t), Y (t)) = (betaAlphaPx (X (t), Y (t)), betaAlphaPy (X ( t), Y (t)), betaAlphaPz (X (t), Y (t)))

"alphaNPrimeVe c" - [4,3] матрица выражений, содержащая альфа (t), альфа '(t), альфа' '(t), альфа' '' (t)

в этом примере я устанавливаю X = X (t), Y = Y (t) следующим образом

X<-deparse(alphaNPrimeVec[1,1])
Y<-deparse(alphaNPrimeVec[1,2])

В этом случае X = "выражение (-0,5 + sin (t) * cos (t))" и Y = "выражение (-1 + sin (t))"

I определили betaAlpha с 3 отдельными функциями:

  betaAlphaPx <-function(X,Y){
    return ((4*X)/X^2+Y^2+4)
  }
  betaAlphaPy <- function(X,Y){
    return (4*Y)/X^2+Y^2+4
  }
  betaAlphaPz <- function(X,Y){
    return ((X^2+Y^2-4)/(X^2+Y^2+4))
  }

  betaAlphaP <- c(D(eval(betaAlphaPx),'t'),
                  D(eval(betaAlphaPy),'t'),
                  D(eval(betaAlphaPz),'t'))

Я получаю сообщение об ошибке "Ошибка в D (eval (betaAlphaPx)," t "): выражение не должно иметь тип 'closure'"

или, если я пытаюсь передать X и Y в виде выражений betaAlphaPx, betaAlphaPy, betaAlphaPz, я получаю ошибку

"Ошибка в 4 * X: не числовой c аргумент для двоичного оператора"

У меня вопрос, как я могу передать выражения X, Y 3 функциям betaAlpha и дифференцировать их по 't'.

Заранее спасибо

...