matlab的QR分解函数QR()
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab的QR分解函数QR()相关的知识,希望对你有一定的参考价值。
这个函数的输入矩阵不可以是double类型吗?事实上处理的矩阵大多是这种类型呀,要对一个double类型的矩阵做QR分解,matlab里面有现成的函数吗?
完全可以,是一样的调用QR。>> A=rand(5)
A =
0.5828 0.2259 0.2091 0.5678 0.4154
0.4235 0.5798 0.3798 0.7942 0.3050
0.5155 0.7604 0.7833 0.0592 0.8744
0.3340 0.5298 0.6808 0.6029 0.0150
0.4329 0.6405 0.4611 0.0503 0.7680
>> [Q,R]=qr(A)
Q =
-0.5598 0.8235 -0.0747 0.0193 0.0492
-0.4068 -0.1939 0.5250 -0.6391 -0.3359
-0.4952 -0.3400 -0.2889 0.4805 -0.5699
-0.3208 -0.2913 -0.6630 -0.4618 0.3993
-0.4159 -0.2894 0.4425 0.3833 0.6329
R =
-1.0410 -1.1752 -1.0696 -0.8846 -1.1138
0 -0.5246 -0.4996 0.1034 -0.2410
0 0 -0.2899 -0.0200 0.2063
0 0 0 -0.7274 0.5207
0 0 0 0 -0.0882追问
刚刚写成了QR(A)于是就不行了,QR()和qr()是什么区别呢?
追答Matlab 对系统保留字,大小写没有区别。
追问同样的程序改成QR大写就显示:
Undefined function or method 'QR' for input arguments of type 'double'
这是为什么呢?
不好意思,搞错,必须小写。
参考技术A lu分解牵涉到选主元,符号本身不带大小,所以lu就不行了,除非你自己知道某些未知量的性质然后自己写一个。qr分解的计算当中倒是没有比较,不过我估计直接调qr还是不行的,如果不能直接用的话就自己写一段代码,反正块运算对符号也没用。
我不知道你为什么有这些需求,我估计你本身的问题可能有别的办法来解决,符号计算大多数时候是没用的。
matlab中如何用qr函数求特征值和特征向量,矩阵是mxn
eig求出矩阵奇异有复数结果,想用qr分解求,看到过求特征值的,想知道如何求特征向量
①矩阵不是方阵
②下一步主要是用特征向量(但特征值和特征向量都要求)
③最好能写出代码来
PS:求出的特征值和特征向量是按特征向量由大到小排列的么?
O(∩_∩)O谢谢
①可以无视了
即使是方阵, QR分解也不是直接用来求特征值和特征向量的.
尽管求所有特征值和特征向量最重要的算法是QR算法, 数学上可以解释为反复做QR分解, 但实际上也并不该qr这个函数来实现.
当然, 如果你一定想用qr, 那么可以反复迭代
[Q,R]=qr(A); A=Q'*A*Q;
直到A收敛到对角块不超过2阶的分块上三角阵.
至于求特征向量, 对每个特征值各解一次方程组就行了.
就讲这些, 即使你看不明白, 我也不会继续回答了, 这纯粹是浪费时间. 参考技术A 1.矩阵qr分解直接用函数qr就可以了。qr函数适用于不是方针的矩阵分解。
2.用法[q,r]=qr(a)得到q是mm矩阵,r是mn.
3.排列大小的可以采用sort函数。
具体情况建议打开MATLAB 帮助浏览器详细看qr函数的用法。
以上是关于matlab的QR分解函数QR()的主要内容,如果未能解决你的问题,请参考以下文章