#### 目录

7.与矩阵对角元素有关的运算

9.矩阵的特征值与特征向量

10.矩阵的Choleskey分解

13.矩阵的行和、列和、行平均与列平均

## 一、逻辑运算符

```x <- c(3,0,-2,-5,7,2,-1)
y <- c(2,4,-1,0,5,1,-4)
x <= y
compare.xy <- (x<=y)
compare.xy```

```a <- c("ann","gretchen","maria","ruth","wendy")
b <- c("bruce","ed","robert","seth","thomas")
a <= b
a >= b```

## 二、布尔运算符

 运算符 描述 ！x 非x x|y x或y x&y x和y isTRUE(x) 判断x是否为true

```x <- c(3,0,-2,-5,7,2,-1)
y <- c(2,4,-1,0,5,1,-4)
(x-y > -2)&(x-y < 2)
x[(x-y> -2)&(x-y < 2)]
(x-y >= -2)|(x-y <= 2)
x[(x-y>-2)&(x-y<2)]
(x-y > -2)
!(x-y > -2)```

## 索引及其相关内容

```x <- c(3,7,5,-2,0,-8)
x[3]
x[1:3]
x[c(2,4,5)]
x[1+3]
i =4
x[i]
x[-2]
x[-c(2,4,5)]
y <- c(2,7,-5,4,-1,6)
(x+y)[1:3]
z <- c("jan","feb","mar","apr","may","jun")
monthly.numbers <- data.frame(x,y,z)
monthly.numbers```

## 三、数学运算符

```3+4 # 7
3-4 # -1
3*4 # 12
3/4 # 0.75
3^4 # 81
16**(1/4) # 2
13%%4 # 1
13%/%4 # 3
x <- c(-1,0,1)
exp(x)
y <- c(1,2,3,4)
sqrt(y)```

## 二次函数

```xlow <- -1
xup <- 2
x <- xlow + (xup-xlow)*(0:100)/100
y <- x^2-x-1
plot(x,y,type="l")
y2 <- numeric(length(x))
#画点，分别以x,y2中对应位置的参数组成坐标点，绘制的直线类型为l,直线为虚线
#lty的参数同样也可以输入1,2,3等参数来绘制不同样式的标注线
points(x,y2,type="l",lty="dashed")```

## 三角函数

```#设置上下限
th.low <- -4*pi
th.up <- 4*pi
theta <- th.low + (th.up-th.low)*(0:1000)/1000
y1 <- sin(theta)
y2 <- cos(theta)
plot(theta,y1,type="l",lty=1,ylim=c(2,-2),xlab="theta",
ylab="sine and cosine")
points(theta,y2,type="l",lty=2)```

## 极坐标

```#设置角度为0-360度
theta <- 2*pi*(0:100)/100
r <- 1
x <- r*cos(theta)
y <- r*sin(theta)
#设置我们的画布大小长宽都为4英寸。
par(pin=c(4,4))
plot(x,y,type="l",lty=1)```

## 以e为底的指数函数

```x <- 2
y <- exp(x)
z <- exp(0:10)
y
z```

## 对数函数

y = loga x, R的表示方式log(x,a)

y = ln x, R的表示方式log(x)

y = lg x, R的表示方式log10(x)

y = log2 x, R的表示方式log2(x)

```w <- 0
log(w)
w <- 1:10
log(w)
w <- 10000
log10(w)
w <- 16
log2(w)
log(9,3)
log(64,8)```

## 1.向量的内积

```x <- 1:5
x
y <- 2*1:5
y
x %*% y
crossprod(x,y)```

## 2.向量的外积

```x %o% y
tcrossprod(x,y)
outer(x,y)```

## 3.矩阵的转置

```x <- matrix(1:12,nrow=3)
x
y = matrix(1:12,ncol=3)
y
z = matrix(1:12,ncol=3, byrow=T)
z
X = t(x)
X
Y <- t(t(y))
Y```

## 4.矩阵的加减法

```x+t(z)
x-t(z)
x + 1
y <- 1:12
x + y```

## 5.矩阵的数乘

```a <- 3
M <- a*x
M```

## 6.矩阵乘法

```A = matrix(1:12,ncol=3)
B = matrix(1:18, nrow=3)
A
B
C = A%*%B
C
D = matrix(1:12, nrow=4, byrow=T)
D
t(A) %*% D```

`crossprod(A,D)`

## 7.与矩阵对角元素有关的运算

```A = matrix(1:16,nrow=4)
A
diag(A)
diag(diag(A))```

```diag(n)
n```

```x<-c(1,2,3,4,5)
diag(x)```

## 8.矩阵求逆

AX=b,X=solve(A,b)

```A = matrix(c(1,2,3,4,7,5,2,1,3,1,3,2,3,2,3,2),ncol=4)
A
solve(A)
b <- c(1,2,3,4)
#计算方程组AX=b的解
solve(A,b)```

## 9.矩阵的特征值与特征向量

values表示的是特征值

vectors表示的是对应的特征向量

```A = diag(4)+1
A
A.eigen = eigen(A,symmetric=T)
A.eigen```

## 10.矩阵的Choleskey分解

```A = diag(4)+1
A
P <- chol(A)
P```

`det(A)`

## 12.提取矩阵的维数

```dim(A)计算矩阵A的行数和列数
ncol(A)返回矩阵A的列数
nrow(A)返回矩阵A的行数```

```dim(A)
ncol(A)
nrow(A)
A```

## 13.矩阵的行和、列和、行平均与列平均

```A=matrix(1:16,ncol=4)
A
#行和
rowSums(A)
#行平均
rowMeans(A)
#列和
colSums(A)
#列平均
colMeans(A)```

## 五、积分运算

integrate()

```integrand <- function(x) {1/((x+1)*sqrt(x))}
integrate(integrand, lower=0, upper=Inf)```

## 六、负数运算

complex(length.out,real=numeric(0),imaginary=numeric(0))

```x <- 1+2i
y <- complex(1,1,1)
#取实部
Re(y)
#取虚部
Im(y)
#求模长
Mod(y)
#求共轭复数
Conj(y)
#判断是否是复数
is.complex(y)
#生成复数向量组
complex(re=1:4,im=2:3)
#对-2开平方根是行不通的
sqrt(-2)
#对-2+0i开平方根是行的通的，因为此时为复数运算
sqrt(-2+0i)
#如果要直接对-2求平方根的话，也可以直接将-2转换为复数形式再开平方根。
sqrt(as.complex(-2))```

## 七、数学函数

```abs(-4.21) # 4.21
sqrt(16) # 4
ceiling(3.78) # 4
floor(3.78) # 3
floor(-3.78) # -4
trunc(-3.78) # -3
trunc(3.78) # 3
round(3.1415926, digits=4) # 3.1415
log(10,2) # 3.321928
log(10) # 2.302585
log10(10) # 1```

## 八、其他实用函数

```x<- c(1,2,3,4)
length(x)
rep(x,2)
rep(1,10)
seq(1,2,by=0.2)```

## 将函数应用于数据框和矩阵

```b <- c(1.23, 4.271, 9.2727)
#向0方向取整
trunc(b)
#runif(n, min, max)函数，这个函数生成均匀分布的值，n为个数，min和max分别是最小值和最大值，默认参数为0和1。
d <- matrix(runif(12),nrow=3)
#对其中的每一个元素取对数
log(d)```