iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >R语言 实现矩阵相乘100次
  • 185
分享到

R语言 实现矩阵相乘100次

2024-04-02 19:04:59 185人浏览 泡泡鱼
摘要

【D1 D2】2*1 【T1 T2】1*2 要求D1和D2随机的变动, 矩阵相乘100次 rm(list=ls()) GC() options(scipen = 2000) ##

【D1 D2】2*1

【T1 T2】1*2

要求D1和D2随机的变动, 矩阵相乘100次


rm(list=ls())
GC()
options(scipen = 2000)
##################写成函数###########3
#################定义TT矩阵(1*2)
TT <- matrix(c(1,3),1,2)
DD<- matrix(c(1,2),2,1)
result1 <- DD %*% TT
m1=result1
######################设定随机取的整数范围
x <- 1:100
m=data.frame()
#################变换DD矩阵(2*1)##############
for (i in 2:100){
 D2<- matrix(c(sample(x,1,replace=TRUE),sample(x,1,replace=TRUE)),2,1)
 # print(D2)
 result <- D2%*% TT
 print(result)
 m <- rbind(m,result)
 result1 <- result %*% result1
}
(finally_result <- result1)
(m_all <- rbind(m,m1))

补充:R语言之矩阵操作和运算

1.转置运算

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


> A=matrix(1:6,nrow=2);
> A;
  [,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
> t(A);
  [,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6

2.求方阵的行列式

函数det()是求矩阵行列式的值,如


> det(matrix(1:4,ncol=2));
[1] -2

3.向量的内积

对于n维向量x,可以看成nxl阶矩阵或lxn阶矩阵。若x与y是相同

维数的向量,则x%*%Y表示x与y作内积.例如,


>x=1:5; Y=2*1:5
>x%*%y
  [,1]
[1,]110

函数crossprod()是内积运算函数(表示交叉乘积),crossprod(x,y)计算向量x与y的内积,即t(x) %*% y'。crossprod(x)表示x与x的内积.

类似地,tcrossprod(x,y)表示'x%*%t(Y)',即x与y的外积,也称为叉积。tcrossprod(x)表示x与x作外积.如:


> x=1:5; y=2*1:5;
> crossprod(x);
  [,1]
[1,] 55
> crossprod(x,y);
  [,1]
[1,] 110
> tcrossprod(x);
  [,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 2 4 6 8 10
[3,] 3 6 9 12 15
[4,] 4 8 12 16 20
[5,] 5 10 15 20 25
> tcrossprod(x,y);
  [,1] [,2] [,3] [,4] [,5]
[1,] 2 4 6 8 10
[2,] 4 8 12 16 20
[3,] 6 12 18 24 30
[4,] 8 16 24 32 40
[5,] 10 20 30 40 50

4.向量的外积(叉积)

设x和y是n维向量,则x%o%y表示x与y作外积.例如


> x%o%y;
  [,1] [,2] [,3] [,4] [,5]
[1,] 2 4 6 8 10
[2,] 4 8 12 16 20
[3,] 6 12 18 24 30
[4,] 8 16 24 32 40
[5,] 10 20 30 40 50

outer()是更为强大的外积运算函数,outer(x,y)计算向量二与y的外积,它等价于x %o%y函数。

outer()的一般调用格式为 outer(x,y,fun=”*”)

其中x, y矩阵(或向量),fun是作外积运算函数,缺省值为乘法运算。函数outer()在绘制三维曲面时非常有用,它可生成一个x和y的网格。

5.矩阵的乘法

设A和B为两个矩阵,通常意义下的矩阵乘法是通过A%*%B来完成,crossprod(A,B)表示的是

t(A)%*%B,而tcrossprod(A,B)表示的是A%*%t(B)。最后我们通过运算知道x%*%A%*%x为二次型。


> A=array(1:9,dim=(c(3,3)))
> B=array(9:1,dim=(c(3,3)))
> A%*%B;
  [,1] [,2] [,3]
[1,] 90 54 18
[2,] 114 69 24
[3,] 138 84 30
> crossprod(A,B)==t(A)%*%B;
  [,1] [,2] [,3]
[1,] TRUE TRUE TRUE
[2,] TRUE TRUE TRUE
[3,] TRUE TRUE TRUE
> tcrossprod(A,B)==A%*%t(B);
  [,1] [,2] [,3]
[1,] TRUE TRUE TRUE
[2,] TRUE TRUE TRUE
[3,] TRUE TRUE TRUE

6.生成对角阵和矩阵取对角运算

函数diag()依赖于它的变量,当v是一个向量时,diag(v)表示以v的元素为对角线元素的对角阵.当M是一个矩阵时,则diag(M)表示的是取M对角线上的元素的向量.如


> v=c(1,4,5);
> diag(v);
  [,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 4 0
[3,] 0 0 5
> M=array(1:9,dim=c(3,3));
> diag(M);
[1] 1 5 9

7.解线性方程组和求矩阵的逆矩阵

若求解线性方程组Ax=b,其命令形式为solve(A,b),求矩阵A的逆,其命令形式为solve(A).设矩阵A=t(array(c(1:8,10),dim=c(3,3))),b<-c(1,1,1),则解方程组Ax=b的解x和求矩阵A的逆矩阵的命令如下:


> A=t(array(c(1:8,10),dim=c(3,3)));
> b=c(1,1,1);
> x=solve(A,b);
> x;
[1] -1.000000e+00 1.000000e+00 3.806634e-16
> solve(A);
   [,1]  [,2] [,3]
[1,] -0.6666667 -1.333333 1
[2,] -0.6666667 3.666667 -2
[3,] 1.0000000 -2.000000 1

8.求矩阵的特征值与特征向量

函数eigen(Sm)是求对称矩阵Sm的特征值与特征向量,其命令形式为:ev=eigen(Sm),则ev存放着对称矩阵Sm特征值和特征向量,是由列表形式给出的,其中ev$values是Sm的特征值构成的向量,ev$vectors是Sm的特征向量构成的矩阵.如


> Sm=crossprod(A,A);
> ev=eigen(Sm);
> ev;
$values
[1] 303.19533618 0.76590739 0.03875643
$vectors
   [,1]   [,2]  [,3]
[1,] -0.4646675 0.833286355 0.2995295
[2,] -0.5537546 -0.009499485 -0.8326258
[3,] -0.6909703 -0.552759994 0.4658502

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。如有错误或未考虑完全的地方,望不吝赐教。

--结束END--

本文标题: R语言 实现矩阵相乘100次

本文链接: https://www.lsjlt.com/news/122714.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • R语言 实现矩阵相乘100次
    【D1 D2】2*1 【T1 T2】1*2 要求D1和D2随机的变动, 矩阵相乘100次 rm(list=ls()) gc() options(scipen = 2000) ##...
    99+
    2022-11-12
  • R语言实现导出矩阵
    程序实在是调不出来了,我决定破釜沉舟,直接把所有表格都打印出来,看看数据到底哪儿有问题。 然后就开始了闹心的矩阵导出。。。 首先,百度了一下,数据导出的代码为: write.ta...
    99+
    2022-11-12
  • C语言如何实现矩阵连乘
    本篇内容主要讲解“C语言如何实现矩阵连乘”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言如何实现矩阵连乘”吧!动态规划法题目描述:给定n个矩阵{A1,A2....An},其中Ai与Ai+1是...
    99+
    2023-06-16
  • R语言RcppEigen计算点乘与矩阵乘法连乘算法错误解决
    计算点乘与矩阵乘法连乘计算错误 当我们想将 R 中的连乘(如下公式所示)修改成 Rcpp 代码时, t(X)^2 %*% X 理论上我们只用在 .cpp 代码中输入下述语句即...
    99+
    2022-11-12
  • R语言创建矩阵的实现方法
    矩阵 向量vector用于描述一维数据,是R语言中最基础的数据结构形式 矩阵matrix可以描述二维数据,和向量相似,其内部元素可以是实数、复数、字符、逻辑型数据 矩阵...
    99+
    2022-11-11
  • python中怎么利用numpy.matmul实现矩阵相乘
    这篇文章将为大家详细讲解有关python中怎么利用numpy.matmul实现矩阵相乘,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。说明该函数返回两个数组的矩阵乘积。虽然返回二维数组的正常乘...
    99+
    2023-06-20
  • R语言-实现按日期分组求皮尔森相关系数矩阵
    R语言按日期分组求相关系数 前几天得到了3700+支股票一周内的波动率,想要计算每周各个股票之间的相关系数并将其可视化。最终结果保存在制定文件夹中。 部分数据如下: 先读取数据 ...
    99+
    2022-11-12
  • R语言出现矩阵/缺失值怎么办
    这篇文章将为大家详细讲解有关R语言出现矩阵/缺失值怎么办,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。缺失值处理一般包括三步: 识别缺失数据; 检查导致数据缺失的原因; 删除包含缺失值的实例或用合理的数值...
    99+
    2023-06-08
  • R语言RcppEigen计算点乘与矩阵乘法连乘算法错误解决方法是什么
    本篇内容主要讲解“R语言RcppEigen计算点乘与矩阵乘法连乘算法错误解决方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“R语言RcppEigen计算点乘与矩阵乘法连乘算法错误解决方法...
    99+
    2023-06-25
  • C++实现对象化的矩阵相乘小程序
    复习数学1的线性代数,矩阵相乘这块有点晕,想编个C++对象化的矩阵相乘小程序。 相乘部分 void sum(juzhen a, juzhen b, juzhen &c) ...
    99+
    2022-11-12
  • R语言中向量和矩阵简单运算的实现
    一、向量运算 向量是有相同基本类型的元素序列,一维数组,定义向量的最常用办法是使用函数c(),它把若干个数值或字符串组合为一个向量。   1.R语言向量的产生方法 &...
    99+
    2022-11-11
  • C/C++如何实现两矩阵相乘之模拟法
    目录数学中两矩阵怎么相乘C/C++语言实现总结数学中两矩阵怎么相乘 矩阵相乘需要前面矩阵的列数与后面矩阵的行数相同方可相乘。 将前面矩阵的第i行各元素分别与后面矩阵的第j列相应位置元...
    99+
    2023-02-06
    c++两个矩阵相乘 C++矩阵相乘 c++矩阵运算
  • R语言 出现矩阵/缺失值的解决方案
    缺失值处理一般包括三步: 1. 识别缺失数据; 2. 检查导致数据缺失的原因; 3. 删除包含缺失值的实例或用合理的数值代替(插补)缺失值。 1.判断缺失值 函数is.na()、is...
    99+
    2022-11-11
  • R语言矩阵知识点总结及实例分析
    矩阵是其中元素以二维矩形布局布置的R对象。 它们包含相同原子类型的元素。 虽然我们可以创建一个只包含字符或只包含逻辑值的矩阵,但它们没有太多用处。 我们使用包含数字元素的矩阵用于数学...
    99+
    2022-11-12
  • 怎么在R语言项目中实现一个向量和矩阵
    这期内容当中小编将会给大家带来有关怎么在R语言项目中实现一个向量和矩阵,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、向量运算向量是有相同基本类型的元素序列,一维数组,定义向量的最常用办法是使用函数c(...
    99+
    2023-06-08
  • C语言如何实现杨氏矩阵
    本篇内容主要讲解“C语言如何实现杨氏矩阵”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言如何实现杨氏矩阵”吧!题目如下:有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编...
    99+
    2023-07-05
  • python中使用numpy包的向量矩阵相乘np.dot和np.matmul实现
    目录1.向量和矩阵2.向量和向量乘法1.* 对应对应位置相乘2.广播机制3.向量点乘np.dot3.矩阵和向量乘法1.对应位置相乘2.矩阵乘法4.矩阵矩阵乘法 1.直接相乘...
    99+
    2023-02-15
    numpy np.dot np.matmul numpy向量矩阵相乘
  • R语言 实现输出九九乘法表
    在R语言中,使用cat()函数可以将多个变量连接起来并输出到控制台或者File文件中。 下面,以九九乘法表为例来 演示cat()函数的用法 //jiujiubiao.R  ## ...
    99+
    2022-11-11
  • C语言实现矩阵运算案例详解
    C语言实现矩阵运算 给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。 输入格式: 输入第一行给出正整...
    99+
    2022-11-12
  • C语言杨氏矩阵简单实现方法
    今天来向大家介绍一个用C语言实现杨氏矩阵的问题。题目如下: 有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。 要求:时...
    99+
    2023-02-01
    C语言杨氏矩阵 C语言杨氏矩阵实现
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作