R中的导数并在某一点找到价值

时间:2018-02-11 09:48:58

标签: r function derivative

我有dddft <- function(t) {D(D(D(expression((t^3) / (sqrt(1-t^2))), "t"), "t"), "t")} 我想找到三阶导数然后在 t = 0处找到值。我想在R中这样做。我试过了

dddft(0)

然后我尝试

#include <iostream>
#include <string>
using namespace std;

int main () 
{
   // local variable declaration:
   int a;
   cout<<"masukkan operasi = "; cin >> a;
   int angka1;
   cout<<"masukkan angka = ";cin >> angka1;
   int angka2;
   cout<<"masukkan angka = ";cin >> angka2;
   if( a == + ) 
   {
      cout <<"Hasil = " << angka1+angka2 <<endl ; //hasil
   } 
   else if( a == * ) 
   {
       cout <<"Hasil = " << angka1*angka2 <<endl ;
   }
}

但这样做只会给我一个很长的表达,而不是 t = 0。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

使用可以运行的eval()评估表达式。

dddft <- function(t) eval(D(D(D(expression((t^3) / (sqrt(1-t^2))), "t"), "t"), "t"))

dddft(0)
# [1] 6

为避免痛苦的嵌套,您可以使用此功能(请参阅?D):

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)
}

dddft <- function(x) eval(DD(expression(x^3 / sqrt(1 - x^2)), "x", 3))
dddft(0)
# [1] 6