单位矩阵

矩阵快速幂模板

血红的双手。 提交于 2020-04-07 08:33:16
第一部分:矩阵的基础知识 1.结合性 (AB)C=A(BC). 2.对加法的分配性 (A+B)C=AC+BC,C(A+B)=CA+CB . 3.对数乘的结合性 k(AB)=(kA)B =A(kB). 4.关于转置 (AB)'=B'A'. 一个矩阵就是一个二维数组,为了方便声明多个矩阵,我们一般会将矩阵封装一个类或定义一个矩阵的结构体,我采用的是后者。(弱鸡的我也直只会用结构体实现) 第二部分:矩阵相乘 若A为n×k矩阵,B为k×m矩阵,则它们的乘积AB(有时记做A·B)将是一个n×m矩阵。前一个矩阵的列数应该等于后一个矩阵的行数,得出的矩阵行数等于前一个矩阵的行数,列数等于后一个矩阵的行数。 其乘积矩阵AB的第i行第j列的元素为: 举例:A、B均为3*3的矩阵:C=A*B,下面的代码会涉及到两种运算顺序,第一种就是直接一步到位求,第二种就是每次求一列,比如第一次,C00+=a00*b00,C01+=a00*b01……第二次C00+=a00*b10,C01+=a01*b11……以此类推。。。 C00 = a00*b00 + a01*b10 + a02*b20 C01 = a00*b01 + a01*b11 + a02*b21 C02 = a00*b02 + a01*b12 + a02*b22 C10 = a10*b00 + a11*b10 + a12*b20 C11 = a10

初等矩阵

∥☆過路亽.° 提交于 2020-02-24 04:30:17
由单位矩阵E经过一次初等变换得到的矩阵称为初等矩阵。 三种初等变换对应有三种初等矩阵。 (1)把单位矩阵E的第i, j行对换,得初等矩阵。 (2)以数k≠0乘以单位矩阵E的第i行(或第i列),得初等矩阵 (3)以数k乘以单位矩阵的第j行加到第i行上或以k乘以单位矩阵的第i列加到第j列上,得初等矩阵 来源: CSDN 作者: 码农A 链接: https://blog.csdn.net/wo198711203217/article/details/104461462

线代自学笔记

陌路散爱 提交于 2020-02-17 18:42:30
QwQ……不知不觉这么久没写过博客了 感觉自己线代好菜啊……准备这些天去听听 吉尔伯特爷爷的公开课 ,好好自学一下 大概看了看时间安排,感觉一天两节课正好够 为了方便督促自己,每天把笔记贴在这里好了 1.方程组的几何解释 每一个 \(n\) 元线性方程组都可以用矩阵表示。除此之外还可以对方程组做以下解释: 行图像:每个方程的解都可以表示为 \(n\) 维空间内的一个超平面,所有超平面的交就是整个方程组的解。 (对于系数矩阵可逆的情况,所有超平面的交应当恰好是一个点。) 列图像:把方程组的每一列都看成一个列向量,那么方程组就可以看成 \(n\) 个列向量线性组合形成对应的常数向量。方程组的解代表每个列向量对应的系数。 在不考虑求解方程组时,列图像的思考方向还会产生另一个问题:列向量的所有线性组合能否充满整个 \(n\) 维空间? 求解方程组的系统方法:消元法 2.矩阵消元 对于方程组 \(Ax=b\) ,可以用一系列初等变换将 \(A\) 变为上三角矩阵 \(U\) ,之后直接倒序回代即可得到整个方程组的解。通常称为高斯消元(Gauss Elimination)。 主元(pivot)不能为0。为了找到主元,可能还需要做一些行交换。 行列式等于主元之积 如果某一次无法找到任何主元,则说明此方程组无解或解不唯一,同时也说明 \(A\) 是奇异矩阵。

单位矩阵

浪尽此生 提交于 2020-01-16 02:34:31
单位矩阵 题目描述 X是一个灰常讨厌数学的学生,所以想请你帮他解决一个简单的关于矩阵的问题。给定一个只有0和1构成的大小为M*N的矩阵,在其中找到最大的子单位矩阵。单位矩阵是指主对角线上元素全部为1,其余元素全部为0的方阵。主对角线是指左上角到右下角方向的对角线。数据规模(1<=M,N<=1000)。 输入格式 多组数据输入,每组第一行输入M和N,空格分开,接下来M行输入矩阵数据,每行N个元素,输入以文件尾(EOF)结束。 输出格式 对于每组数据,输出该矩阵中最大子单位矩阵的行数,每次输出独占一行。 输入样例 复制 5 6 010000 010001 010000 001000 100111 2 5 01000 00110 输出样例 复制 3 2 会花思路代码段: # include <iostream> # include "stdio.h" # include <cstring> using namespace std ; int a [ 1005 ] [ 1005 ] = { 0 } ; int f [ 1005 ] [ 1005 ] = { 0 } ; int main ( ) { int n , m ; char c ; while ( scanf ( "%d %d" , & n , & m ) != EOF ) { int maxx = 0 ; int z [ 1005

opencv——常见的操作

試著忘記壹切 提交于 2019-12-01 17:23:17
一 图像阈值处理 准备一张灰度图像 阈值处理通常是设定一个阈值,让图片的所有像素点的值与其比较做出一系列的操作。 在opencv常用的阈值处理函数有五种,分别是THRESH_BINARY、THRESH_BINARY_INV、THRESH_TRUNC、THRESH_TOZERO、THRESH_TOZERO_INV。接下来分别看下这几种处理图片后的效果 1. THRESH_BINAR # 像素值超过127的变成255,否则为0,亮的更亮ret,threshold1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY) 2. THRESH_BINARY_INV # 像素值超过127的变成0,否则为255,亮的更暗ret,threshold2 = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV) 3. THRESH_TRUNC # 像素值超过127的变成127,否则不变,理解成图片整体变暗 ret,threshold3 = cv2.threshold(img,127,255,cv2.THRESH_TRUNC) 4. THRESH_TOZERO # 像素值超过127的不变,否则为0,理解成加大图片的对比度 ret,threshold4 = cv2.threshold(img,127,255,cv2

机器学习基础

ε祈祈猫儿з 提交于 2019-12-01 07:26:41
关键技术 特征: 比如鸟的体重、后背颜色等成为特征 机器学习的主要任务是分类 训练集: 用于训练机器学习算法的样本集合 目标变量: 机器学习算法的预测结果 机器学习算法通常都有两个独立的样本集: 训练数据和测试数据 主要任务 监督学习: 这类算法知道要预测什么,即目标变量的分类信息,比如回归和分类 无监督学习:没有类别信息和目标值 如何选择合适的算法 选择算法需要考虑两个问题: 使用机器学习的目的,想要算法完成何种任务 如果要预测目标变量的值,则选择监督学习算法,否则选择无监督学习算法, 确定监督学习算法--> 进一步确定目标变量类型-->如果是离散类型可以选择分类算法,如果变量是连续型则需要选择回归算法 需要收集和分析的数据是什么 对数据了解的越充分,越容易创建符合实际需求的应用程序 主要了解数据的以下特性: 特征值是离散型变量还是连续型的变量 特征值是否存在缺失的值,何种原因造成缺失 数据中是否存在异常值 某个特征发生的频率如何 一般不存在最好的算法或者给出最好结果的算法,发展最好算法的关键环节是反复试错的迭代过程。 开发机器学习应用程序的步骤 收集数据 爬虫、RSS反馈、设备发送过来的实测数据 准备输入数据 得到数据,确保数据的格式符合要求 分析输入数据,此步骤主要是人工分析一起得到的数据,主要作用是确保数据集中没有垃圾数据 训练算法 将得到的格式化数据输入到算法

机器学习(一)——机器学习基础

你。 提交于 2019-11-30 17:14:48
机器学习实战(Peter Haarrington) 读书笔记 最近我脑海里总有一个声音,就是,去探索新的领域。在某方面的学习认知加深,会加大自己在知识领域的盲区,迫于工作压力,脑海总会对你说,你应该学习工作所需要的知识。但现实并无法界定什么知识是你工作真正需要的。类似在黑暗中去寻找一把钥匙,人的知识领域想要去寻找未知领域的钥匙,你将必定摸着黑去探索。 ————2019.9.29 一、机器学习基础 1.什么是机器学习? 机器学习简单来说是机器可以习得人的行为。 2.机器学习的关键术语? 鉴别鸟类,我们需要一些属性,如体重,翼展等。 那么,体重,翼展类别则是特征,鸟的种类则是目标变量 3.机器学习的主要任务? 使用多种算法来进行解决同一个事物。 类似: 1.监督学习 k-近邻算法 线性回归 朴素贝叶斯算法 局部加权线性回归 支持向量机 决策树 Ridge回归 Lasso最小回归系数统计 2.无监督学习 K-均值 最大期望算法 DBSCAN Parzen窗设计 类似,如果目标变量是离散型,则选择分类器算法。如果目标变量为连续型,则选择回归算法。 4.开发机器学习应用程序的步骤? 1.收集数据 2.准备输入数据 3.分析输入数据 4.训练算法 5.测试算法 6.使用算法 5.Python语言的优势? 1.语法清晰 2.容易操作文本文件 3.使用广泛,存在大量的开发文档 6

Python与线性代数基本概念

牧云@^-^@ 提交于 2019-11-30 08:15:26
在Python中使用Numpy创建向量: x = np.array([1, 2, 3, 4]) 创建3 x 3矩阵 B = np.array([[1, 2],[3, 4],[5, 6]]) Shape形状,也可称为维度,表示矩阵中每个维度的具体数值; B.shape 3 x 2 转置 行向量可转置为列向量,列向量转置为行向量 如为方阵转置后行数列数不变,对于非方阵,2 x 3矩阵转置后为3 x 2矩阵 B_t = A.T 检查转置后形状shape B_t.shape 矩阵加法 矩阵相加为两个矩阵对应的元素相加; A = np.array([1,2],[3,4]) B = np.array([4,5],[5,6]) C = A + B = [[5, 7],[8, 10]] 如标量与矩阵相加规则为:标量与矩阵中对应的每个元素相加; 广播   广播为Numpy的机制,使得Numpy可以处理各个不同形状(shape)之间的操作,较小的阵列将会被扩充以匹配较大的阵列形状;   就如上面使用标量与矩阵做相加元素,实际上Numpy把标量转成了与矩阵相同维度的矩阵与该矩阵进行相加;   比如一个3 x 2 矩阵与一个3 x 1矩阵相加,Numpy会自动把3 x 1矩阵复制一列形成3 x2矩阵与该3 x 2矩阵相加,使得两个矩阵的shape能够匹配; 矩阵乘法   矩阵乘法与矩阵加法规则并不一样

P1363 幻象迷宫[搜索]

余生颓废 提交于 2019-11-27 05:18:05
题目描述 (喵星人LHX和WD同心协力击退了汪星人的入侵,不幸的是,汪星人撤退之前给它们制造了一片幻象迷宫。) WD:呜呜,肿么办啊…… LHX:momo...我们一定能走出去的! WD:嗯,+U+U! 描述 Description 幻象迷宫可以认为是无限大的,不过它由若干个N*M的矩阵重复组成。矩阵中有的地方是道路,用'.'表示;有的地方是墙,用'#'表示。LHX和WD所在的位置用'S'表示。也就是对于迷宫中的一个点(x,y),如果(x mod n,y mod m)是'.'或者'S',那么这个地方是道路;如果(x mod n,y mod m)是'#',那么这个地方是墙。LHX和WD可以向上下左右四个方向移动,当然不能移动到墙上。 请你告诉LHX和WD,它们能否走出幻象迷宫(如果它们能走到距离起点无限远处,就认为能走出去)。如果不能的话,LHX就只好启动城堡的毁灭程序了……当然不到万不得已,他不想这么做。。。 解析 显然,对于这样无限大的一个迷宫,由于其具有分形的特点,只要能从任意单位矩阵的一点的位置到达另一个单位矩阵的同一位置(相对本单位矩阵的位置),那么其它矩阵的这个点就可以到达,意味着能走出去。 貌似这题的数据不卡单位矩阵可走路径成环的情况,但是窝不知道窝想了好久。。。 对于另一种情况,且无环,如果我们走回到了某个曾经走过的点的位置(相对于无限的迷宫的位置),说明走不出去了。