d*******l 发帖数: 338 | 1 又想了想,上面的做法大概还是可以的,和你说的差不多。任何一个被1包围的0矩阵肯
定是局部最大的0矩阵,也就是说在上面那种做法中,在对每一行运用直方图方法的时
候,会被作为一个局部的最大值去更新整体的最大值。这个问题中,我想只要判断一下
,只对那些被1包围的0矩阵,才去更新整体最大值,就能得到结果。
不过你没说一个很关键的地方就是怎么在常数时间判断一个0矩阵是否被1包围,你说只
是检查两侧我觉得还是不够的,你这样存在的固然能找出来,却有可能将实际不是的给
误算上。比如你的例子如果改成这样:
1 0 1 0 1
2 0 0 0 0
0 0 1 1 0
1 0 2 2 0
0 0 3 3 0
0 0 1 0 0
那你的方法可能就会把那部分算上,其实并不应该算。
不过这个方法应该还是能行的通的,可以利用0-1矩阵的特点。先预处理得到矩阵每个
点与左上角确定的矩形的面积a[i][j],所谓面积就是所有值的累加。这个是n^2时间内
能完成的。然后通过一些简单的加减就能在常数时间内得到任何一个子矩阵的面积。假
如我们现在有一个全0矩阵,知道它右下角和左上角的位置,只需要判断比它大一圈的
那个矩阵面积... 阅读全帖 |
|
O******i 发帖数: 269 | 2 和一个美国人吧。给一个矩阵和一个数k,要算另外一个矩阵。新的矩阵的每个位置是
老矩阵里面每个对应位置位中心边长为k的小矩阵的平均。用DP算法可以做到N^2。然后
实现这个算法。写了三个函数。
在火车上睡觉的时候想了个解法,不知道对不对。
这个题的背景实际上是二维数字图像处理的卷积滤波。这里是求平均,也可以求最大,
最小以及median, 其实也就是二维的离散拉普拉斯算符。
其实可以先考虑一维的情形。难点是如何用空间换时间,不需要每次都对k个数都重新
求和。对一维数组A, 如果构造辅助数组B, 使得
B[j] = A[0] + A[1] + ... A[j]
则A[m] + A[m + 1] + ... + A[m + k - 1] = B[m + k - 1] - B[m - 1],可以O(1)时
间求得,而不用O(k)。
构造B的过程是DP, 类似Fibonacci的DP构造。
扩展到二维也是一样的,二维数组B每个元素的值,是二维数组A的左上顶点元素到右下
和B那个元素位置对应元素的子矩阵的和。
构造B的过程也是DP, 只是递归方程比一维情形稍微复杂些,是两个矩阵相加,减去相
交部分... 阅读全帖 |
|
x*z 发帖数: 381 | 3 已知矩阵A为带参数的稳定矩阵,i.e.,特征值实部都为负数。
现在我想限定A的所有特征值的实部都比-1小,所以我只需要
保证A+I仍为稳定矩阵即可。
我的问题是:
假如矩阵A是稳定矩阵,是否存在一个对称矩阵B,s.t.,如果
B是负定矩阵,那么A一定是稳定的?(B矩阵应该是A矩阵的一个函数)
想破了头没有头绪,那位大牛comment一下? |
|
p*******e 发帖数: 43 | 4 【 以下文字转载自 Science 讨论区,原文如下 】
发信人: pinkapple (apple), 信区: Science
标 题: 紧急求助-两个矩阵和的逆矩阵怎么求?
发信站: Unknown Space - 未名空间 (Tue Aug 3 01:01:37 2004) WWW-POST
两个矩阵和的逆矩阵能否用这两个矩阵及其逆矩阵来求?
如果其中一个无逆,可否用这两个矩阵及另外有逆矩阵之逆表示?
即若B无逆,如何用A,B,inv(A)来表示inv(A+B)? |
|
p**********n 发帖数: 1470 | 5 对,这样的人一般是有数学天赋的。
反之,如果一个人喜欢矩阵,不喜欢测度和数分,那么几乎可以肯定他是没有数学天赋
的。
但是其实不喜欢矩阵的原因不是矩阵本身不美,而是中国课本里根本不知道怎么讲矩阵。
中国的线代,矩阵就是矩阵,是核心内容。美国的线代,矩阵不过是线性空间线性变换
的表示而已。
最好的说法是,矩阵不过是rotation, translation, scaling的表示而已,这样就几何
化了。
任何东西不几何化的话就是没有意义的。当然几何意义不仅限于低维。
这种矩阵的几何理解,在国内只有computer graphics才会讲,数学系都不讲。
在美国则是freshman就讲了。 |
|
p**********n 发帖数: 1470 | 6 对,这样的人一般是有数学天赋的。
反之,如果一个人喜欢矩阵,不喜欢测度和数分,那么几乎可以肯定他是没有数学天赋
的。
但是其实不喜欢矩阵的原因不是矩阵本身不美,而是中国课本里根本不知道怎么讲矩阵。
中国的线代,矩阵就是矩阵,是核心内容。美国的线代,矩阵不过是线性空间线性变换
的表示而已。
最好的说法是,矩阵不过是rotation, translation, scaling的表示而已,这样就几何
化了。
任何东西不几何化的话就是没有意义的。当然几何意义不仅限于低维。
这种矩阵的几何理解,在国内只有computer graphics才会讲,数学系都不讲。
在美国则是freshman就讲了。 |
|
L***a 发帖数: 76 | 7 正在实现上个贴子提到的RU-LDPC编码。
再问一下二进制矩阵运算的问题,下面这些运算对吗?
1) 两向量相乘:对应元素AND , 然后 XOR
2) 求逆: T*inv(T) = I , 主对角线上元素为1,其它为0
2.1) [0]应该不可逆吧。
3) 矩阵相乘: 若干行,列向量的乘积
4) 矩阵相加: 对应元素XOR
5) 负矩阵 -A : 所有元素取反? 0->1 1>0
6) 矩阵相减 A - B: 矩阵 A 模二加 矩阵B的取反矩阵 ????
什么书介绍这些基本元算。没有google到。
好像就是这样。 http://en.literateprograms.org/Binary_matrix_(Java) |
|
g******s 发帖数: 410 | 8 很抱歉我把问题说得太模糊了,我本来是想把一个工程上的问题抽象出来讨论的,可惜
没有做好。其实问题是这样的:
我们知道自相关矩阵是半正定的Hermitian和Toeplitz矩阵,那么我的问题是是否一个矩
阵满足半正定、Hermitian、Toeplitz就能看成或者表示成自相关矩阵。
1.对于确定性向量,自相关矩阵A定义为A=x*x^H,x为列向量。刚才的给为给出的答案是
rank(A)=1,出去全零矩阵的特殊情况。
2.对于随机向量,自相关矩阵定义为A=E{x*x^H},E{.}表示数学期望。我现在的问题是对
随机向量的情况,如果一个矩阵A满足半正定、Hermitian、Toeplitz,它是否可以分解
成E{x*x^H}。我知道在随机情况下构造x可能很困难或者不可能,那么这种分解的表示是
否一定成立?或者矩阵A满足怎么样的条件才能分解成上述形式?
希望我这次把问题说清楚了:)谢谢指教! |
|
m*******s 发帖数: 3142 | 9 我现在遇到一个数值计算问题,大概如下
一个形如x-A(x)矩阵的逆矩阵,左乘右乘一个不同的常数矩阵,得到一个矩阵B,所有
这都是数值计算
得到的。
当然矩阵B也可以视为以x为自变量的算符。
然后我需要求这个矩阵B(x)的Fourier变换,
\int_{-\infty}^ {\infty}dx \boldsymbol{B} \left (x\right )e^{-ixt}
对每个t,都要重复做相同的数值积分程序,比较耗时。
我想问的是,有没有可能用一种形如
f_1(x)B_1+f_2(x)B_2+f_3(x)B_3+\cdots
的式子来拟合这个矩阵B(x),
其中f_1,f_2,f_3.....都是x的常见函数,B_1,B_2,B_3....是常数矩阵。
使得可以使用复变函数的residue theorem来方便地求得Fourier变换?
难就难在如何确定这些f_1,f_2,f_3,B_1,B_2,B_3....
似乎常规的least square方法派不上用场。
我感觉可以用B(x)的trace来找f_1,f_2,f_3.....但是这样也定不了B_1,B_2,B_3..
有没有更... 阅读全帖 |
|
g****t 发帖数: 31659 | 10 B(x)每个元素都展开成chebyshev 多项式,
然后 Chebyshev多项式的Fourier变换应该有表可以查?
我现在遇到一个数值计算问题,大概如下
一个形如x-A(x)矩阵的逆矩阵,左乘右乘一个不同的常数矩阵,得到一个矩阵B,所有
这都是数值计算
得到的。
当然矩阵B也可以视为以x为自变量的算符。
然后我需要求这个矩阵B(x)的Fourier变换,
\int_{-\infty}^ {\infty}dx \boldsymbol{B} \left (x\right )e^{-ixt}
对每个t,都要重复做相同的数值积分程序,比较耗时。
我想问的是,有没有可能用一种形如
f_1(x)B_1+f_2(x)B_2+f_3(x)B_3+\cdots
的式子来拟合这个矩阵B(x),
其中f_1,f_2,f_3.....都是x的常见函数,B_1,B_2,B_3....是常数矩阵。
使得可以使用复变函数的residue theorem来方便地求得Fourier变换?
难就难在如何确定这些f_1,f_2,f_3,B_1,B_2,B_3....
似乎常规的least square方法派不上用场... 阅读全帖 |
|
l*****e 发帖数: 65 | 11
a
昨天不能输中文,感觉很别扭。 今天卷土重来,求个年头通达。
你给的G矩阵, 满足 Tr(G)>= Tr(G P^T), 或者说,Tr(G) >= Tr(P G^T), 对所有
的置换矩阵P, 其中 G^T 指G的转置矩阵。 这意味着, 如果让D为由G的对角线上元素
组成的对角阵,J为所有n^2位置上全为1的矩阵,那么
Tr( DPJ )= Tr(DJ) = Tr (D) = Tr(G) >= Tr(P G^T)。 进一步, 如果有c_1, ..., c
_k 正数, 那么对凸组合 c_1 P_1 + ...+ c_k P_k 有
Tr ( D(c_1 P_1+ ... + c_k P_k) J ) >= Tr ( (c_1 P_1+...+c_k P_k) G^T ).
接下来考虑你给的X矩阵。 由于X元素非负(条件2)且行和等于列和 (条件1), 那
么加上一个适当的对角矩阵(元素恒正), 可以使得 X+Y 每一行和,每一列和都相等
。 这样的矩阵早由Birkhoff 和冯。 诺依曼所完全刻画, 存在一些正数c_1, ..., c_
k以及一些置换矩阵P_1, ..., P_k... 阅读全帖 |
|
s*******2 发帖数: 499 | 12 我用R算一个20X20的对称矩阵的逆矩阵。可是我发现算出来的矩阵有问题。因为这个逆
矩阵和逆矩阵的转置差别较大。
可是,如果我用原矩阵乘以逆矩阵,结果基本上是个单位矩阵。
请问这是怎么回事?谢谢。 |
|
g**********t 发帖数: 475 | 13 【 以下文字转载自 Computation 讨论区 】
发信人: geneticdrift (不懂微积分), 信区: Computation
标 题: 如何用CUDA同时计算几百个实对称矩阵的eigenvalues/eigenvecot
发信站: BBS 未名空间站 (Mon Jul 2 02:38:51 2012, 美东)
我有一个程序要反复计算几百个(约500个)64 x 64的实对称矩阵的所有的
eigenvalues/eigenvectors。自己用CUDA实现了一个Jacobi algorithm with chess
tournament ordering。具体来说,每个block(含有32个threads)处理一个矩阵,这32
个threads并行消去一个矩阵中的32个off-diagonal elements,直到算法收敛。结果无
误,计算单个矩阵所花的时间也和最近的一篇paper里的数据接近。但是这个算法和CPU
上的library比没有太大的优势。在同时处理这500个矩阵的情况下,和GSL里面高度优
化的函数比较(用单CPU),用GPU仅仅快了一倍。我觉得主要是... 阅读全帖 |
|
g**********t 发帖数: 475 | 14 【 以下文字转载自 Computation 讨论区 】
发信人: geneticdrift (不懂微积分), 信区: Computation
标 题: 如何用CUDA同时计算几百个实对称矩阵的eigenvalues/eigenvecot
发信站: BBS 未名空间站 (Mon Jul 2 02:38:51 2012, 美东)
我有一个程序要反复计算几百个(约500个)64 x 64的实对称矩阵的所有的
eigenvalues/eigenvectors。自己用CUDA实现了一个Jacobi algorithm with chess
tournament ordering。具体来说,每个block(含有32个threads)处理一个矩阵,这32
个threads并行消去一个矩阵中的32个off-diagonal elements,直到算法收敛。结果无
误,计算单个矩阵所花的时间也和最近的一篇paper里的数据接近。但是这个算法和CPU
上的library比没有太大的优势。在同时处理这500个矩阵的情况下,和GSL里面高度优
化的函数比较(用单CPU),用GPU仅仅快了一倍。我觉得主要是... 阅读全帖 |
|
g**********t 发帖数: 475 | 15 【 以下文字转载自 Computation 讨论区 】
发信人: geneticdrift (不懂微积分), 信区: Computation
标 题: 如何用CUDA同时计算几百个实对称矩阵的eigenvalues/eigenvecot
发信站: BBS 未名空间站 (Mon Jul 2 02:38:51 2012, 美东)
我有一个程序要反复计算几百个(约500个)64 x 64的实对称矩阵的所有的
eigenvalues/eigenvectors。自己用CUDA实现了一个Jacobi algorithm with chess
tournament ordering。具体来说,每个block(含有32个threads)处理一个矩阵,这32
个threads并行消去一个矩阵中的32个off-diagonal elements,直到算法收敛。结果无
误,计算单个矩阵所花的时间也和最近的一篇paper里的数据接近。但是这个算法和CPU
上的library比没有太大的优势。在同时处理这500个矩阵的情况下,和GSL里面高度优
化的函数比较(用单CPU),用GPU仅仅快了一倍。我觉得主要是... 阅读全帖 |
|
c**c 发帖数: 9 | 16 写了一个mpi得cannon算法。我检测误差得方法是。一个进程把矩阵乘法单独算一遍。
然后和mpi得版本进行比较。单一进程和mpi子矩阵用得是同样得三重循环矩阵乘法。
当输入矩阵得元素是整数类浮点(比如1.0,15.0)得时候。程序没有误差
当输入矩阵得元素是完美小数得浮点,比如0.5,1.125得时候。程序没有误差
但是当输入矩阵是不完美得小数。比如说0.1得时候就会出现误差。误差会随着矩阵规
模得增大而增大。
我的想法是。如果是rounding error。那么单一进程得算法和mpi分块算法用得都是同
一个三重循环。即使有rounding error也应该相同。。。可是就是有误差。或者说我使
用mpi得时候用得不对?
郁闷阿。想了很久都想不出来问题出在哪个地方。问问前辈们有没有遇到过这种情况。
有没有什么解决的idea阿。呵呵。谢谢了 |
|
j********3 发帖数: 560 | 17 【 以下文字转载自 Computation 讨论区 】
发信人: johnlee123 (no), 信区: Computation
标 题: 请教一个大规模且系数矩阵病态的方程组的求解
发信站: BBS 未名空间站 (Tue Jun 12 21:37:17 2007)
一个线性方程组,系数矩阵很病态,条件数大于10^18,规模也很大,至少是50,000×
50,000。 系数矩阵倒是稀疏的,只不过除了五对角外,其它地方也有不少非零元素。
现在的问题是,如果系数矩阵是良态的但是大规模稀疏,用LU分解可以解决问题;如果
系数矩阵是病态的但是规模不大,那么用SVD也可以解决问题。但是两个问题合在一起
,我就不知道该怎么处理了。如果用SVD的话,存在计算时间和存储空间的问题,计算
时间不好估计,但是肯定很长,存储问题可以至少估计一个下限。即使系数矩阵本身能
够用sparse方式存储,经过SVD分解之后生成的矩阵U和V通常都不是稀疏的,采用双精
度浮点的话,其中任何一个都至少需要50,000×50,000×8(大约2G)的存储空间,更
不用说计算过程中的存储了。我也尝试过用截断奇异值的方法,但 |
|
x******g 发帖数: 41 | 18 0/1 矩阵内最大1矩阵的问题
看了版上的讨论,建议直方图内切矩阵来解决
按照行/列加分别得到一个直方图
然后求最大的内切矩阵
得到左右的range,四个range就是最大1矩阵
这个思路正确吗?
如果是对的,很容易就找到反例了,比如
0 1 0 1 0
1 0 1 0 1
0 1 0 1 0
1 0 1 0 1
1 0 1 0 1
行列相加得到的一维向量都是3,2,3,2,3
直方图就是这个样子的
| | |
| | | | |
| | | | |
最大的内切举证都是从0-4,面积是2x5 =10
谁能指点一下么? |
|
y****n 发帖数: 743 | 19 我的想法是:
1. 建立矩阵1,纵向用slide window对原矩阵求和。
2. 建立矩阵2,横向用slide window对矩阵1求和。
3. 扫描矩阵2,找到最大值就是目标矩阵所在位置
复杂度O(M*N),不知道有没有遗漏什么 |
|
j********3 发帖数: 560 | 20 【 以下文字转载自 Computation 讨论区 】
发信人: johnlee123 (no), 信区: Computation
标 题: 请教Matlab中矩阵求逆问题
发信站: BBS 未名空间站 (Mon Feb 19 13:44:00 2007)
请问对于一个接近奇异的矩阵,应该如何去求它的逆矩阵?Matlab自己的inv函数不能
给出准确的结果,运行之后给出如下提示
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 7.828442e-018.
将所得矩阵和原矩阵相乘,得到的也不是单位矩阵,并且差得也很大。请问有什么方法
来解决这个问题?多谢了! |
|
w****j 发帖数: 237 | 21 【 以下文字转载自 Mathematics 讨论区 】
发信人: winglj (coolking), 信区: Mathematics
标 题: 一个简单的矩阵函数问题
发信站: BBS 未名空间站 (Thu Feb 22 18:59:53 2007)
想请教各位一个简单的矩阵函数问题:
一个 n-by-n 矩阵,
其本征值(eigen value)为 e1,e2,...,en,
本征量矩阵E=diag(e1,e2,...,2n),
本征矢量矩阵为 T
A=T*E*T^(-1)
一个标量函数f(x),例如 exp(x)
那矩阵函数 f(A) 是不是等于
如果本征值不同:
f(A)=T*f(E)*T^(-1)=T*diag(f(e1),f(e2),...,f(en))*T^(-1)
如果有本征值相同:
f(a)=T*[f(e1),f'(e1)/1!,f''(e1)/2!,....;0,f(e1),...]*T^(-1)
好像隐隐约约记得是这样定义的,手头没有工具书,现谢谢各位了 |
|
j********3 发帖数: 560 | 22 我原来用sparse来生成大矩阵,做奇异值分解的时候要用svds命令,但是svds本身调用
了zeros函数,这时程序提示
"Product of dimensions is greater than maximum integer."
或者有时候就是"out of memory"。请问碰到这种情况应该怎么办呢?
我最初的目的是要求解线性方程组,但是所要求解的线性方程组的系数矩阵接近奇异,
在版上求教之后得各位大虾指点,使用pinv函数得到了较好的结果。但是之后当所要处
理的系数矩阵增大(至大约2000×2000)时,程序提示"out of memory"。后使用
sparse命令代替zeros命令生成矩阵,但是却无法使用pinv,因为pinv本身调用的是svd
函数做奇异值分解,而对于sparse方式存储的矩阵,要使用svds命令。于是我就自己写
code用svds命令做奇异值分解,但是发现svds本身也用到了zeros来生成零矩阵,这样
,我就没有办法再进行下去了,因为我总不能将我要用的matlab自带函数都重新写一遍
。再次来版上求助,多谢各位大虾了。 |
|
j**u 发帖数: 6059 | 23 ☆─────────────────────────────────────☆
johnlee123 (no) 于 (Tue Jun 12 21:37:17 2007) 提到:
一个线性方程组,系数矩阵很病态,条件数大于10^18,规模也很大,至少是50,000×
50,000。 系数矩阵倒是稀疏的,只不过除了五对角外,其它地方也有不少非零元素。
现在的问题是,如果系数矩阵是良态的但是大规模稀疏,用LU分解可以解决问题;如果
系数矩阵是病态的但是规模不大,那么用SVD也可以解决问题。但是两个问题合在一起
,我就不知道该怎么处理了。如果用SVD的话,存在计算时间和存储空间的问题,计算
时间不好估计,但是肯定很长,存储问题可以至少估计一个下限。即使系数矩阵本身能
够用sparse方式存储,经过SVD分解之后生成的矩阵U和V通常都不是稀疏的,采用双精
度浮点的话,其中任何一个都至少需要50,000×50,000×8(大约2G)的存储空间,更
不用说计算过程中的存储了。我也尝试过用截断奇异值的方法,但是在所有的奇异值里
,只有一个奇异值相对于其它值来说非常小,如果仅仅将该奇异值舍去, |
|
c*******d 发帖数: 255 | 24 【 以下文字转载自 Mathematics 讨论区 】
发信人: connected (disconnected), 信区: Mathematics
标 题: 如何判断矩阵A是否在Ker(B)上奇异?
发信站: BBS 未名空间站 (Sat Oct 10 23:05:12 2009, 美东)
给定两个矩阵,矩阵A是一个nxn的对称矩阵,矩阵B是一个mxn的矩阵
其中m
有没有办法数值上求出|x'Ax|/x'x在Ker(B)上的下确界alpha,
从而判断出A是否在Ker(B)上奇异? |
|
r********d 发帖数: 155 | 25 矩阵很大,而且里面各个元素z(x,y)已知,每个元素z(x,y)有对应的x,y平面均匀分布
的坐标值,我可以写出每个坐标对应的矩阵元素值的data文件,但如何根据这个矩阵在
matlab中直接画出等高线图呢?多谢大家帮助了!
补充:
我看contour等命令都是根据已知函数,然后求出此函数在不同坐标下的离散值形成的
矩阵,从而画出等高线图。但这个不适应我的矩阵,因为我的矩阵中的各个元素值与对
应坐标之间没法用某个函数来表达,他们之间没有一个明确的函数关系,而仅仅是知道
这些坐标以及对应的值而已。 |
|
g**********t 发帖数: 475 | 26 我有一个程序要反复计算几百个(约500个)64 x 64的实对称矩阵的所有的
eigenvalues/eigenvectors。自己用CUDA实现了一个Jacobi algorithm with chess
tournament ordering。具体来说,每个block(含有32个threads)处理一个矩阵,这32
个threads并行消去一个矩阵中的32个off-diagonal elements,直到算法收敛。结果无
误,计算单个矩阵所花的时间也和最近的一篇paper里的数据接近。但是这个算法和CPU
上的library比没有太大的优势。在同时处理这500个矩阵的情况下,和GSL里面高度优
化的函数比较(用单CPU),用GPU仅仅快了一倍。我觉得主要是Jacobi algorithm对于这
个大小的矩阵效率太差,而GSL里面的函数用的好像是QR decomposition,虽然只有一
个thread但是效率很高。有没有比较适合我的问题的能在GPU上高效执行的算法?有没
有什么paper/code可以参考的?先谢谢了。 |
|
d*******2 发帖数: 340 | 27 一个NxN矩阵,矩阵中心点为(N/2,N/2)。知道一个角度函数 theta(r),r为各矩阵元素
到中心点的距离,即r(ite1,ite2)=sqrt((ite1-N/2)^2+(ite2-N/2)^2)。
现在需要构造一个新的矩阵(N,N),如果这个矩阵中某个元素的位置为(r*cos(M*theta
),r*sin(M*theta)),则该元素为1,否则为0(M为整数)。请问怎么构造这个心的矩阵
?先谢了! |
|
j********3 发帖数: 560 | 28 【 以下文字转载自 Computation 讨论区 】
发信人: johnlee123 (no), 信区: Computation
标 题: 请教Matlab中矩阵求逆问题
发信站: BBS 未名空间站 (Mon Feb 19 13:44:00 2007)
请问对于一个接近奇异的矩阵,应该如何去求它的逆矩阵?Matlab自己的inv函数不能
给出准确的结果,运行之后给出如下提示
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 7.828442e-018.
将所得矩阵和原矩阵相乘,得到的也不是单位矩阵,并且差得也很大。请问有什么方法
来解决这个问题?多谢了! |
|
x*z 发帖数: 381 | 29 sorry
我是想知道,对任何一个稳定矩阵A,是否存在对称矩阵B,
(B是A的函数),使得如下等价存在:
A是稳定矩阵 <=> 一个对称矩阵B是负定矩阵
谢谢。
~~~~
~~~~
兄弟what's your point? |
|
p**o 发帖数: 3409 | 30 求一个实矩阵M的最佳平方近似阵M' (也就是最小化M和M'的对应项的差的平方和)
可以通过奇异矩阵分解(SVD)得到——
先把M做SVD分解:M = U S V (其中S是对角阵,U、V是正交阵;S与M同秩)。
如果所需要的近似阵M'的秩为1,则留下S最大那个奇异值,其余归0,得到新阵S'。
那么M' = U S' V就是我们所要的秩为1的最佳平方近似阵。
http://en.wikipedia.org/wiki/Singular_value_decomposition
(如果所需M'的秩为r,则过程中保留S最大的r个奇异值)
这个方法对于一个“完整”的实矩阵来说是可行的,但是实际我遇到了一个问题:
如果矩阵M的某些项的数值我们无法得知(姑且称其为“不完整矩阵”吧),
随便举个例子(_表示不完整的部分)
1 2 3 _
3 4 _ _
4 _ 12 _
那么其对应近似阵M'怎么求呢?
也就是说,对于一个不完整矩阵M,如何求它的秩为1(先考虑1吧)的近似阵M',
使得M'在M的数值 |
|
w*********r 发帖数: 488 | 31 雪天跪求高手赐教。随机生成几个数排到矩阵里,但是总不能保证矩阵的eigenvalues
全小于1.我现在可以设
一个条件如果不满足小于1的条件就重新生成,但是觉得这样不是很efficient,没有办
法保证一定会出现满
足条件的矩阵。不知道有没有可能先设N个eigenvalues 给N -dimension的矩阵,然后
根据这些
eigenvalues生成矩阵,而且矩阵不一定是对角阵。
谢了先~~~~~~~ |
|
A***W 发帖数: 419 | 32 请定义你的"矩阵运算公式".
只用矩阵乘做不到,因为 rank(A)=2,rank(B)=4,而乘积的rank总是不大于个别矩阵的
rank.
如果可以用加的话,楼上的办法是最简单的.
如果可以用子矩阵,合并矩阵的话就很简单. 比如说用Mapple
B:=<|
4],[1,2])>>; |
|
m**********e 发帖数: 12525 | 33 你们这些蚂脓的智商
记住,集合没有"序"这个概念,矩阵有"序"这个概念
集合{a,b}和集合{b,a}完全等价
矩阵(a,b)和矩阵(b,a)就完全不一样
所以,集合运算无论如何都不能表达为矩阵运算
SQL的joint都是集合运算,理论上无法用任何矩阵运算表达 |
|
h***t 发帖数: 2540 | 34 对于一个只有0和1的n by n的稀疏矩阵, 怎么找出相应的m by m的小矩阵,m
是比如你选原矩阵的第2行,就要包含原矩阵的第2列。
目标是使得找到的矩阵的1最多
最好时间复杂度低一些,谢谢 |
|
f**********t 发帖数: 1001 | 35 我有一个M*N维的矩阵
希望找到一个m*n维的子矩阵使得其元素和最大
这个子矩阵的行和列不一定要连续
这个问题有好的解么?
就比如说,一个矩阵是3*3的
设每行每列的编号是(1, 1,) (1, 2), (1, 3)(2, 1,) (2, 2), (2, 3)(3, 1,) (3, 2)
, (3, 3),则(1, 1)(1, 3)(3, 1)(3, 3)这四个点组成的也算是个子矩阵
目前有想法,但时间复杂度很大。感觉好像只有枚举法来做这个问题。不知大家有没有
更好的解法。 |
|
c******t 发帖数: 1500 | 36 被MITBBS给砍掉了...
题目是:
一个矩阵,里面的值是0或1,找出最大子矩阵,此子矩阵全部由1组成 |
|
f*******m 发帖数: 5008 | 37 这个在线电子音乐矩阵(Tone Matrix)http://lab.andre-michelle.com/tonematrix是基于Flash开发的,作者Andre Michelle(http://blog.andre-michelle.com/)开发这个小玩具的思路来源于他前一阵试用雅马哈的电子音乐矩阵Tenori ON,
一些关于这个在线电子音乐矩阵的说明:
1. 使用鼠标左键点击矩阵上的方块,点亮后便能发出声音;在点亮的方块上再次用左
键点击便能将其熄灭同时声音消失;
2. 如果您一不小心玩出了一段动人的旋律,点击右键选择“复制”便可以将这段旋律
复制下来,然后您可以将这段旋律发送给您的朋友分享。当然,您还得告诉您的朋友这
个电子音乐矩阵的地址,他将这段旋律粘贴上去之后便可以听到您的大作了。比如这一
段:
0,248,16,32,64,248,0,248,0,248,136,136,0,248,168,136
3. 如果您觉得自己编出来的旋律不好听,又不想一个一个将方块熄灭或者按F5键重新
加载的话,那么点击一下您键盘上的空格键。WOW,所有方块都熄灭了。 |
|
r*******i 发帖数: 1640 | 38 我觉得版上有些佛爷们应该在折腾器材之余花点时间耐心钻研一下相机说明书和一些基
础的摄影教程,好歹弄明白曝光、测光、对焦、景深这些基本概念和原理
测光是为了决定相机的曝光参数,矩阵测光和点测光的区别是测光的取样范围不同:矩
阵测光是对整个取景范围进行取样,点测光是仅对对焦点(点测联动)或中心点周围很
小一个范围进行取样。
如果你觉得测光范围能影响照片清晰度,实际上是不同的测光范围会得到不同的曝光参
数,是曝光参数的变化影响了照片清晰度:根据你选用的自动测光模式,可能是通过矩
阵测光得到了更长的快门,导致抖动反映在照片上,或者得到了更大的光圈,导致景深
变浅。
根据你描述的症状,很可能是你拍摄的场景整体较暗,矩阵测光对整个场景取样的时候
就会认为需要较高的曝光量。但究竟应该采用哪种测光取样,应该根据实际场景情况和
需要决定。比如你说的“人在阴影”中,可以是模特在建筑阴面靠墙站(整个取景范围
都是影子),也可能是大白天一片草坪上仅有的一棵树下树荫里站了个人(画面中一小
部分是影子)。前者如前所述矩阵测光容易过曝,而后者反而对影子点测光会过曝。
曝光补偿是人为offset相机的自动测光结果以得... 阅读全帖 |
|
s******u 发帖数: 179 | 39 谢谢你的回复。对指针,无论是C里的还是fortran里的,我想最少有一点是相通的,用
指针赋值要比直接传值快,这就是我在我的fortran程序里大量使用指针的原因,因为
我要频繁把这些值取出来操作。在我测试的时候发现,把这些值取出花费了比我想象得
多得多的时间。
至于您提到的三个问题,第一个array subsection是指对大矩阵的一部分进行操作么?
在fortran中,指针能令对部分矩阵元素操作更便捷,比如定义一个指针数组,指向某
一个大矩阵的部分元素,那么对这个指针数组的操作要比对原矩阵操作更有效和快速。
第二个问题,矩阵赋值,用指针也能够比直接赋值要快吧,毕竟只需要把地址传过去就
行了。
第三个问题,我对c没怎么深究过,不清楚具体怎么回事。但是fortran中好像不能对地
址进行操作,在fortran中得不到一个数组的地址,我也想过把这些数据存在一个连续
空间中,然后安地址一个一个往后读,但是不知道怎么在fortran中得到这个数据的地
址。
谢谢您的回复,感激涕零. |
|
N******K 发帖数: 10202 | 40 10年前c++确实可以写矩阵库 但是很有可能写出来的性能很弱
比如 C= A+B+D 就得产生好几个临时矩阵 (A+B) ((A+B)+D) 要分配内存等等 浪费,
如果函数返回,还得模拟一个 std::move 我还真手动模拟了一个 std::move 结果发
现c++11就有
我写的这个 如果是线性组合 根本不用产生临时矩阵
另外 matlab的copy-on-write 是有性能问题的 应为matlab函数是传值 所以搞copy-on
-write 如果c++也搞 那就疯了
我一开始完全模仿matlab 搞的也是copy-on-write
比如
A, B是两个矩阵
B=A; //只是共享数据,不拷贝,一般称为shallow copy
A(1,1)=0; // A发现有别人共享数据,那就在修改前复制一份,然后修改元素(1,1)
这样在所有的元素(i,j)操作,都要检查一下,疯了
c++有 const 引用 根本不需要 copy-on-write
我就把 c++矩阵库 的copy-on-write 功能给去掉了
prvalue
,
. |
|
S***y 发帖数: 186 | 41 你如果用Fortran, 试试这个:
SUBROUTINE ZGEINV (N,A)
IMPLICIT NONE
INTEGER :: N
COMPLEX*16 :: A(N,N)
INTEGER :: IPIV(N)
INTEGER :: INFO, LWORK
COMPLEX*16, ALLOCATABLE :: WORK(:)
LWORK=N*ILAENV(1,'ZGETRI',' ',N,-1,-1,-1)
ALLOCATE(WORK(LWORK))
CALL ZGETRF(N,N,A,N,IPIV,INFO)
CALL ZGETRI(N,A,N,IPIV,WORK,LWORK,INFO)
DEALLOCATE(WORK)
END SUBROUTINE ZGEINV
这个是算复数矩阵的,如果你是实数矩阵,
把complex*16都换成real*8, ZGE都换成DGE.
当然这个是算普通矩阵的,对于对称正定矩阵,
可能还有更好的方法。
最后,要用LAPACK, 一定要用optimised BLAS,
否则对大矩阵,慢上个3,4倍都很正常。 |
|
h****b 发帖数: 10 | 42 来自主题: Computation版 - 对矩阵求导 查了很多数学书、数学手册,都没有找到详细的有关对矩阵求导的,从internet
上找到了一些只言片语。比如:
(请注意这里的 Y A 和 X 都是矩阵,A * X 表示标准矩阵乘法,由于这里没法
表示复杂的数学符号和上下标等,我用 A' 表示 A 的转置阵 transpose(A),
DY/DX 表示 Y 对 X 求导)
Y = A * X --> DY/DX = A'
Y = X * A --> DY/DX = A
Y = A' * X * B --> DY/DX = A * B'
Y = A' * X' * B --> DY/DX = B * A'
我做的一些矩阵运算中还包括了矩阵的Hadamard product(元素与元素相乘),
如果用 A 。X 表示 Hadamard product,类似于上面那些式子,Y 对 X 求导
应该怎么做呢?比如:
Y = A 。X --> DY/DX = ?
Y = X 。A --> DY/DX = ?
Y = A' 。X 。B --> DY/DX = ?
Y = A' 。X' 。B --> |
|
j********3 发帖数: 560 | 43 请问对于一个接近奇异的矩阵,应该如何去求它的逆矩阵?Matlab自己的inv函数不能
给出准确的结果,运行之后给出如下提示
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 7.828442e-018.
将所得矩阵和原矩阵相乘,得到的也不是单位矩阵,并且差得也很大。请问有什么方法
来解决这个问题?多谢了! |
|
b***k 发帖数: 2673 | 44 最近遇到一个工程问题,涉及到很多大型矩阵计算,计算量和存储量都很大。
不仅需要matrix自身的matrix vector production计算,
还需要用到其对应的Jacobian矩阵,Hermitian矩阵的计算,
看到文献中说一些matrix approximation的方法和理论可以提高计算效率和减少存储量,
这里学数学的朋友比较多,不知道能否推荐或建议一些这方面的方法,或者资料也行。
尤其是对于Jacobian,Hermitian矩阵计算的。
//bow |
|
k*******g 发帖数: 263 | 45 如果你懂得矩阵微分的话,可以自己推导出逆矩阵求导的公式。思路是,利用复合函数
求导,以及矩阵×矩阵的逆=单位矩阵可得。 |
|
F***e 发帖数: 23 | 46 【 以下文字转载自 Mathematics 讨论区 】
发信人: FoxMe (FoxMe), 信区: Mathematics
标 题: 矩阵求逆的复杂度
发信站: BBS 未名空间站 (Sun Mar 8 19:00:48 2009)
一个普通的NxN矩阵的求逆,运算量是多少?
查了几本书,居然都没有。
有人说是5N^3/3,用LU分解。但我觉得是2N^3:
A=LU: LU分解需要2N^3/3
U^{-1},L^{-1}: 每个三角矩阵的逆需要N^3/3,共2N^3/3
A^{-1}=U^{-1}L^{-1}: 上三角矩阵乘下三角矩阵,需要2N^3/3
是否正确,请大侠指教!多谢!! |
|
w****j 发帖数: 237 | 47 想请教各位一个简单的矩阵函数问题:
一个 n-by-n 矩阵,
其本征值(eigen value)为 e1,e2,...,en,
本征量矩阵E=diag(e1,e2,...,2n),
本征矢量矩阵为 T
A=T*E*T^(-1)
一个标量函数f(x),例如 exp(x)
那矩阵函数 f(A) 是不是等于
如果本征值不同:
f(A)=T*f(E)*T^(-1)=T*diag(f(e1),f(e2),...,f(en))*T^(-1)
如果有本征值相同:
f(a)=T*[f(e1),f'(e1)/1!,f''(e1)/2!,....;0,f(e1),...]*T^(-1)
好像隐隐约约记得是这样定义的,手头没有工具书,现谢谢各位了 |
|
t****y 发帖数: 576 | 48 两个同样size n by n的对称矩阵,如果A矩阵的每一个entry都比B矩阵大,是不是A矩阵
的eigenvalue就会比B矩阵大? |
|
l******0 发帖数: 313 | 49 有一个对称的矩阵,size是T by T,对家线上元素全部为K,非对角线上元素在[-1,1]
区间内。
请问K满足什么条件可以保证这个矩阵是正定(positive definite)矩阵?
p.s.:如果K=T,这个矩阵显然是正定的~ |
|
c*******d 发帖数: 255 | 50 给定两个矩阵,矩阵A是一个nxn的对称矩阵,矩阵B是一个mxn的矩阵
其中m
有没有办法数值上求出|x'Ax|/x'x在Ker(B)上的下确界alpha,
从而判断出A是否在Ker(B)上奇异? |
|