为什么用matlab算一个逆矩阵,会出不来呢,数量级也不是太夸张啊,哪位大神能帮我看看

-0.00204984931977006 -1.41643045124401e-06 -1.86051997825871e-09 -2.02072193879419e-12 -4.23334070872918e-16 9.74587045529726e-18 1.06051709953951
0.00199924935334873 1.38146625530050e-06 1.81459355453666e-09 1.97084097375754e-12 4.12884185818157e-16 -9.50529632478505e-18 1.07372168931153
0.000612920408348068 4.23523388865724e-07 5.56309507150497e-10 6.04211101732377e-13 1.26580080342776e-16 -2.91408877791965e-18 1.09449400866538
0.00540068219440670 3.73183074671413e-06 4.90186133293293e-09 5.32394107676018e-12 1.11534675100194e-15 -2.56771795513352e-17 1.12129473506331
-0.216214756184207 -0.000149402769127422 -1.96244606662200e-07 -2.13142447641700e-10 -4.46525859415477e-14 1.02797848796581e-15 1.15246009822941
2.16416708658232 0.00149542316766926 1.96427906287669e-06 2.13341530467408e-09 4.46942930866180e-13 -1.02893865739435e-14 1.18645445300771
64.3153884308642 0.0444414493194464 5.83750541715498e-05 6.34014974422099e-08 1.32823885841838e-11 -3.05783180199625e-13 1.22200909262869

第1个回答  2013-08-15
在计算之前先看看其行列式的值是多少?如果太小了就会被认为是奇异的,建议你在计算之前先将指数幂提取出来,再计算逆矩阵,然后除去该指数幂
第2个回答  2013-08-15
你的矩阵是奇异的,本身就没逆矩阵,当然算不出来了
第3个回答  2013-08-15
由于你的数值偏小,用inv(A)函数求,矩阵A会被误认为是接近奇异。结果可能是不准确的。但可以用pinv(A)来求解。结果如下:
>>A=[。。。。。。。] %7×7矩阵
>> vpa(pinv(A))
ans =
[ -0.0028082378796503988487021086228879, -0.0028420087857282789155222157972958, -0.0028974083724634396193320373669167, -0.0029669574159484355183047377124694, -0.0031144443970727029094569537903681, -0.0025064982827983171148611418743712, 0.015622518407918140406764884176027]
[ -0.0000019404712378900838716511405984688, -0.0000019638066798041950273786583613944, -0.0000020020873772584887440690541021704, -0.0000020501452428272607331693425797292, -0.000002152057636684667070415492157176, -0.0000017319714475838532178431994693057, 0.000010795042632975462246766942819853]
[ -0.00000000254886182564122915772225247996, -0.0000000025795135642077172866531558368189, -0.0000000026297963030058351898249687113567, -0.0000000026929216184336111098589497598373, -0.0000000028267863236542433004499237349455, -0.0000000022749916720125912425131831914654, 0.000000014179582532403147302151336106319]
[ -0.0000000000027683341590165891198606024923395, -0.0000000000028016251966291050153372356134692, -0.0000000000028562375816644635029591975498652, -0.0000000000029247983664190695411919029738617, -0.000000000003070189627898503523560308039717, -0.00000000000247088213789398847955387748786, 0.00000000001540052987389201049259908712522]
[ -0.00000000000000057995617634180690166453827877244, -0.0000000000000005869305305097534930379210642026, -0.00000000000000059837163125362629554735262558913, -0.00000000000000061273487220984079669854541432146, -0.0000000000000006431938252254975726137861366593, -0.00000000000000051764103412766043071403866450375, 0.0000000000000032263563234262135223139021845399]
[ 0.000000000000000013351577756844773864654520845285, 0.000000000000000013512139254033198154709896774451, 0.00000000000000001377553285588990498180419457757, 0.000000000000000014106199096358002377859386118629, 0.000000000000000014807416009238709211551470046644, 0.000000000000000011916977177283944761122357941457, -0.000000000000000074276210997862995878765713584407]
[ 0.14369185442551277165357248577493, 0.1454701868343774295855297395974, 0.14828823915284344847620445762004, 0.15190671765939653403698628153506, 0.15671593353068019593976600845053, 0.15501985189767641948321852396475, -0.0047035731974279394035365342574551]本回答被提问者采纳

为什么用matlab算一个逆矩阵,会出不来呢,数量级也不是太夸张啊,哪位...
在计算之前先看看其行列式的值是多少?如果太小了就会被认为是奇异的,建议你在计算之前先将指数幂提取出来,再计算逆矩阵,然后除去该指数幂

用MATLAB编程求矩阵的逆矩阵,写了运行不出来,请指教!
第二个for循环应该嵌在第一个for循环里,或者说上一行的end应该去掉 即使这些都改好了,也只不过是把A消成上三角阵,要消成单位阵之后才能得到结果,况且你并没有把结果赋给作为返回值的D

为什么matlab求一个矩阵的逆矩阵时输入inv时显示??? Error using ==>...
Matrix must be square是指你所求的矩阵不是方阵,那肯定是没有逆的啊,另外需要说明的是,MATLAB求矩阵的逆是通过我们熟知的矩阵的行列式的值与代数余子式的方法,所以要求det(A),所以我们常说MATLAB求逆的运算效率不高。所以系统报错首先发现的是det函数使用错误,因为非方阵的行列式是没有值的。

matlab逆矩阵运算是不是有问题?
原因是你这个矩阵是个不可逆的哦。你可以rank(AA)看一下,秩是2 或者det(AA)看一下,结果是个0(由于精度问题,是个非常小的数)

matlab符号矩阵太大,求逆算不出来,怎么办?
这个没必要吧。因为是符号矩阵所以最后的结果即使化简也会很长(矩阵的求逆的过程你知道吧),例如 A = [ a, b][ c, d]>> inv(A)ans = [ d\/(a*d - b*c), -b\/(a*d - b*c)][ -c\/(a*d - b*c), a\/(a*d - b*c)],你说这个过程究竟有多大的意义。还是自己想办法...

如何用matlab求逆矩阵?
答案明确:在MATLAB中,可以使用内置函数`inv`来求矩阵的逆。具体步骤如下:详细解释:1. 了解矩阵逆的概念 矩阵的逆是线性代数中的一个重要概念,它表示一个矩阵与另一个矩阵相乘能够得到单位矩阵。逆矩阵记作A的负一次幂。并非所有矩阵都有逆矩阵,只有方阵在特定条件下才存在逆矩阵。2. 使用MATLAB...

用MATLAB编程求矩阵的逆矩阵,写了运行不出来,请指教!
大家说的都对,我补充下:1、当a是方阵,用inv(a)来计算矩阵的逆;2、当a是非方阵时,用pinv(a)求得特殊的逆矩阵,叫广义逆矩阵。

如何用MATLAB求逆矩阵
按下回车键后,MATLAB会计算矩阵A的逆矩阵,并在命令窗口中显示结果。如果矩阵可逆,即行列式不为0,MATLAB会返回逆矩阵;如果不可逆,会显示一个错误消息。总的来说,通过这些简单的步骤,你就能在MATLAB中轻松求得矩阵的逆矩阵。记得检查输入的矩阵以及操作符的格式,以确保计算的准确性。

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

matlab矩阵求逆的时候,发出warning,具体为对一个稀疏矩阵求逆矩阵
奇异矩阵问题。你的矩阵接近奇异了,也就是其行列式接近于0,因而计算结果可能不精确。解决方案可以是调整自己的算法(选择合适的迭代法、调整合适的步长),或者试试伪逆函数pinv()求解工程中矩阵的逆。祝好。

相似回答