barcode

번외편-R로 미적분 하기

Coding/R

하는김에 어? 이거 되나? 해서 찾아봄. 


미분

> f<-expression(a*x^5+b*x^2+c)
> D(f,"x")
a * (5 * x^4) + b * (2 * x)

미분은 이런 식으로 한다. 근데 계산은 안 해준다. 믿고보는 알파신이 짱이다

 

> f<-expression(exp(x))
> D(f,"x")
exp(x)

y=e^x를 미분하면 이게 정상이다. 으아아 미분했는데 왜 그대로야 정상입니다 손님

 

편미분 마려워요? 

> f<-expression(x^2*y^2+2*x*y+y)
> D(f,'x')
2 * x * y^2 + 2 * y
# x로 미분해주세요
> D(f,'y')
x^2 * (2 * y) + 2 * x + 1
# y로 미분해주세요

저 D에서 기호를 바꿔주면 알아서 편미분이 된단다. 위 코드는 각각 x로 한 번, y로 한 번 미분한 결과. (그러니까 어쨌든 한 번 미분했다)

> D(D(f,'x'),'y')
2 * x * (2 * y) + 2
# x로 미분하고 y로 미분하고

이건 x로 미분한 다음 y로 미분한 것. ...이거 식으로 쓸 줄 아시는 분 제보 바랍니다. (이사람 미적 못함)

> f=expression(exp(x))
> D(f,'x')
exp(x)
> D(f,'y')
[1] 0

y=e^x는 x가 아닌 다른 기호로 편미분하면 0이 된다. (미분 귀신에도 나왔다)

 

여러번 미분하기

> f<-expression(x^2)
> D(f,'x')
2 * x
> D(D(f,'x'),'x')
[1] 2

이거 찾아보니까 함수 만들어놓고 쓰던데? 

두 번 미분해서 저정도지 세번 네번 하려면 귀찮을 듯. 

> f<-expression(5*x^5+3*x^3+2)
> D(f,"x")
5 * (5 * x^4) + 3 * (3 * x^2)
# 일계도함수
> D(D(f,"x"),"x")
5 * (5 * (4 * x^3)) + 3 * (3 * (2 * x))
# 의 일계도함수

이렇게 한번 두번 하거나 

> f=expression(5*x^7+3*x^4+2)
> D(f,"x")
5 * (7 * x^6) + 3 * (4 * x^3)
# 한 번 미분한 것
> ff=D(f,"x")
# 을 저장
> D(ff,"x")
5 * (7 * (6 * x^5)) + 3 * (4 * (3 * x^2))
# (마른세수)

한번 미분한 것을 변수에 저장하고 또 미분하거나인데 계산은 안해준다. 

그냥 울프램알파를 켜자. 

 

적분

정적분

> f<-function(x) x^2+x
> integrate(f,0,1)
0.8333333 with absolute error < 9.3e-15

integrate()는 범위를 지정해줘야 한다. 즉, 기본 옵션이 정적분이다. 

> e<-function(x) exp(x)
> integrate(e,0,1)
1.718282 with absolute error < 1.9e-14

근데 y=e^x가 적분해도 똑같음? ㄷㄷ 

 

부정적분

library(Ryacas)
yac_str("Integrate(x) Exp(x)")
[1] "Exp(x)"

Ryacas라는 패키지를 깔고 들어가야 한다. (install.packages("Ryacas") 다음에 library로 소환) 맨 윗줄에 library()는 파이썬으로 치자면 import ~와 같은 것. 

> yac_str("Integrate(x) x^2")
[1] "x^3/3"

저기 실례지만 적분상수는 어디 가출하셨나요? (원래 부정적분으로 y=x^2를 적분하면 x^3/3+C 가 된다. C=적분상수)

아 이상적분이요? 아이고 고급진거 물어보시네 

> integrate(f,0,Inf)
Error in stats::integrate(...) : the integral is probably divergent

이상적분이면 범위가 무한대까지인데 에러뜸... 이럴거면 인수에 0~Inf 왜 있냐... 

'Coding > R' 카테고리의 다른 글

R 배워보기- 6.1. Manipulating data-General  (0) 2022.08.20
R 배워보기-5. 데이터 불러오고 쓰기  (0) 2022.08.20
R 배워보기-4. 공식  (0) 2022.08.20
R 배워보기-3. 문자열  (0) 2022.08.20
R 배워보기-2. Numbers  (0) 2022.08.20