matlab逆矩阵运算是不是有问题?

作者&投稿:弓楠 (若有异议请与网页底部的电邮联系)
matlab逆矩阵问题~

matlab中transpose这个函数是对矩阵求转置的函数,即b=transpose(a)就实现了对矩阵a求转置的运算。但在所有矩阵左边可以加.'同样实现矩阵转置,即b=a.'。注意中间还有一个.呢,如果不加.则表示对矩阵共轭转置,也就是a中行列颠倒后对每个元素求共轭。如果你的矩阵为实矩阵,由于实数的共轭是它本身
因此
a'=a.'
希望你能明白

一般矩阵超过10阶就不能直接求逆了,那样速度慢而且误差巨大。
对大型矩阵求逆一般采用矩阵分解的方法(lu,qr,llt,svd......).
在matlab里建议采用\运算,这样matlab会自动采用矩阵分解的方法。
inv(a)*b可以写为a\b
a*inv(b)可以写为a/b

原因是你这个矩阵是个不可逆的哦。

你可以rank(AA)看一下,秩是2
或者det(AA)看一下,结果是个0(由于精度问题,是个非常小的数)

矩阵接近奇异,即det(AA)接近0,解方程组得到的结果可能不正确,产生很大的误差。你可以试试求AA行列式的值,几乎接近零,从矩阵求逆的公式就可以知道,计算过程将会产生很大的误差。

是你矩阵有问题,不是matlab出错


问几个matlab的题!
4)程序限制不严格,程序设计自由度大。例如,在MATLAB里,用户无需对矩阵预定义就可使用。5)程序的可移植性很好,基本上不做修改就可以在各种型号的计算机和操作系统上运行。6)MATLAB的图形功能强大。在FORTRAN和C语言里,绘图都很不容易,但在MATLAB里,数据的可视化非常简单。MATLAB还具有较强的编辑...

松北区13246759252: 为什么matlab求一个矩阵的逆矩阵时输入inv时显示??? Error using ==> inv -
亥忠欧贝: 你确认你的矩阵是非奇异的么,它可能没有逆啊... Matrix must be square是指你所求的矩阵不是方阵,那肯定是没有逆的啊,另外需要说明...

松北区13246759252: MATLAB矩阵乘法运算? -
亥忠欧贝: 这个问题有歧义呀 如果按照matlab的语法规则,y=5/m就相当于y=5*inv(m),就是5乘以m的逆矩阵,但是3*4矩阵是没有逆矩阵的,所以直接这样写是错误的.如果你的意思是要5除以m矩阵中的每个元素,然后生成一个新矩阵的话,那么应该这...

松北区13246759252: matlab逆矩阵问题 -
亥忠欧贝: 请再次用rank确认一下ma满秩,如果数据无误,这样写: B = ma\D 用inv效果很差的.

松北区13246759252: 为什么我的matlab3*3的矩阵不能求逆矩阵 -
亥忠欧贝: >> ks=[1 2 3; 3 1 1; 1 7 2];>> inv(ks) ans = -0.1111 0.3778 -0.0222 -0.1111 -0.0222 0.1778 0.4444 -0.1111 -0.1111 你试试看,出什么错?把错误信息粘贴出来. 老大!你在逗我玩吧?你的|A|=0,det(A)=0,哪可能有逆矩阵?

松北区13246759252: 在matlab里求带参数的矩阵计算,请问为什么我写的语句出错?A?
亥忠欧贝: 应该先定义符号变量,如下:syms x yA =[2,3,1;x,2,3;7,1,-1];B=[4;17;1];C=[1;-1;y];result=solve('A*B==C','x','y')结果是无解result =[ empty sym ]但你这个方程显然无解呀,请看>> A*B ans = 60 4*x 37 44但是C = 1 -1 y那么方程的第一行 60==1 显然不成立,所以这个方程本来就有问题. 还有MATLAB的solve函数好像不支持矩阵运算形式的等式,这样的三个等式是它只当做一个等式来处理.这种线性方程用左除号()最快了,可惜你的方程本来就有错,所以没给出左除的代码.

松北区13246759252: 用matlab7.0软件求逆矩阵时,得出逆矩阵的数显示的是小数,如何才能显示分数? -
亥忠欧贝: 在你的程序前面加上format rat

松北区13246759252: 用MATLAB编程求矩阵的逆矩阵,写了运行不出来,请指教! -
亥忠欧贝: 你这个程序离目标还差很远 第一个for循环里第3,4行写错了,改成 E(i,i:2*n)=E(i-1+y,i:2*n); E(i-1+y,i:2*n)=U; 第二个for循环应该嵌在第一个for循环里,或者说上一行的end应该去掉 即使这些都改好了,也只不过是把A消成上三角阵,要消成单位阵之后才能得到结果,况且你并没有把结果赋给作为返回值的D

松北区13246759252: 在matlab中,如何求带变量的广义逆矩阵? -
亥忠欧贝: 一般来讲Moore-Penrose广义逆关于分量不连续,所以不要指望符号计算永远能解决问题,因为有时候参量不同的时候矩阵的秩也会不同如果你能事先知道矩阵是行满秩或者列满秩的,比如你的例子,那么就可以直接用 A^+ = A'(AA')^{-1} 或 A^+ = (A'A)^{-1}A' 如果这些都没有保障,那么你得自己去实现满秩分解A=BC,然后A^+=C^+ B^+,这里满秩分解可以用Gauss消去法实现,很简单的循环,比QR分解或SVD容易多了,自己写一下就行,当然,在消去过程中前面提到的需要根据参量讨论的问题仍然无法避免,取决于你的具体问题

松北区13246759252: matlab矩阵的问题 -
亥忠欧贝: 出现错误的原因是矩阵运算时 大小不匹配. 首先 .*这个运算符基本只能用于两个大小规模相等的矩阵,比如都是3*4的才可以. 我理解你的情况,应该是不能用.*的,是要用*的. 按照我才想你要表达的意思,应该是如下的表达式: s=cos(2*pi*f'*deltaT*n+2*pi*tau'*f0*ones(1,1024)) 注意式子中的f和tau分别转置.如果你f和tau都是8*1的就不用转置了.

松北区13246759252: 求助Matlab中求逆矩阵的函数 -
亥忠欧贝: 求逆矩阵的函数为inv().如果计算用,还可以用左除\

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网