本書作者: 吳喜之
操作系統(tǒng):win10
R版本:R-3.3.3
實(shí)踐6 —— 簡(jiǎn)單圖形
x <- rnorm(200) #獲取200個(gè)隨機(jī)正態(tài)數(shù)
hist(x, col = "light blue") #繪制直方圖
rug(x) #在直方圖下方添加實(shí)際數(shù)值所在位置
stem(x) #繪制莖葉圖
x <- rnorm(500)
y <- x + rnorm(500) #構(gòu)造線性關(guān)系
plot(y~x) #繪制散點(diǎn)圖
a = lm(y~x)
abline(a, col="red") #基于plot添加擬合線
plot(y~x)
abline(lm(y~x), col="red") #一步完成,繪制散點(diǎn)圖,同時(shí)添加擬合線,注意同樣基于plot
print ("Hello World!") #直接打印語句
paste("x的最小值= ", min(x)) #打印語句
demo(graphics) #演示R中自帶的圖形
實(shí)踐7 —— 復(fù)數(shù)運(yùn)算和求函數(shù)極值
(2+4i)^-3.5 + (4.5+2i)*(-1.7-2.3i)/((2.6-7i)*(-4+5.1i)) #進(jìn)行復(fù)數(shù)運(yùn)算
(z <- complex(real=rnorm(10), imaginary=rnorm(10))) #構(gòu)造一個(gè)10維復(fù)向量,實(shí)部和虛部均為10個(gè)標(biāo)準(zhǔn)狀態(tài)樣本點(diǎn)
complex(real=rnorm(10), imaginary=rnorm(5)) #如果實(shí)部和虛部的樣本點(diǎn)個(gè)數(shù)不同,看看與前一命令有何不同。
Re(z) #列出z中所有復(fù)向量的實(shí)部
Im(z) #列出z中所有復(fù)向量的虛部
Mod(z) #計(jì)算各個(gè)復(fù)向量的模。復(fù)數(shù)的模為實(shí)部與虛部平方和的正平方根。
Arg(z) #計(jì)算各個(gè)復(fù)向量的輻角。在復(fù)平面上,復(fù)數(shù)所對(duì)應(yīng)的向量與x軸正反向的夾角稱為復(fù)數(shù)的輻角??梢宰⒁庖幌拢椊堑姆?hào)與虛部的符號(hào)一致。
choose(10, 4) #組合數(shù)。C(n, m),從n個(gè)元素中不重復(fù)地抽取m個(gè)元素的組合個(gè)數(shù)。 C(n, m)=n!/(m!(n-m)!)
combn(5, 2) #列出所有組合
factorial(6) #計(jì)算6的階乘,即6!
f = function(x) x^3-2*x-1 #構(gòu)建方程式
uniroot(f, c(0, 2)) #迭代求根。結(jié)果中$root 為求解出來的方程近似解;$f.root 為在此近似解下的方程值;$iter 為求解過程中,方程的迭代次數(shù);$estim.prec 為近似解與較精確解的誤差估計(jì),即近似解與較精確解之間誤差的值不超過這個(gè)數(shù)值。
optimize(f, c(0, 2)) # 計(jì)算給定區(qū)間內(nèi)的極值
optimize(f, c(1, 3)) # 注意與前一個(gè)命令結(jié)果之間的差別。我還不是特別明白里面的含義。
#在R語言中,我們可以借助uniroot()函數(shù)來求解方程的某個(gè)單根。對(duì)于一元一次方程,需要調(diào)用uniroot()一次;由于二次方程一般有2個(gè)根,所以對(duì)于一元二次方程,需要調(diào)用uniroot()兩次。
#題目:求一元二次方程ax^2+bx+c=0,設(shè)a=1,b=5,c=6,求x
f <- function(x, a, b, c) a*x^2+b*x+c
a <- 1; b <- 5; c <- 6
result1 <- uniroot(f, c(0, -2), a=a, b=b, c=c, tol=0.0001)
result2 <- uniroot(f, c(-3, -4), a=a, b=b, c=c, tol=0.0001)
result1$root
result2$root
#也可以用作圖的方式求解
x <- seq(-5, 1, by=0.01)
y <- f(x, a, b, c)
df <- data.frame(x, y)
library(ggplot2)
g <- ggplot(df, aes(x, y))
g <- g + geom_line(col="red")
g <- g + geom_hline(yintercept=0) + geom_vline(xintercept=0)
g <- g + ggtitle(paste("y=", "x^2+", b, "x+", c))
g #從圖中我們可以得到該方程的兩個(gè)根
實(shí)踐6主要介紹R的作圖功能,強(qiáng)大的繪圖功能正是許多人喜歡R的原因之一;實(shí)踐7開始涉及基礎(chǔ)運(yùn)算,需要結(jié)合相應(yīng)的數(shù)學(xué)知識(shí)慢慢理解。