- 病态(ill-conditioned)矩阵
- 病态(ill-posed)方程
病态矩阵
- 矩阵的frobenius范数:
- 对每一个元素平方,求和再开平方
- 矩阵的条件数:矩阵的frobenius范数与该矩阵的逆的frobenius范数的乘积
- 对于同阶矩阵,矩阵的条件数越大,他的病态程度越高
- 一般而言,条件数小于100,矩阵健康
- 介于100-1000之间,有一定的病态趋势
- 大于1000,病态
病态矩阵的实质
- 矩阵向量(行或列)之间存在共线性
举例
import numpy as np
A = np.array([[1, 2], [3.00001, 6]])
b = np.array([6, 18])
def cond(A):
a = np.sum(A**2)**0.5
b = np.sum(np.linalg.inv(A)**2)**0.5
return a*b
x = np.linalg.solve(A, b)
print(x, " ", cond(A))
[0. 3.] 2500003.000017089
import numpy as np
A = np.array([[1, 2], [2, 6]])
b = np.array([6, 18])
def cond(A):
a = np.sum(A**2)**0.5
b = np.sum(np.linalg.inv(A)**2)**0.5
return a*b
x = np.linalg.solve(A, b)
print(x, " ", cond(A))
[0. 3.] 22.500000000000004