由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
SanFrancisco版 - 求助:Matlab里面如何分解矩阵? (转载)
相关主题
莱曼猜想的第一步搞不明白 (转载)那个软件用来作heatmap比较方便?
[金融快讯]BBS升级在即,MIT伪币市场一片动荡求高人给解个方程!!!多谢 108 X^4 + 444 X^2 - 1566 X - 2523 = 0
有什么好办法背数学的平方/平方根/立方/立方根吗?学什么编程语言好?
尘埃落定(MGF的面试总结) (转载)经济硕士直接转CS求建议
说说我在装逼公司当面试官的经历 (转载)Looking for MatLab Tutor $25/hr obo
网上买轮胎,是不是三个SIZE参数选对了,就一定能安装???谢谢严肃的问只会一点matlab编程的EE,工作之余学CS多久能找到工作
iphone6 touch panel不工作了,怎么办,烂苹果 (转载)小女子找工作求内推(用户研究、心理、数据处理)
问高手一个用mathematica的问题。在公司服务器装盗版matlab,后被删除 会不会被炒? (转载)
相关话题的讨论汇总
话题: 矩阵话题: matlab话题: diagonal话题: eig话题: 误差
进入SanFrancisco版参与讨论
1 (共1页)
q**j
发帖数: 10612
1
【 以下文字转载自 Statistics 讨论区 】
发信人: qqzj (小车车), 信区: Statistics
标 题: 求助:Matlab里面如何分解矩阵?
发信站: BBS 未名空间站 (Fri Jan 28 13:02:47 2011, 美东)
打算把一个positive definite, symmetric 的矩阵分解成两个矩阵, i.e.,
A = B*B.
按照原理可以用eigen decomposition 把A分成 V*D*V^(-1)。其中D是diagonal的。因为
A是正定的所以D的对角线上面都是正数。所以定义E是D的平方根,
A= V*D*V(-1) = V*E*E*V(-1) = V*E*V(-1) * V*E*V(-1),所以定义
B = V*E*V(-1),就可以有A = B*B。
可是在matlab里面用了 [V,D]=eig(A)以后,出来的D不是diagonal的。应该是计算精度
的问题吧。这下怎么办?有没有好办法来对付这个问题?多谢了。
t***s
发帖数: 4666
2
你是做什么的?为什么你的问题我都明白?hehe。eig by definition produce a
diagonal matrix. provide an exmaple of your matrix A?

因为

【在 q**j 的大作中提到】
: 【 以下文字转载自 Statistics 讨论区 】
: 发信人: qqzj (小车车), 信区: Statistics
: 标 题: 求助:Matlab里面如何分解矩阵?
: 发信站: BBS 未名空间站 (Fri Jan 28 13:02:47 2011, 美东)
: 打算把一个positive definite, symmetric 的矩阵分解成两个矩阵, i.e.,
: A = B*B.
: 按照原理可以用eigen decomposition 把A分成 V*D*V^(-1)。其中D是diagonal的。因为
: A是正定的所以D的对角线上面都是正数。所以定义E是D的平方根,
: A= V*D*V(-1) = V*E*E*V(-1) = V*E*V(-1) * V*E*V(-1),所以定义
: B = V*E*V(-1),就可以有A = B*B。

q**j
发帖数: 10612
3
正常情况下当然都是对角的了?关键是矩阵大了就不是这么理想了。我的矩阵都是3000
by 3000的。用了eig(A)以后给的对角矩阵不是完全对角的。而是block diagonal的。
每个block上面对角线上是正的实数加上一个很小的imaginary part,但是其他地方是
很小的虚数。我在想是否可以把
这些虚数硬变成0算了。

【在 t***s 的大作中提到】
: 你是做什么的?为什么你的问题我都明白?hehe。eig by definition produce a
: diagonal matrix. provide an exmaple of your matrix A?
:
: 因为

t***s
发帖数: 4666
4
try svd, it's more robust.

3000

【在 q**j 的大作中提到】
: 正常情况下当然都是对角的了?关键是矩阵大了就不是这么理想了。我的矩阵都是3000
: by 3000的。用了eig(A)以后给的对角矩阵不是完全对角的。而是block diagonal的。
: 每个block上面对角线上是正的实数加上一个很小的imaginary part,但是其他地方是
: 很小的虚数。我在想是否可以把
: 这些虚数硬变成0算了。

s*****v
发帖数: 360
5
Try SVD decomposition.

因为

【在 q**j 的大作中提到】
: 正常情况下当然都是对角的了?关键是矩阵大了就不是这么理想了。我的矩阵都是3000
: by 3000的。用了eig(A)以后给的对角矩阵不是完全对角的。而是block diagonal的。
: 每个block上面对角线上是正的实数加上一个很小的imaginary part,但是其他地方是
: 很小的虚数。我在想是否可以把
: 这些虚数硬变成0算了。

t***s
发帖数: 4666
6
or you can try sqrtm

【在 t***s 的大作中提到】
: try svd, it's more robust.
:
: 3000

o****e
发帖数: 4946
7
既然是数值计算,误差当然不可避免
你把D写成D = E*E + R, E是对角阵,R是误差
于是A = V*E*E*V^(-1) + V*R*V^(-1)
令B=V*E*V^(-1),所以A=B*B + V*R*V^(-1)
最后一项是误差项, 算出来看看这样的误差是否可以接受就是了

3000

【在 q**j 的大作中提到】
: 正常情况下当然都是对角的了?关键是矩阵大了就不是这么理想了。我的矩阵都是3000
: by 3000的。用了eig(A)以后给的对角矩阵不是完全对角的。而是block diagonal的。
: 每个block上面对角线上是正的实数加上一个很小的imaginary part,但是其他地方是
: 很小的虚数。我在想是否可以把
: 这些虚数硬变成0算了。

q**j
发帖数: 10612
8
多谢,你这个办法好像和我的办法是一样的 :)
sqrtm很好很强大,虽然很费时间。估计matlab里面又在搞什么优化了。我还是不自己算
SVD了。出力不讨好的事情呀。
多谢三位指教。

【在 o****e 的大作中提到】
: 既然是数值计算,误差当然不可避免
: 你把D写成D = E*E + R, E是对角阵,R是误差
: 于是A = V*E*E*V^(-1) + V*R*V^(-1)
: 令B=V*E*V^(-1),所以A=B*B + V*R*V^(-1)
: 最后一项是误差项, 算出来看看这样的误差是否可以接受就是了
:
: 3000

o****e
发帖数: 4946
9
sqrtm一样有误差,天下木有白吃的午餐

己算

【在 q**j 的大作中提到】
: 多谢,你这个办法好像和我的办法是一样的 :)
: sqrtm很好很强大,虽然很费时间。估计matlab里面又在搞什么优化了。我还是不自己算
: SVD了。出力不讨好的事情呀。
: 多谢三位指教。

q**j
发帖数: 10612
10
但是那个就是matlab的问题,不是我的了!

【在 o****e 的大作中提到】
: sqrtm一样有误差,天下木有白吃的午餐
:
: 己算

o****e
发帖数: 4946
11
ft,这个工作态度不professional

【在 q**j 的大作中提到】
: 但是那个就是matlab的问题,不是我的了!
M*******c
发帖数: 4371
12
Defined the smallest 实数 ep. Anything less than ep be ignored.
I remember there is a fuction called Re()

3000

【在 q**j 的大作中提到】
: 正常情况下当然都是对角的了?关键是矩阵大了就不是这么理想了。我的矩阵都是3000
: by 3000的。用了eig(A)以后给的对角矩阵不是完全对角的。而是block diagonal的。
: 每个block上面对角线上是正的实数加上一个很小的imaginary part,但是其他地方是
: 很小的虚数。我在想是否可以把
: 这些虚数硬变成0算了。

1 (共1页)
进入SanFrancisco版参与讨论
相关主题
在公司服务器装盗版matlab,后被删除 会不会被炒? (转载)说说我在装逼公司当面试官的经历 (转载)
quant openings (contract position)网上买轮胎,是不是三个SIZE参数选对了,就一定能安装???谢谢
求统计或数据分析Volunteer实习机会iphone6 touch panel不工作了,怎么办,烂苹果 (转载)
找工作推荐。。。。标题要长长长。。。。。长长长问高手一个用mathematica的问题。
莱曼猜想的第一步搞不明白 (转载)那个软件用来作heatmap比较方便?
[金融快讯]BBS升级在即,MIT伪币市场一片动荡求高人给解个方程!!!多谢 108 X^4 + 444 X^2 - 1566 X - 2523 = 0
有什么好办法背数学的平方/平方根/立方/立方根吗?学什么编程语言好?
尘埃落定(MGF的面试总结) (转载)经济硕士直接转CS求建议
相关话题的讨论汇总
话题: 矩阵话题: matlab话题: diagonal话题: eig话题: 误差