找回密码
 注册
Simdroid-非首页
查看: 489|回复: 25

矩阵求逆

[复制链接]
发表于 2010-10-18 09:05:04 | 显示全部楼层 |阅读模式 来自 西安交通大学
一个76阶的矩阵,对角线上都有元素,非对角线很少一部分元素,请问这样的矩阵求逆会不会有问题?因为基于此矩阵求解的最终结果远远大于正常值。求教各位高人是什么原因···
发表于 2010-10-18 10:51:05 | 显示全部楼层 来自 河北廊坊
Simdroid开发平台
你的这个问题更像是一个数值分析的问题,似乎和matlab关系不大,建议你看看数值分析相关的书籍
回复 不支持

使用道具 举报

发表于 2010-10-18 11:13:40 | 显示全部楼层 来自 广西南宁
可能和算法选择有关,选择合适的算法应该可以解决
回复 不支持

使用道具 举报

发表于 2010-10-18 11:23:31 | 显示全部楼层 来自 四川成都
2# qibbxxt
这个问题还是没有到数值分析上吧(没求方程组的值)?就是一个矩阵求逆。
楼主用det(a)看你的矩阵的行列式det(a)是否等于零。
不等于零那结果就没问题的。
等于零那这个矩阵就没有逆阵的。
回复 不支持

使用道具 举报

发表于 2010-10-18 13:44:23 | 显示全部楼层 来自 北京
本帖最后由 bainhome 于 2010-10-18 17:10 编辑

楼主问了个空灵飘逸,充满禅意的好问题!如羚羊挂角,无迹可寻!使人赞叹不已。
什么叫拥抱自然?这就是!这才是真正的原生态问题!
回楼上:一般主对角占优矩阵只要不线性相关,不可逆情况很少出现,76阶可能性更小,依我长期在论坛搅和新人的经验,八成是在command windows中求了个逆,结果本来该是零的地方出现了a×10^-n这样的截断误差,MATLAB偏偏不识趣——把这个项提取并放在矩阵最前面作为系数乘,而楼主又选择性忽视,只看里面的数据,自然“远远大于”那个“正确结果”,潇洒飘逸地一问,娱乐一下而已。
回复 不支持

使用道具 举报

发表于 2010-10-18 16:28:19 | 显示全部楼层 来自 河北秦皇岛
你用增广矩阵试试
回复 不支持

使用道具 举报

 楼主| 发表于 2010-10-18 17:15:24 | 显示全部楼层 来自 西安交通大学
敢问增广矩阵怎么试···?
回复 不支持

使用道具 举报

 楼主| 发表于 2010-10-18 17:17:18 | 显示全部楼层 来自 西安交通大学
:'( det(a)=2.458218086792935e-272,应该是零了,那该怎么修改矩阵呢?这个矩阵形式不能变
4# chenzhian
回复 不支持

使用道具 举报

 楼主| 发表于 2010-10-18 18:05:20 | 显示全部楼层 来自 西安交通大学
呃···那该怎么办呢?结果是它的行列式几乎是零,有解决办法吗?
5# bainhome
回复 不支持

使用道具 举报

发表于 2010-10-18 18:20:50 | 显示全部楼层 来自 湖南湘潭
也来一个“空灵飘逸,充满禅意”的回答,
1、教学目的和要求  1  掌握矩阵可逆的定义和可逆的充要条件;
2、与增广矩阵没关系,矩阵可逆首先要求是方阵,若不是方阵,才用到增广矩阵;

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2010-10-18 18:29:15 | 显示全部楼层 来自 北京
本帖最后由 bainhome 于 2010-10-18 18:34 编辑

这个行列式结果说明该矩阵线性相关,基本可以肯定要不就是你输入值错了,要不就是该矩阵错了,如果矩阵本身有问题,可以用pinv来求伪逆,但我想你用不上这个结果。
两个建议:
1.假如是在MATLAB中得到的,请没事不要用符号矩阵去算76阶的逆;
2.像我暗示的那样,你不把矩阵数据拿出来,别人无法给出任何建议——至少我没这个本事。瞎猜我也不愿意干。
最好能先检查一下你的矩阵来源,恐怕问题不会是在求逆上,inv用了二十来年了,没理由为一个70阶的矩阵就破例算错。

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2010-10-18 18:33:11 | 显示全部楼层 来自 北京
本帖最后由 bainhome 于 2010-10-18 18:42 编辑

另外可用rref化成行最简看看最后有几行零,确定其线性相关性
回复 不支持

使用道具 举报

发表于 2010-10-18 20:34:26 | 显示全部楼层 来自 四川成都
bainhome老师说的有道理,你最好把矩阵贴上来看下。
我们也试下啊。
“基于此矩阵求解的最终结果远远大于正常值”
不知道是否楼主在求方程组的解。
如果是,那可能就是病态线性方程组了。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2010-10-19 09:19:50 | 显示全部楼层 来自 西安交通大学
恩,不好意思,没有把矩阵贴出来,矩阵比较大,麻烦大家把文本文件导入matlab后运行下面这段程序,Lg就是我要的矩阵···辛苦大家啦~~
Lgg=load('D:\gaoya_gaotiao.txt');  %读取电感参数
k=0;
for i=1:elenum+elenum_t
    for j=1:elenum+elenum_t
        k=k+1;
        Lg(i,j)=Lgg(k);
    end
end
for i=1:elenum+elenum_t
    for j=1:i
        if(i>j)
            Lg(i,j)=Lg(j,i);
        end
    end
end

11# bainhome

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2010-10-19 09:51:34 | 显示全部楼层 来自 西安交通大学
elenum+elenum_t
是多少啊
回复 不支持

使用道具 举报

发表于 2010-10-19 11:06:13 | 显示全部楼层 来自 四川成都
本帖最后由 chenzhian 于 2010-10-19 11:11 编辑

14# ganzhouzqh
  代码中的elenum+elenum_t应该是等于76吧 。
我求了他的逆,然后用A=inv(Lg)*Lg。在format long的显示格式下看到的是个单位矩阵。
我认为这个结果没有问题。

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2010-10-19 11:07:54 | 显示全部楼层 来自 西安交通大学
76,不好意思~~
15# lxx244lxx
回复 不支持

使用道具 举报

 楼主| 发表于 2010-10-19 11:19:17 | 显示全部楼层 来自 西安交通大学
就像2#所说,求得的det(Lg)基本上是零,是不是根本就不能求逆?
16# chenzhian
回复 不支持

使用道具 举报

发表于 2010-10-19 21:33:30 | 显示全部楼层 来自 湖南湘潭
8# 和18# 只看到del(Lg) = 2.4582e-272 很接近于0这个事实,就认为“结果是它的行列式几乎是零”,而有“是不是根本就不能求逆?”的疑问?
而没有看到Lg矩阵中的元素特点:所有的元素都是很小的小数,大都在小数点后第4位才有值!,就算是小数点后第3位有值,如0.009,根据行列式的计算方法,76项这样的小数相乘当然是一个很小的数呢!
不信的话,将对角线的元素抽出来组成对角阵试试,其行列式为1.8138e-274 不等于0,逆矩阵一定存在,但行列式几乎等于0。
经过验证 inv(Lg)*Lg 为单位阵,因此计算结果没有问题。(16#也得出同样结论)

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2010-10-19 23:05:59 | 显示全部楼层 来自 北京
本帖最后由 bainhome 于 2010-10-19 23:07 编辑

没有运行程序,仅从表面判断看的确要不得。
运行程序后发现结果矩阵是一个前面一部分仅存在对角线元素、后面行数据分布较为平均,用rank验证该矩阵为满秩阵,必然可逆。我前一页的推测基本准确,而这一页我没运行程序直接发言,证明是个nonsense,我已经删掉自己的错误发言,楼上两位比我细致严谨得多。
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-6 17:13 , Processed in 0.059649 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表