日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

R开发(part2)--R语言中的数学计算

發布時間:2023/12/19 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 #-3

R語言還可以用來解二元方程組,當然計算方法其實是利用了矩陣計算,下面是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语言中的数学计算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。