究竟应该用矩阵左乘和右乘还是右乘,还有那个坐标应该以

关于线代矩阵方程!为什么可逆就可以两边同时左乘或右乘?【考研吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:3,420,218贴子:
关于线代矩阵方程!为什么可逆就可以两边同时左乘或右乘?收藏
求助!例如AX=B
为什么可以A^-1AX=A^-1B
很简单但不懂!
别沉啊!求解答!
不就是直接的代换嘛
就是相当于在5×5=25时给4×5×5=4×25,同时左乘或者右乘是为了是式子两边相等。
之所以乘以A^-1是因为A^-1A=E,而EX=X,所以就求出X啦
登录百度帐号【数学】线性代数 有关矩阵左乘右乘之类问题.当A=__时,A(a11 a12 a13 a21 a22 a23 a31 a32 a33)=(a11+6a31 a12+6a32 a13+6a33 a21 a22 a23 a31 a32 a33) 我想问题目用到的是什么知识点?有一些规则具体是哪些呢?感激不尽!-学路网-学习路上 有我相伴
线性代数 有关矩阵左乘右乘之类问题.当A=__时,A(a11 a12 a13 a21 a22 a23 a31 a32 a33)=(a11+6a31 a12+6a32 a13+6a33 a21 a22 a23 a31 a32 a33) 我想问题目用到的是什么知识点?有一些规则具体是哪些呢?感激不尽!
来源:互联网 &责任编辑:王小亮 &
线性代数有关矩阵左乘右乘之类问题。初等变换与初等矩阵。需要了解一个初等矩阵左乘以或者右乘以一个矩阵有何作用。新的矩阵的第一行的每一个元素多出来的一项是原矩阵的第三行元素的6倍,所以原矩阵的...线性代数有关矩阵左乘右乘之类问题.当A=__时,A(a11a12a1...初等变换与初等矩阵.需要了解一个初等矩阵左乘以或者右乘以一个矩阵有何作用.新的矩阵的第一行的每一个元素多出来的一项是原矩阵的第三行元素的6倍,所以原矩阵的第三...线性代数分块矩阵左乘右乘问题因为你是从一个1*2变到1*2,左乘1*1才有可能所以是左乘A^-1A^-1(AE)=EA^-11*1*1*2=1*2线性代数里矩阵在左还是在右的问题我是自学的概念很混乱不...这些相乘表示并没有统一的规律,之所以采用那种方式是因为那种表达能够表示相应的变换比如说用Y表示成X,(Y,X是列向量),则X=CY按照矩阵乘开之后就是X1=a11Y1+a12Y2+...求教线性代数高手,矩阵乘法为什么那么奇怪?以及所谓的线性映...最近看了相关书籍自己思考很久,很多困惑解开了,毕竟我们的教学很没劲,线性代数的很...1.这个矩阵乘法就是这么定义的,所以左乘与右乘不一样。矩阵可以理解为线性变换的...线性代数有关矩阵左乘右乘之类问题.当A=__时,A(a11a12a13a21a22a23a31a32a33)=(a11+6a31a12+6a32a13+6a33a21a22a23a31a32a33)我想问题目用到的是什么知识点?有一些规则具体是哪些呢?感激不尽!(图2)线性代数有关矩阵左乘右乘之类问题.当A=__时,A(a11a12a13a21a22a23a31a32a33)=(a11+6a31a12+6a32a13+6a33a21a22a23a31a32a33)我想问题目用到的是什么知识点?有一些规则具体是哪些呢?感激不尽!(图4)线性代数有关矩阵左乘右乘之类问题.当A=__时,A(a11a12a13a21a22a23a31a32a33)=(a11+6a31a12+6a32a13+6a33a21a22a23a31a32a33)我想问题目用到的是什么知识点?有一些规则具体是哪些呢?感激不尽!(图6)线性代数有关矩阵左乘右乘之类问题.当A=__时,A(a11a12a13a21a22a23a31a32a33)=(a11+6a31a12+6a32a13+6a33a21a22a23a31a32a33)我想问题目用到的是什么知识点?有一些规则具体是哪些呢?感激不尽!(图8)线性代数有关矩阵左乘右乘之类问题.当A=__时,A(a11a12a13a21a22a23a31a32a33)=(a11+6a31a12+6a32a13+6a33a21a22a23a31a32a33)我想问题目用到的是什么知识点?有一些规则具体是哪些呢?感激不尽!(图10)线性代数有关矩阵左乘右乘之类问题.当A=__时,A(a11a12a13a21a22a23a31a32a33)=(a11+6a31a12+6a32a13+6a33a21a22a23a31a32a33)我想问题目用到的是什么知识点?有一些规则具体是哪些呢?感激不尽!(图12)这是用户提出的一个数学问题,具体问题为:线性代数 有关矩阵左乘右乘之类问题.当A=__时,A(a11 a12 a13 a21 a22 a23 a31 a32 a33)=(a11+6a31 a12+6a32 a13+6a33 a21 a22 a23 a31 a32 a33) 我想问题目用到的是什么知识点?有一些规则具体是哪些呢?感激不尽!求教线性代数高手,矩阵乘法为什么那么奇怪?以及所谓的线性映...最近看了相关书籍自己思考很久,很多困惑解开了,毕竟我们的教学很没劲,线性代数的很...1.这个矩阵乘法就是这么定义的,所以左乘与右乘不一样。矩阵可以理解为线性变换的...防抓取,学路网提供内容。我们通过互联网以及本网用户共同努力为此问题提供了相关答案,以便碰到此类问题的同学参考学习,请注意,我们不能保证答案的准确性,仅供参考,具体如下:线性代数中一个矩阵通过行初等变换变为另一矩阵所对应的初等...(1)确定是左乘还是右乘初等行变换,相当于左乘一个相应的初等矩阵初等列变换,相当于右乘一个相应的初等矩阵(2)确定初等矩阵P的阶(初等矩阵防抓取,学路网提供内容。用户都认为优质的答案:线性代数里矩阵在左还是在右的问题这些相乘表示并没有统一的规律,之所以采用那种方式是因为那种表达能够表示相应的变换比如说用Y表示成X,(Y,X是列向量),则X=CY按照矩阵乘开之后就是X1=a11Y1+防抓取,学路网提供内容。初等变换与初等矩阵.需要了解一个初等矩阵左乘以或者右乘以一个矩阵有何作用.线性代数矩阵方程的问题!这是矩阵左乘和右乘的区别(因为矩阵乘法不具有交换律)AX=B,解题时是两式左右同时...要求B*A逆,就要将A化为I,同时将B化为B*A逆,(这个跟矩阵乘法定义相关,左行乘右列防抓取,学路网提供内容。新的矩阵的第一行的每一个元素多出来的一项是原矩阵的第三行元素的6倍,所以原矩阵的第三行元素乘以6加到第一行即得.所以A左乘以矩阵就要有这个作用,正好有一种变换可以达成这种效果.线性代数设A是m×n矩阵,C是n阶可逆矩阵,则R(A)-R(AC)=0.为...C是n阶可逆矩阵,则C可以表示为有限个初等矩阵的乘积,AC相当于对A做了有限次列初等变换初等变换不改变矩阵的秩所以R(A防抓取,学路网提供内容。A=1 0 60 1 00 0 1======以下答案可供参考======线性代数,矩阵,例四中按这种算法A的逆乘B的结果是不是等于B...对一个矩阵进行初等行变换可以当作一个变换矩阵左乘该矩阵,而对一个矩阵进行初等列变换可以当作一个变换矩阵右乘该矩阵。图中的思路是将(A|防抓取,学路网提供内容。供参考答案1:高等代数和线性代数有何区别?答:高等代数要比线性代数难很多,基本上可以说线性代数是高等代数的分支,高等代数还要研究多项式,但是线性代数一般研究线性关系,大学期间,数学专业的学习高等代数,非数学专业的学防抓取,学路网提供内容。用待定系数法接,知识点是矩阵乘法的具体到矩阵里面的元素是怎么乘的。线性代数有什么学习技巧么?答:一、线性代数(LinearAlgebra)是数学的一个分支,它的研究对象是向量,向量空间(或称线性空间),线性变换和有限维的线性方程组。向量空间是现代数学的一个重要课题;防抓取,学路网提供内容。线性代数中一个矩阵通过行初等变换变为另一矩阵所对应的初等...(1)确定是左乘还是右乘初等行变换,相当于左乘一个相应的初等矩阵初等列变换,相当于右乘一个相应的初等矩阵(2)确定初等矩阵P的阶(初等矩阵都是方阵)左乘A时,P的...线性代数里矩阵在左还是在右的问题这些相乘表示并没有统一的规律,之所以采用那种方式是因为那种表达能够表示相应的变换比如说用Y表示成X,(Y,X是列向量),则X=CY按照矩阵乘开之后就是X1=a11Y1+a12...线性代数矩阵方程的问题!这是矩阵左乘和右乘的区别(因为矩阵乘法不具有交换律)AX=B,解题时是两式左右同时...要求B*A逆,就要将A化为I,同时将B化为B*A逆,(这个跟矩阵乘法定义相关,左行乘右列的缘...线性代数设A是m×n矩阵,C是n阶可逆矩阵,则R(A)-R(AC)=0.为...C是n阶可逆矩阵,则C可以表示为有限个初等矩阵的乘积,AC相当于对A做了有限次列初等变换初等变换不改变矩阵的秩所以R(A)=R(AC),R(A)-R(AC)=0
相关信息:
- Copyright & 2017 www.xue63.com All Rights Reserved下次自动登录
现在的位置:
& 综合 & 正文
矩阵及变换,以及矩阵在DirectX和OpenGL中的运用问题:左乘/右乘,行优先/列优先,…
(一)首先,无论dx还是opengl,所表示的矢量和矩阵都是依据线性代数中的标准定义的:
“矩阵A与B的乘积矩阵C的第i行第j列的元素c(ij)等于A的第i行于B的第j列的对应元素乘积的和。”(实用数学手册,科学出版社,第二版)
例如c12 = a11*b11+a12*b21+a12*b13...
(二)在明确了这一点后,然后我们再看“矩阵的存储方式”,矩阵存储方式有两种,一种是“行主序(row-major order)/行优先”,另一种就是“列主序(column-major order)/列优先”
1)Direct3D 采用行主序存储
“Effect matrix parameters and HLSL matrix variables can define whether the value is a row-major or column- however, the DirectX APIs always treat D3DMATRIX and D3DXMATRIX as row-major.”(见d3d9 document/Casting and Conversion 一节)
2)OpenGL 采用列主序存储
“The m parameter points to a 4x4 matrix of single- or double-precision floating-point values stored in column-major order. That is, the matrix is stored as follows”
(见msdn glLoadMatrixf API说明)
存储顺序说明了线性代数中的矩阵如何在线性的内存数组中存储,d3d 将每一行在数组中按行存储,而opengl将每一列存储到数组的每一行中:
线性代数意义的同一个矩阵,在d3d 和 ogl 中却有不同的存储顺序
线代:a11,a12,a13,a14
a11,a12,a13,a14
gl: a11,a21,a31,a41
a21,a22,a23,a24
a21,a22,a23,a24
a12,a22,a32,a42
a31,a32,a33,a34
a31,a32,a33,a34
a13,a23,a33,a43
a41,a42,a43,a44
a41,a42,a43,a44
a14,a24,a34,a44
(三)矩阵乘法顺序和规则
矩阵乘法在线性代数中的定义是确定的,然而在不同的实现中出现了“左乘”和“右乘”的区别,或者叫做“前乘(pre-multiply),后乘(post-multiply)”
这个规则取决于vector的表示形式,即行向量还是列向量。如果是行向量,其实就是一个行矩阵。那么表示线性代数意义的“行x列”,就是前乘。矩阵乘法也是如此。
D3D 是行向量,行优先存储,OpenGL是列向量,列优先存储。同一个矩阵用D3D存储还是用opengl存储虽然不同,但是变换的结果却是相同,
因为opengl 变换向量是把向量视作列向量,并同矩阵的每一列相乘,用来实现线性代数中同一个变换。
我们通常很难看到opengl变换坐标的代码,以下代码出自opengl source code,让我们一窥顶点变换的“庐山真面目”
void FASTCALL __glXForm3(__GLcoord *res, const __GLfloat v[3], const __GLmatrix *m)
__GLfloat x = v[0];
__GLfloat y = v[1];
__GLfloat z = v[2];
res-&x = x*m-&matrix[0][0] + y*m-&matrix[1][0] + z*m-&matrix[2][0]
+ m-&matrix[3][0];
res-&y = x*m-&matrix[0][1] + y*m-&matrix[1][1] + z*m-&matrix[2][1]
+ m-&matrix[3][1];
res-&z = x*m-&matrix[0][2] + y*m-&matrix[1][2] + z*m-&matrix[2][2]
+ m-&matrix[3][2];
res-&w = x*m-&matrix[0][3] + y*m-&matrix[1][3] + z*m-&matrix[2][3]
+ m-&matrix[3][3];
可见确实如上所述,“OPENGL列向量和矩阵的每一列相乘,仍然表示线性代数行向量和矩阵的每一行相乘”
再来看一下opengl 矩阵相乘,“用a的每一列去乘b的每一行”。
** Compute r = a * b, where r can equal b.
void FASTCALL __glMultMatrix(__GLmatrix *r, const __GLmatrix *a, const __GLmatrix *b)
__GLfloat b00, b01, b02, b03;
__GLfloat b10, b11, b12, b13;
__GLfloat b20, b21, b22, b23;
__GLfloat b30, b31, b32, b33;
b00 = b-&matrix[0][0]; b01 = b-&matrix[0][1];
b02 = b-&matrix[0][2]; b03 = b-&matrix[0][3];
b10 = b-&matrix[1][0]; b11 = b-&matrix[1][1];
b12 = b-&matrix[1][2]; b13 = b-&matrix[1][3];
b20 = b-&matrix[2][0]; b21 = b-&matrix[2][1];
b22 = b-&matrix[2][2]; b23 = b-&matrix[2][3];
b30 = b-&matrix[3][0]; b31 = b-&matrix[3][1];
b32 = b-&matrix[3][2]; b33 = b-&matrix[3][3];
for (i = 0; i & 4; i++) {
r-&matrix[i][0] = a-&matrix[i][0]*b00 + a-&matrix[i][1]*b10
+ a-&matrix[i][2]*b20 + a-&matrix[i][3]*b30;
r-&matrix[i][1] = a-&matrix[i][0]*b01 + a-&matrix[i][1]*b11
+ a-&matrix[i][2]*b21 + a-&matrix[i][3]*b31;
r-&matrix[i][2] = a-&matrix[i][0]*b02 + a-&matrix[i][1]*b12
+ a-&matrix[i][2]*b22 + a-&matrix[i][3]*b32;
r-&matrix[i][3] = a-&matrix[i][0]*b03 + a-&matrix[i][1]*b13
+ a-&matrix[i][2]*b23 + a-&matrix[i][3]*b33;
1。矩阵和线性变换:一一对应
矩阵是用来表示线性变换的一种工具,它和线性变换之间是一一对应的。
考虑线性变换:
a11*x1 + a12*x2 + ...+a1n*xn = x1'
a21*x1 + a22*x2 + ...+a2n*xn = x2'
am1*x1 + am2*x2 + ...+amn*xn = xm'
对应地,用矩阵来表示就是:
|a11 a12 ... a1n
|a21 a22 ... a2n
|am1 am2 ... amn |
也可以如下来表示:
|a11 a21 ... am1|
|a12 a22 ... am2|
|x1 x2...xn|*|...
|= |x1' x2'... xm'|
|a1n a2n ... amn|
其中涉及到6个矩阵。分别为A[m*n],X[n*1],X'[m*1]以及X[1*n],A[n*m],X'[1*m]。
可以理解成向量x(x1,x2,...,xn)经过一个变换矩阵A[m*n]或A[n*m]后变成另外一个向量x'(x1',x2',...,xm'))。
2。矩阵的表示法:行矩阵 vs. 列矩阵
行矩阵和列矩阵的叫法是衍生自行向量和列向量。
其实,矩阵A[m*n]可以看成是m个n维的row vector构成的row matrix,也可看成是n个m维的column vector构成的column matrix。
其中,X[n*1]/X'[m*1]就等价于1个n/m维的column vector。X[1*n]/X'[1*m]就等价于1个n/m维的row vector。
Row matrix和Column matrix只是两种不同的表示法,前者表示把一个向量映射到矩阵的一行,后者表示把一个向量映射到矩阵的一列。
本质上体现的是同一线性变换。矩阵运算规定了它们可以通过转置运算来改变这个映射关系。
3。矩阵的相乘顺序:前乘或左乘 vs. 后乘或右乘
需要注意的是两种不同的表示法对应不同的运算顺序:
如果对一个column vector做变换,则变换矩阵(row matrix/vectors)必须出现在乘号的左边,即pre-multiply,又叫前乘或左乘。
如果对一个row vector做变换,则变换矩阵(column matrix/vectors)必须出现在乘号的右边,即post-multiply,又叫后乘或右乘。
一般不会弄错,因为矩阵乘法性质决定了相同的内维数的矩阵才能相乘。至于为什么是这个规律,为什么要row vector乘以column vector或column vector乘以row vector???想想吧。。。
所以左乘还是右乘,跟被变换的vector的表示形式相关,而非存储顺序决定。
4。矩阵的存储顺序:按行优先存储 vs. 按列优先存储
涉及到在计算机中使用矩阵时,首先会碰到存储矩阵的问题。
因为计算机存储空间是先后有序的,如何存储A[m*n]的m*n个元素是个问题,一般有两种:按行优先存储和按列优先存储。
row-major:存成a11,a12,...,amn的顺序。
column-major:存成a11,a21,...,amn的顺序。
这样问题就来了,给你一个存储好的矩阵元素集合,你不知道如何读取元素组成一个矩阵,比如你不知道a12该放在几行几列上。
所以,每个系统都有自己的规定,比如以什么规则存储的就以什么规则读取。DX使用Row-major,OGL使用Column-major.即一个相同的矩阵A[m*n]在DX和OGL中的存储序列是不一样的,这带来了系统间转换的麻烦。
不过,一个巧合的事情是:DX中,点/向量是用Row Vector来表示的,所以对应的变换矩阵是Column Matrix/Vectors,而OGL中,点/向量是用Column Vector来表示的,所以对应的变换矩阵是Row Matrix/Vectors.所以,如果在DX中对一个向量x(x1,x2,x3,1)或点(x(x1,x2,x3,1))应用A[4*4]的矩阵变换,就是x' = x(x1,x2,x3,1) * A[4*4],由于采用Row-major,所以它的存储序列是a11,a12,...,a43,a44。在OGL中,做同样的向量或点的变换,因为其使用Row
Matrix/Vectors,其应用的变换矩阵应该是A'[4*4] = A[4*4]( ' 表示Transpose/转置),就是x' = A'[4*4] * x'(x1,x2,x3,1),但是由于采用Column-major,它的存储序列正好也是a11,a12,...,a43,a44!!!
所以实际上,对DX和OGL来讲,同一个变换,存储的矩阵元素序列是一样的.比如:都是第13,14,15个元素存储了平移变化量deltaZ,deltaY,deltaZ.
http://mathworld.wolfram.com/Matrix.html
http://www.gamedev.net/community/forums/topic.asp?topic_id=321862
【上篇】【下篇】只需一步,快速开始
扫一扫,访问微社区
查看: 10162|回复: 3|关注: 0
Matlab矩阵左乘右乘的问题
<h1 style="color:# 麦片财富积分
新手, 积分 5, 距离下一级还需 45 积分
a=[1 2 3;4 6 6;7 8 9];
b=[3 2 1;4 5 6;9 8 7];
为什么上述语句执行之后,会出现Warning: Matrix is singular to working precision.
而xba=a\b;
这一句就没有问题呢?
谢谢解答~~
<h1 style="color:#7 麦片财富积分
关注者: 73
a是奇异阵,b不是
<h1 style="color:#3 麦片财富积分
关注者: 14
a/b是a右除b,a\b是a左除b,实际上MATLAB里矩阵相除,一般采用一个矩阵乘以另一矩阵的逆.
b=[3 2 1;4 5 6;9 8 7]不是满秩矩阵,不存在逆矩阵,所以a/b就不行.而a满秩的,所以a\b可以.
<h1 style="color:# 麦片财富积分
应该b是奇异的吧。
由于b是奇异矩阵,而a/b = a*inv(b), 而a\b = inv(a)*b。故会出现警告:矩阵是奇异的
站长推荐 /3
筑起功能安全的堡垒 - 基于模型设计的软件开发
MATLAB中文论坛是全球最大的 MATLAB & Simulink 中文社区。用户免费注册会员后,即可下载代码,讨论问题,请教资深用户及结识书籍作者。立即注册加入我们吧!
MATLAB官方社交平台
MATLAB中文论坛微社区OpenGL ES平移矩阵和旋转矩阵的左乘与右乘效果
时间: 21:29:32
&&&& 阅读:245
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&OpenGL ES平移矩阵和旋转矩阵的左乘与右乘
在OpenGL 、OpenGL ES中矩阵起着举足轻重的作用,而矩阵之间的左乘与右乘在效果上是不同的。
一、先平移后旋转
场景效果:人绕树旋转。
原理:以树为参考点,首先将人平移到树坐标系的指定位置(平移矩阵),然后旋转一定角度(旋转矩阵)。
pos = (matRotate * matTrans * vec4(pos,1.0)).
其中matRotate表示旋转矩阵;
matTrans表示平移矩阵;
pos表示三维世界的坐标。
二、先旋转后平移
场景效果:以太阳为参考点的地球自转。
原理:以太阳为参考点,首先旋转地球(旋转矩阵),然后将地球平移到太阳坐标系的指定位置(平移矩阵)。
pos = (matTrans * matRotate * vec4(pos,1.0)).
其中matRotate表示旋转矩阵;
matTrans表示平移矩阵;
pos表示三维世界的坐标。
注意事项:
OpenGL|ES是基于右手坐标系运算的,因此在上述公式中,矩阵是从右向左起作用的,也就是距离vec4的pos越近,越先起作用。
&标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文:http://www.cnblogs.com/calence/p/7295918.html
教程昨日排行
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!}

我要回帖

更多关于 矩阵左乘和右乘 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信