R开发(part2)--R语言中的数学计算
生活随笔
收集整理的這篇文章主要介紹了
R开发(part2)--R语言中的数学计算
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
學習筆記,僅供參考,有錯必糾
參考自:《R的極客理想》-- 張丹
文章目錄
- R開發
- R語言中的數學計算
- 對數
- 加權平均、連乘、差分、秩、任意數、全體數
- 階乘、組合、排列
- 累加、累乘、最小累積、最大累積
- 正弦、余弦、正切、反正弦、反余弦、反正切
- 復數
- 方程計算
R開發
R語言中的數學計算
對數
R>a <- 2 R>b <- 4 R>c <- exp(1) R> R>#以2為底的對數 R>log2(b) [1] 2 R> R>#以10為底的對數 R>log10(b) [1] 0.60206 R> R>#自定義底的對數 R>log(exp(2), base = c) [1] 2
加權平均、連乘、差分、秩、任意數、全體數
R>d <- seq(1, 10, 2) R>#加權平均 R>weighted.mean(d, c(1, 2, 3, 4, 5)) [1] 6.333333 R>#連乘 R>prod(1:5) [1] 120 R>#差分 R>diff(d) [1] 2 2 2 2 R>#秩 R>rank(d) [1] 1 2 3 4 5 R>#中位數 R>median(d) [1] 5 R>#任意條件滿足返回TRUE R>any(d < 5) [1] TRUE R>#全體條件滿足返回TRUE R>all(d < 5) [1] FALSE
階乘、組合、排列
R>#5的階乘 R>factorial(5) [1] 120 R> R>#組合,從5個中選出2個 R>choose(5, 2) [1] 10 R> R>#排列,從5個中選出2個 R>choose(5, 2)*factorial(2) [1] 20
累加、累乘、最小累積、最大累積
R>d <- 1:5 R>#累加 R>cumsum(d) [1] 1 3 6 10 15 R>#累乘 R>cumprod(d) [1] 1 2 6 24 120 R>#最小累積 R>cummin(d) [1] 1 1 1 1 1 R>#最大累積 R>cummax(d) [1] 1 2 3 4 5
正弦、余弦、正切、反正弦、反余弦、反正切
R>#sin R>sin(0);sin(pi/2) [1] 0 [1] 1 R>#cos R>cos(0);cos(pi/2) [1] 1 [1] 6.123032e-17 R>#tan R>tan(0);tan(pi/4) [1] 0 [1] 1 R>#asin R>asin(0);asin(1) [1] 0 [1] 1.570796 R>#acos R>acos(0);acos(1) [1] 1.570796 [1] 0 R>#atan R>atan(0);atan(1) [1] 0 [1] 0.7853982
復數
R>#創建1個復數 R>ai <- 5 + 2i R>#查看復數的類型 R>class(ai) [1] "complex" R>#通過complex創建復數 R>bi <- complex(real = 5, imaginary = 2) R>#查看是否為復數 R>is.complex(bi); is.complex(5) [1] TRUE [1] FALSE R>#實數部分 R>Re(ai) [1] 5 R>#虛數部分 R>Im(ai) [1] 2 R>#取模 R>Mod(ai) [1] 5.385165 R>#取輻角 R>Arg(ai) [1] 0.3805064 R>#取軛 R>Conj(ai) [1] 5-2i R>#復數開平方根 R>sqrt(complex(real = -9)) [1] 0+3i
方程計算
uniroot()函數每次只能計算一個根,而且要求輸入的區間端點值必須是正負號相反的。
求一元一次方程a*x + b = 0 的根:
f1 <- function(x, a, b) {return(a*x + b) }a <- 5; b <- 10; #在(-10,10)的區間,精確度為0.0001位,計算方程的根 result <- uniroot(f1, c(-10, 10), a = a, b = b, tol = 0.0001) result$root #-2求一元二次方程a*x^2 + b*x + c的根:
f2 <- function(x, a, b, c) {return(a*x^2 + b*x + c) }a <- 1; b <- 5; c <- 6 result1 <- uniroot(f2, c(0, -2), a = a, b = b, c = c, tol = 0.0001) result1$root #-2 result2 <- uniroot(f2, c(-4, -3), a = a, b = b, c = c, tol = 0.0001) result2$root #-3R語言還可以用來解二元方程組,當然計算方法其實是利用了矩陣計算,下面是x1,x2兩個未知變量組成的方程組:
f(x)={3x1+5x2=4x1+2x2=1f(x) = \begin{cases} 3x_1 + 5x_2 = 4 \\ x_1 + 2x_2 = 1 \end{cases} f(x)={3x1?+5x2?=4x1?+2x2?=1?
以矩陣形式來構建方程組就是:
[3512]?[x1x2]=[41]\begin{bmatrix} 3 & 5 \\ 1 & 2 \\ \end{bmatrix} \cdot \begin{bmatrix} x_1 \\ x_2 \\ \end{bmatrix} = \begin{bmatrix} 4 \\ 1 \\ \end{bmatrix} [31?52?]?[x1?x2??]=[41?]
R實現:
lf <- matrix(c(3, 5, 1, 2), nrow = 2, byrow = TRUE) rf <- matrix(c(4, 1), nrow = 2) result <- solve(lf, rf) result輸出:
[,1] [1,] 3 [2,] -1總結
以上是生活随笔為你收集整理的R开发(part2)--R语言中的数学计算的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 配置SQLServer允许远程连接
- 下一篇: 自然语言处理标注工具——Brat(安装、