matlab cond(H)判断矩阵病态
2016-03-15 15:13
267 查看
原文转载于:http://blog.sina.com.cn/s/blog_62f3c4ef0101597k.html
条件数是判断矩阵病态与否的一种度量,条件数越大矩阵越病态。
一个低条件数的问题称为良置的,而高条件数的问题称为病态(或者说非良置)的。
条件数事实上表示了矩阵计算对于误差的敏感性。对于线性方程组Ax=b,如果A的条件数大,b的微小改变就能引起解x较大的改变,数值稳定性差。如果A的条件数小,b有微小的改变,x的改变也很微小,数值稳定性好。它也可以表示b不变,而A有微小改变时,x的变化情况。
比如线性方程组
〔1 2 [x = [4
3.999 1] y] 7.999]
的解是(x,y)=(2,1),
而
〔1 2 [x = [4.001
3.999 1] y] 7.998]
的解是(x,y)=(-3.999,4.000)
可见b很小的扰动就引起了x很大的变化,这就是A矩阵条件数大的表现。
一个极端的例子,当A奇异时,条件数为无穷,这时即使不改变b,x也可以改变。奇异的本质原因在于矩阵有0特征值,x在对应特征向量的方向上运动不改变Ax的值。如果一个特征值比其它特征值在数量级上小很多,x在对应特征向量方向上很大的移动才能产生b微小的变化,这就解释了为什么这个矩阵为什么会有大的条件数,事实上,正规阵在二范数下的条件数就可以表示成 abs(最大特征值/最小特征值)。
条件数是判断矩阵病态与否的一种度量,条件数越大矩阵越病态。
一个低条件数的问题称为良置的,而高条件数的问题称为病态(或者说非良置)的。
条件数事实上表示了矩阵计算对于误差的敏感性。对于线性方程组Ax=b,如果A的条件数大,b的微小改变就能引起解x较大的改变,数值稳定性差。如果A的条件数小,b有微小的改变,x的改变也很微小,数值稳定性好。它也可以表示b不变,而A有微小改变时,x的变化情况。
比如线性方程组
〔1 2 [x = [4
3.999 1] y] 7.999]
的解是(x,y)=(2,1),
而
〔1 2 [x = [4.001
3.999 1] y] 7.998]
的解是(x,y)=(-3.999,4.000)
可见b很小的扰动就引起了x很大的变化,这就是A矩阵条件数大的表现。
一个极端的例子,当A奇异时,条件数为无穷,这时即使不改变b,x也可以改变。奇异的本质原因在于矩阵有0特征值,x在对应特征向量的方向上运动不改变Ax的值。如果一个特征值比其它特征值在数量级上小很多,x在对应特征向量方向上很大的移动才能产生b微小的变化,这就解释了为什么这个矩阵为什么会有大的条件数,事实上,正规阵在二范数下的条件数就可以表示成 abs(最大特征值/最小特征值)。
相关文章推荐
- Matlab和java间socket通信
- MATLAB GUI实现常见图像处理算法与视频跟踪算法
- matlab 基础语法笔记(一)
- MATLAB中digits和vpa
- matlab应用初步学习
- matlab应用初步学习
- matlab和C++混编(1)配置开发环境
- 常用的符号运算
- matlab sort()升序和降序
- matlab 串口读取设置
- Matlab实现两个大数相加
- matlab文件批处理
- matlab/simulink学习的笔记都总结在这里
- 最小二乘曲线拟合的MATLAB仿真
- .mat,.txt,.csv 数据转换为weka中的arff格式及matlab和Weka之间相互转换格式
- matlab编程
- NN学习笔记
- MATLAB下载及安装
- 特征提取——生成样本矩阵(MATLAB实现)
- Matlab 视频读写操作