本文主要是介绍矩阵病态问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- 病态(ill-conditioned)矩阵
- 病态(ill-posed)方程
病态矩阵
- 矩阵的frobenius范数:
- 对每一个元素平方,求和再开平方
- 矩阵的条件数:矩阵的frobenius范数与该矩阵的逆的frobenius范数的乘积
- 对于同阶矩阵,矩阵的条件数越大,他的病态程度越高
- 一般而言,条件数小于100,矩阵健康
- 介于100-1000之间,有一定的病态趋势
- 大于1000,病态
病态矩阵的实质
- 矩阵向量(行或列)之间存在共线性
举例
import numpy as npA = np.array([[1, 2], [3.00001, 6]])
b = np.array([6, 18])
def cond(A):a = np.sum(A**2)**0.5b = np.sum(np.linalg.inv(A)**2)**0.5return a*bx = np.linalg.solve(A, b)
print(x, " ", cond(A))
[0. 3.] 2500003.000017089
import numpy as npA = np.array([[1, 2], [2, 6]])
b = np.array([6, 18])
def cond(A):a = np.sum(A**2)**0.5b = np.sum(np.linalg.inv(A)**2)**0.5return a*bx = np.linalg.solve(A, b)
print(x, " ", cond(A))
[0. 3.] 22.500000000000004
这篇关于矩阵病态问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!