本次作业二为2.2与2.4,先从2.2开始:

准备:

首先分别生成题目要求的矩阵A和B。

> A <- matrix(1:20,nrow=4,ncol=5)
> A

得:

[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20

> B <- matrix(1:20,nrow=4,ncol=5,byrow=T)
> B

得:

[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
[3,] 11 12 13 14 15
[4,] 16 17 18 19 20

=============================================

解题:

(1):

> C <- A + B;C

(注:“;c”是为了能够回车即输出结果而不需要再输入一次C获取结果)

结果:

[,1] [,2] [,3] [,4] [,5]
[1,] 2 7 12 17 22
[2,] 8 13 18 23 28
[3,] 14 19 24 29 34
[4,] 20 25 30 35 40

(2):

一开始我是这么写的:

> D <- A%*%B;D

结果:

Error in A %*% B : non-conformable arguments

显然,这是因为矩阵的乘法规则要求左边向量的长度等于右边矩阵的行宽。我们只需要将矩阵B转置即可。

> D <- A%*%t(B);D

结果:

[,1] [,2] [,3] [,4]
[1,] 175 400 625 850
[2,] 190 440 690 940
[3,] 205 480 755 1030
[4,] 220 520 820 1120

(3):

这个直接矩阵对应元素相乘即可:

> E <- A*B;E

结果:

[,1] [,2] [,3] [,4] [,5]
[1,] 1 10 27 52 85
[2,] 12 42 80 126 180
[3,] 33 84 143 210 285
[4,] 64 136 216 304 400

(4):

观察A:

[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20

我们只需要将第四行和第四、五列去除即可。

> F <- A[-4,-(4:5)];F

结果:

[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[3,] 3 7 11

(5):

观察B:

[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
[3,] 11 12 13 14 15
[4,] 16 17 18 19 20

我们只需要将第三列去除即可。

  • 方法一:
> G <- B[-5,-3];G

(注:“-5” 这个数是自己定的,只要小于-4即可(避免误删B矩阵的这四列))

结果:

[,1] [,2] [,3] [,4]
[1,] 1 2 4 5
[2,] 6 7 9 10
[3,] 11 12 14 15
[4,] 16 17 19 20

  • 方法二:
> G <- cbind(B[,1],B[,2],B[,4],B[,5]);G

(注:cbind() 把矩阵横向合并成一个大矩阵(列方式),而rbind()是纵向合并(行方式)。)

结果:

[,1] [,2] [,3] [,4]
[1,] 1 2 4 5
[2,] 6 7 9 10
[3,] 11 12 14 15
[4,] 16 17 19 20

接下来是2.4:

准备:

关于按照题目生成一个5阶的Hilbert矩阵,我一开始是这么做的:

> n = 5
> i <- (1:n)
> j <- (1:n)
> hij <- 1/(i+j-1)
> H <- matrix(hij,nrow = 5,ncol = 5)
> H

结果如下:

[,1] [,2] [,3] [,4] [,5]
[1,] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[2,] 0.3333333 0.3333333 0.3333333 0.3333333 0.3333333
[3,] 0.2000000 0.2000000 0.2000000 0.2000000 0.2000000
[4,] 0.1428571 0.1428571 0.1428571 0.1428571 0.1428571
[5,] 0.1111111 0.1111111 0.1111111 0.1111111 0.1111111

好像不太对劲……

于是后期改进:

1、首先计算 i(行):(使用each = n可以让每一个数字重复n次),正好可以填充成矩阵(列)
> n = 5
> i <- matrix(rep(1:n,each = n), nrow = n)
> i

结果:

[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 1 2 3 4 5
[3,] 1 2 3 4 5
[4,] 1 2 3 4 5
[5,] 1 2 3 4 5

2、随后计算 j(行):(这里使用byrow = T (即TRUE缩写),可以参照 i 矩阵,使用byrow = T以行优先的次序转换成矩阵)
> j <- matrix(rep(1:n,each = n), nrow = n, byrow = T)
> j

结果:

[,1] [,2] [,3] [,4] [,5]
[1,] 1 1 1 1 1
[2,] 2 2 2 2 2
[3,] 3 3 3 3 3
[4,] 4 4 4 4 4
[5,] 5 5 5 5 5

3、最后就可以得到矩阵H了:
> H = 1/(i+j-1)
> H

结果:

[,1] [,2] [,3] [,4] [,5]
[1,] 1.0000000 0.5000000 0.3333333 0.2500000 0.2000000
[2,] 0.5000000 0.3333333 0.2500000 0.2000000 0.1666667
[3,] 0.3333333 0.2500000 0.2000000 0.1666667 0.1428571
[4,] 0.2500000 0.2000000 0.1666667 0.1428571 0.1250000
[5,] 0.2000000 0.1666667 0.1428571 0.1250000 0.1111111

=============================================

解题:

(1)、求行列式:

我们通常使用det()函数来求矩阵行列式。

> det(H)

得到结果:

[1] 3.749295e-12

(2)、求逆矩阵:

solve()函数可以求矩阵逆矩阵。

> solve(H)

得到结果:

[,1] [,2] [,3] [,4] [,5]
[1,] 25 -300 1050 -1400 630
[2,] -300 4800 -18900 26880 -12600
[3,] 1050 -18900 79380 -117600 56700
[4,] -1400 26880 -117600 179200 -88200
[5,] 630 -12600 56700 -88200 44100

(3)、求特征值和特征向量:

函数eigen()可以求对称矩阵的特征值与特征向量,其存放着对称矩阵Sm特征值和特征向量,是由列表形式给出的。

> eigen(H)

得到结果:

eigen() decomposition
$values
[1] 1.567051e+00 2.085342e-01 1.140749e-02 3.058980e-04 3.287929e-06
$vectors
[,1] [,2] [,3] [,4] [,5]
[1,] -0.7678547 0.6018715 -0.2142136 0.04716181 0.006173863
[2,] -0.4457911 -0.2759134 0.7241021 -0.43266733 -0.116692747
[3,] -0.3215783 -0.4248766 0.1204533 0.66735044 0.506163658
[4,] -0.2534389 -0.4439030 -0.3095740 0.23302452 -0.767191193
[5,] -0.2098226 -0.4290134 -0.5651934 -0.55759995 0.376245545

其中values是特征值:

[1] 1.567051e+00 2.085342e-01 1.140749e-02 3.058980e-04 3.287929e-06

vectors是特征向量:

[,1] [,2] [,3] [,4] [,5]
[1,] -0.7678547 0.6018715 -0.2142136 0.04716181 0.006173863
[2,] -0.4457911 -0.2759134 0.7241021 -0.43266733 -0.116692747
[3,] -0.3215783 -0.4248766 0.1204533 0.66735044 0.506163658
[4,] -0.2534389 -0.4439030 -0.3095740 0.23302452 -0.767191193
[5,] -0.2098226 -0.4290134 -0.5651934 -0.55759995 0.376245545

=============================================

矩阵的其他知识(搜集资料):

1、dim() 将向量定义成数组

注意:生成矩阵是按列排列的。

eg:

> z=1:12;
> dim(z)=c(3,4);
> z;

结果:

[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12

2、array() 构造多维数组

用法为:array(data=NA,dim=length(data),dimnames=NULL)
data:是一个向量数据。
dim:是数组各维的长度,缺省时为原向量的长度。
dimname:是数组维的名字,缺省时为空。

eg:

> x=array(1:20,dim=c(4,5))
> x

结果:

[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20

3、matrix() 构造矩阵

函数matrix)是构造矩阵(二维数组)的函数,其构造形式为
matrix(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL)
其中data是一个向量数据,nro、是矩阵的行数,ncol是矩阵的列数.当byrow=TRUE时,生成矩阵的数据按行放置,缺省时相当于byrow=FALSE,数据按列放置.dimname。是数组维的名字,缺省时为空.

eg:

> A=matrix(1:15,nrow=3,byrow=TRUE)
> A

结果:

[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
[3,] 11 12 13 14 15

4、t() 转置运算

对于矩阵A,函数t(A)表示矩阵A的转置。

eg:

> A=matrix(1:6,nrow=2);
> A;

结果:

[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6

接着使用t():

> t(A);

结果:

[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6

5、%*% 向量的内积

对于n维向量x,可以看成nxl阶矩阵或lxn阶矩阵。若x与y是相同维数的向量,则x%*%Y表示x与y作内积。

eg:

>x=1:5; Y=2*1:5
>x%*%y

结果:

[,1]
[1,]110

R语言:作业二(矩阵:求行列式、逆矩阵、特征值、特征向量)【补充:矩阵相关运算知识】相关推荐

  1. R语言绘制二维密度图

    R语言绘制二维密度图 二维密度图显示了两个数值变量之间的关系,一个在x轴上表示,另一个在Y轴上表示,与散点图类似,然后计算二维空间中特定区域内的观测数,并用颜色梯度表示.二维密度图有几种类型,以下主要 ...

  2. r语言中对向量求条件语句_R中的条件语句

    r语言中对向量求条件语句 To advance with programming, we need to be able to control the flow of the program exec ...

  3. R语言 表达式对象的求值 eval

    R语言 表达式对象的求值 eval 模式为 "expression"的对象在Expression objects 有具体定义.它们和引用对象的列表非常相似. > ex < ...

  4. R语言作业:1.mpg数据的cty(城市燃油效率)和hwy(高速公路燃油效率)之间有什么关系? 请制作x轴是cty,y轴是hwy的算点图。 请把图片储存起来上传

    这是一份R语言作业: 1.mpg数据的cty(城市燃油效率)和hwy(高速公路燃油效率)之间有什么关系? 请制作x轴是cty,y轴是hwy的算点图. 请把图片储存起来上传 了解哪些公司生产的" ...

  5. R语言按日期分组求皮尔森相关系数矩阵

    R语言按日期分组求相关系数 前几天得到了3700+支股票一周内的波动率,想要计算每周各个股票之间的相关系数并将其可视化.最终结果保存在制定文件夹中.部分数据如下: 先读取数据 data<-rea ...

  6. c语言矩阵求伪逆算法pinv,pinv--求矩阵的伪逆矩阵

    pinv--求矩阵的伪逆矩阵 [功能简介]用于求矩阵的伪逆矩阵. [语法格式] 1.B=pinv(A) 函数返回矩阵A的伪逆矩阵.如果矩阵A是可逆(非奇异)的,那么pinv(A)与inv(A)的结果是 ...

  7. 2.3 matlab矩阵求值(矩阵的行列式值、矩阵的秩、矩阵的积、矩阵的范数和矩阵的条件数)

    1.方阵的行列式 把一个方阵看作一个行列式,并对其按行列式的规则求值,这个值就称为方阵所对应的行列式的值.det(A):求方阵A所对应的行列式的值. >> format rat; > ...

  8. R语言笔记1:数据类型(向量、数组、矩阵、 列表和数据框)

    宏基因组按:科研中数据分析解读占用了我们太多时间,学习R语言是生物测序领域数据(reads count表)分析及可视化的首选.举个例子,扩增子分析从fastq到OTU表至多是de novo或refer ...

  9. 吉大18秋学期C语言作业二答案,吉大18秋《C语言程序设计》在线作业12参考

    ;printf("%d"",s);}          (满分:)A, o. `7 d; b2 o0 h! Z A. 22 $ i: K+ i& J: e3 h+ ...

  10. R语言学习二——工具的使用

    R语言学习(二) 本章学习R语言相关开发工具的使用: 软件下载 软件安装 RStudio的使用 R扩展包的安装与载入 容易遇到的问题 一.软件下载(RStudio) Rstudio下载地址 选择免费版 ...

最新文章

  1. 在docker上安装部署tomcat项目 超简单,拿来主义
  2. mysql多大_mysql的innodb表到底占用多大的空间?
  3. Python读写文件 - 转
  4. 未比对上的bam reads 处理
  5. MySQL的安装及使用教程
  6. linux 下搭建yolov3错误,Ubuntu20.04+cuda11.1+yolo3 目标检测 深度学习系统 真正从0搭建 包含各类可能遇到的错误...
  7. commit git 删除文件夹_Git-git删除文件夹/文件(删除/不删除本地文件/文件夹)
  8. 其实我只想设置客户端实现跨域请求
  9. Facebook内布拉斯加州数据中心将扩建100万平方英尺
  10. matlab的开方算法_常见算法的MATLAB实现
  11. python django文档_python Django中文文档下载
  12. AI资源对接需求汇总:第2期
  13. 2020中国边缘计算企业20强
  14. windows 10 windows凭据管理器使用已记录的密码
  15. 免费云服务器+免费虚拟主机推荐
  16. HTML/CSS中的空格如何处理
  17. 软件项目“免坑”指南
  18. 浪潮之巅—帝国的余晖ATT公司
  19. 使用c语言实现传输的流量控制
  20. mysql datetime 计算相隔时间

热门文章

  1. SPSS学习(五)独立样本t检验
  2. basler相机参数简要中文说明_basler 相机参数设置
  3. Excel VBA小游戏,上班摸鱼必备
  4. 动态规划之LCS算法
  5. 自动驾驶的三维点云处理与学习
  6. iOS逆向专栏总目录(持续更新)
  7. 车型数据库设计 mongodb
  8. Otsu最大类间方差法
  9. 【百度AI图像识别】LOGO帝来袭~ 个体再小、LOGO不能少
  10. 交互式应用安全测试(IAST)学习笔记