mydistance <- function(x,y){

  if (x > y){

    temp <- x-y

    return(temp)

  }

  else{

    temp <- y-x

    return(temp)

  }

}




myVectorSum <- function(){

  x <- c()

  for(i in 1:5){

    x[i] <- i

    

  }

  return(x)

}


# 짝수 더하기

myEvenSum <- function(x){

  y <- 0

  for(i in 1:x){

    if (i%%2 == 0){

      y <- y+ i  

    }

  }

  return(y)

}



#빈칸 NA 제외 처리

myNotNaSum <- function(x){

  y <- 0

  for(i in 1:length(x)){

    if (!is.na(x[i])){

      y <- y+ x[i] 

    }

  }

  return(y)

}


#뉴튼법 대상 추출방법

f <- function (x) exp(x) -2

(result <- uniroot(f, c(0,1)))


#다항식 -2 + 5x -4x^2 + x^3

polyroot(c(-2,5,-4,1))


#미분

f<-expression(a*x^4)

D(f, "x")


#고계미분 결과 a * (4 * (3 * (2 * x)))

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(f,"x" ,3)



#수식 이용 미분할때 deriv(~ 수식, 미분할 변수, func=T)

f <- deriv(~ x^2, "x", func=T)

#4 인수에 대한 함수값

#attr(,"gradient")

#x

#[1,] -4 미분한 함수 


# 다변함수 미분

g <- deriv(~ x^2*y, c("x","y"), func=TRUE)

g(2,3)

#[1] 12 인수에 대한 함수의 값

#attr(,"gradient") 인수에 대한 미분한 후의 함수의 값

#x y x ㄹ 일계 미분한 결과로 사용해서 계산한 것(12)과

#[1,] 12 4 y로 일계 미분한 결과를 사용해서 계산한것 (4)


h<- deriv(~ x^2*y*z, c("x","y"), function(x,y,z=4){ })

h(3,2)


#적분 integrate()

f <-  function(x) x^2 # function 선언

integrate(f, 0 ,1)

#원래 R 준비된 함수 적분시에는 따로 새로 함수 정의 필요 X

integrate(sin, 0 , pi)


#dnorm 정규 분포의 밀도 함수

integrate(dnorm, -Inf, 1.96) # 정규분포 밀도함수를 -Inf(-무한대) ~ 1.96 범위에서 적분하고 있다.


#cubature 패키지 안에있는 함수 adaptIntegrate 사용하면 일차원 과 다차원 수치 적분을 할 수 있다.

install.packages("cubature", dep=T) # cubature pacakge 설치

library(cubature)

f<- function(x) cos(x) #1변 함수일때

adaptIntegrate(f, 0, pi/2) #실행

g<- function(x){ # 2변 함수일때

  exp(-(x[1]^2 + x[2]^2) /2) / (2 * pi)

}

adaptIntegrate(g, c(-3,-3), c(3,3)) #인수로 벡터지정 실행



'Data Science > R' 카테고리의 다른 글

시계열분석  (0) 2015.09.25
R 도움말 & 함수 확인  (0) 2015.09.10
R공부 Example 3회차  (0) 2015.09.08
Posted by MIDDLE
,