矩阵求逆 您所在的位置:网站首页 了矩阵的逆 矩阵求逆

矩阵求逆

2024-07-01 11:25| 来源: 网络整理| 查看: 265

打开实时脚本

了解为何通过使用 inv(A)*b 求逆矩阵对线性系统求解不如使用反斜杠运算符(即 x = A\b)直接求解。

创建一个 500 阶的随机矩阵 A,其条件数 cond(A) 为 1e10,并且其范数 norm(A) 为 1。精确解 x 是一个长度为 500 的随机向量,并且右侧为 b = A*x。因此,线性方程组是病态的但又是一致的。

n = 500; Q = orth(randn(n,n)); d = logspace(0,-10,n); A = Q*diag(d)*Q'; x = randn(n,1); b = A*x;

通过反转系数矩阵 A 对线性系统 A*x = b 求解。使用 tic 和 toc 获取时间信息。

tic y = inv(A)*b; t = toct = 0.0168

求计算的绝对误差和残差。

err_inv = norm(y-x)err_inv = 4.8457e-06 res_inv = norm(A*y-b)res_inv = 4.8952e-07

现在,使用反斜杠运算符 \ 对同一个线性系统求解。

tic z = A\b; t1 = toct1 = 0.0114 err_bs = norm(z-x)err_bs = 3.7705e-06 res_bs = norm(A*z-b)res_bs = 3.7080e-15

反斜杠计算方法速度更快,而且残差减少了几个数量级。err_inv 和 err_bs 均为 1e-6 的阶数这个事实直接反映了矩阵的条件数。

此示例的行为非常常见。使用 A\b(而非 inv(A)*b)的速度要快两至三倍,并且会基于计算机准确度生成残差(相对于数据量值而言)。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有