首页 > 其他分享 >线性代数笔记

线性代数笔记

时间:2023-07-02 23:44:25浏览次数:38  
标签:变换 矩阵 cols 笔记 majorrow 线性代数 type row

  本文目的:之前零零散散也接触和学习了线代,为了提高对计算机视觉成像与标定的理解。故重新回顾线性代数。后续还会了解线性代数几何意义,以及相机标定原理。这系列文章主要以了解线代知识为主。

基于线性代数及其应用(原书第5版)的笔记

  1线性方程租

 1.1 线性方程租

   形如 a1x1 + a2x2+...+anx= b,系数a已知,n为任意正整数,a为实数或者是复数,满足等式的所有解叫解集,若两个线性方程组解集相同则称两个线性方程组等价。

解集有三种情况 : 1 无解  2有唯一解  3有无穷多解, 举例如下

x1 - x2 + x3 = 0

  2x2 - 8x3 = 8

5x1      -5x3 = 10        

可以将其化为矩阵

[ 1 -1 1

  0  2 -8

  5  0  -5 ] 成为系数矩阵

如果带上等号后面

[ 1 -1 1    0

  0  2 -8   8

  5  0  -5  10]  

就是增广矩阵

矩阵维度即矩阵的行和列,增广矩阵有3行4列。 3行表示3个等式,4列表示有(4-1)个未知数

 求解线性方程租

  求解线性方程组,主要是用初等行变换。 初等行变换有3种  1倍加变换 某一行与另一行的n倍相加  2对等变换 把两行对调  3倍乘变换:某一行所有元素乘以一个非零数。行变换是可逆的,并且行变换不会改变线性方程组的解集。求解过程略,相当于解方程组。每一行都是一个等式,在不改变等式成立的条件下去做化简就可以得到答案。

  接下来的问题就是线性方程组的解是否存在以及以及解有多少个。

  初等行变换可以用矩阵来表达.

对等[ 1  0  0

  0   0  1  

  0  1 0]  将第二行与第三行兑换

倍乘[ 1  0  0

  0  1  0  

  0  0 3] 将第三行乘以三倍

倍加

  [ 1  0  0

  0  1  0  

  3  0 1] 将第三行乘以三倍加到第一行

都是放在矩阵的左边,与矩阵左乘就是初等行变换。与矩阵右乘就是初等列变换。 初等边行变换不改变方阵的秩,但是有可能改变方阵的行列式。

  1.2 行化简与阶梯型矩阵

 行阶梯矩阵定义:

 

 

有自己写的通过高斯消元得到最简行阶梯矩阵,用到opencv库,是一个很简易,仅仅是为了了解高斯消元怎么获得行阶梯矩阵而写的。

void SolveGuass(cv::Mat const& A, cv::Mat const& B, cv::Mat& x ,int slove_type)
{
cv::Mat B_;
if (slove_type == GuassSloveType::SOLVE_AX) {
CV_Assert(A.type() == B.type() && B.cols == 1 && A.rows == B.rows);
B_ = B;
}
else if (slove_type == GuassSloveType::SOLVE_INVERT) {
CV_Assert(A.cols == A.rows);
B_ = cv::Mat::eye(A.size(), A.type());
}
x = cv::Mat::zeros(A.rows,A.cols+B_.cols,A.type());//增广矩阵
A.copyTo(x.colRange(0, A.cols));
B_.copyTo(x.colRange(A.cols,x.cols));
for (int c = 0; c < x.cols-1; c++) {
int majorrow = -1;
for (int r = c; r < x.rows; r++) {
if (majorrow== -1 &&x.at<float>(r,c) != 0) { //选取为主元
if (slove_type != SOLVE_LU) {
x.row(r) /= x.at<float>(r, c);
if (r != c) {
auto temp = x.row(r).clone();
x.row(c).copyTo(x.row(r));
temp.copyTo(x.row(c));
majorrow = c;
}
else {
//不能用LU分解.LU分解仅使用倍加
x = x.zeros(x.rows,x.cols,x.type());
return ;
}
}
majorrow = r;
continue;
}
if (majorrow != -1 && x.at<float>(r,c) != 0) {
x.row(r) -= x.at<float>(r, c) * x.row(majorrow);
}
}
if (majorrow != -1) {
for (int r = 0; r < c; r++) {
x.row(r) -= x.at<float>(r, c) * x.row(majorrow);
}
}
}
}

//整体思路是

1 判断是否符合Ax=B

2 获得增广矩阵

3 获得主元,然后化简。

4 返回值是最简增广矩阵。

1.3 向量方程

  

标签:变换,矩阵,cols,笔记,majorrow,线性代数,type,row
From: https://www.cnblogs.com/hcx940215/p/17521692.html

相关文章

  • C# 学习笔记 - 类
    类与其他面向对象编程语言一样,C#序的功能是在一个或多个类中实现的。类的方法(methods)和属性(properties)包含定义类行为方式的代码。C#通过封装属性和方法,以及启用多种类型的多态性(包括通过继承实现的子类型多态性(subtypingpolymorphismviainheritance)和泛型的参数多态性(para......
  • JavaScript 算法和数据结构之——基础JavaScript 笔记
    做整理是为了知识更加系统一些,遂记录参考资料js基础算法JavaScript字符串可以用单引号或双引号查找字符串长度.length空格符也会计算在内使用方括号查找字符串中的第一个字符方括号表示法(Bracketnotation)是一种在字符串中的特定index(索引)处获取字符的方法xxx[0]获取......
  • C# 学习笔记 - 命名空间
    命名空间命名空间的存在是为了解决编译器无法处理的重名问题。举个例子:如果没有命名空间,你将无法创建一个名为Console的类,因为.NET已经在System命名空间中使用了这个名称。命名空间采用如下方式进行定义:namespaceMyApplication{//Thecontenttoresideinthe......
  • 快速数论变换NTT学习笔记
    前言在这篇文章中我介绍了什么是\(\text{FFT}\),但是在文中我们也说了一嘴这玩意是有精度误差的,三角函数和复数导致我们不得不进行取整操作。只要毒瘤出题人原因,那就可以\(\text{HackFFT}\)。Tips:根据《NOI大纲》的内容,卡精度和卡常数通常是不允许的。所以\(\text{FFT}......
  • Android:倒计时、定时器、定时执行次数使用笔记
    原文:https://blog.csdn.net/weixin_40420578/article/details/103876900一.倒计时(3、2、1)CountDownTimer() //一共3秒,每隔1秒执行一次 CountDownTimertimer=newCountDownTimer(3000,1000){ @Override publicvoidonTick(longmillisUntilFi......
  • C语言笔记:第10章 数组和指针
    数组:https://www.cnblogs.com/mjios/archive/2013/03/15/2961147.html指针:https://www.cnblogs.com/mjios/archive/2013/03/16/2963645.html ......
  • HDMI笔记2-HDMI接口类型
    HDMI的规格书中规定四种HDMI接口,分别是:HDMIAType应用于HDMI1.0版本,总共有19pin,规格为4.45mm×13.9mm,为最常见的HDMI接头规格,相点对点于DVISingle-Link传输。在HDMI1.2a之前,最大能传输165MHz的TMDS,所以最大传输规格只能在于1600×1200(TMDS162.0MHz)。PinPin定义......
  • es 笔记二之基础查询
    本文首发于公众号:Hunter后端原文链接:es笔记二之基础查询这一篇笔记介绍es的基础查询。基础查询包括很多,比如排序,类似数据库limit的操作,like操作,与或非等,对于这些操作,我会在介绍他们的用法之后加上对应的数据库sql便于理解。注意:下面的操作都在kibana中实现以下是......
  • 【学习笔记】Bostan-Mori 算法
    其实是用于常系数齐次线性递推,只不过本篇博文只讲解如何求分式的高次项系数。已知多项式\(f(x),g(x)\),要求:\([x^k]\dfrac{f(x)}{g(x)}\),其中\(f(x),g(x)\)的次数为\(n,m\),\(n,m\le10^5,k\le10^9\)。算法流程如下:分式上下同乘\(g(-x)\),也就是\(g\)的奇次项都取反的多项......
  • HDMI笔记
    关键词:TMDS:最小化传输差分信号(TransitionMinimizedDifferentialSignaling,简称TMDS)是美国SiliconImage公司开发的一项高速传输数据技术,可用于DVI与HDMI的视频传输接口。TMDS差分传输技术是一种利用2个引脚间电压差来传送信号的技术,TMDS具备4个Channel,前3条缆线分是YU(Pb)V(Pr......