• 病态(ill-conditioned)矩阵
  • 病态(ill-posed)方程

病态矩阵

  • 矩阵的frobenius范数:
    • 对每一个元素平方,求和再开平方

矩阵病态问题-LMLPHP

矩阵病态问题-LMLPHP

  • 矩阵的条件数:矩阵的frobenius范数与该矩阵的逆的frobenius范数的乘积

矩阵病态问题-LMLPHP

  • 对于同阶矩阵,矩阵的条件数越大,他的病态程度越高 
    • 一般而言,条件数小于100,矩阵健康
    • 介于100-1000之间,有一定的病态趋势
    • 大于1000,病态

病态矩阵的实质

  • 矩阵向量(行或列)之间存在共线性

举例

矩阵病态问题-LMLPHP

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


 

矩阵病态问题-LMLPHP

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


 

10-12 10:55