迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 >

在 R 语言中查找矩阵的零空间

作者:迹忆客 最近更新:2023/03/21 浏览次数:

矩阵 A 的零空间包含所有向量 x,满足方程 Ax = 0。本文演示了如何在 R 中找到矩阵的零空间。

在 R 中使用 pracma 包的 nullspace() 查找矩阵的零空间

实用数值数学函数包 pracma 提供 nullspace() 函数来查找矩阵的零空间。我们需要安装这个包(一次性任务),加载它,然后使用 nullspace() 函数。

该函数返回另一个矩阵。此结果的列是线性独立的,并且跨越矩阵的零空间。

换句话说,它们构成了原始矩阵的零空间的基础。如果零空间仅包含零向量,则函数返回 NULL

在示例代码中,我们将创建一个 2 行 5 列的矩阵。nullspace() 函数返回的矩阵的行数与矩阵中的列数一样多。

对于我们的示例矩阵,它将有 5 行。

示例代码:

# Install the pracma package. (One-time task.)
install.packages(pracma)

# Load the pracma package.
library(pracma)

# Create a sample matrix, A.
A = matrix(c(11:20), nrow = 2, byrow = TRUE)
A

# Find the nullspace of the matrix A.
# Here, we save the nullspace as N to check the result.
N = nullspace(A)
N

输出:

> # Create a sample matrix, A.
> A = matrix(c(11:20), nrow = 2, byrow = TRUE)
> A
      [,1] [,2] [,3] [,4] [,5]
[1,]   11   12   13   14   15
[2,]   16   17   18   19   20
> # Find the nullspace of the matrix A.
> # Here, we save the nullspace as N to check the result.
> N = nullspace(A)
> N
            [,1]       [,2]       [,3]
[1,] -0.40544227 -0.3635422 -0.3216421
[2,]  0.04947538  0.3931700  0.7368647
[3,]  0.84401032 -0.1910660 -0.2261424
[4,] -0.21467770  0.6567907 -0.4717409
[5,] -0.27336573 -0.4953525  0.2826606

检查 R 中 nullspace() 函数的结果

零空间基的每个列向量必须满足方程 Ax = 0。这些向量的每个线性组合也必须满足这个方程。

但是,我们必须记住,会出现舍入误差。1e-10 阶的元素几乎等于 0。

示例代码:

# Multiply A with a column of N.
A %*% N[,1]

# Multiply A with a linear combination of all columns of N.
A %*% (5*N[,1]+2*N[,2]+3*N[,3])

输出:

> # Multiply A with a column of N.
> A %*% N[,1]
             [,1]
[1,] 5.329071e-15
[2,] 1.776357e-15
>
> # Multiply A with a linear combination of all columns of N.
> A %*% (5*N[,1]+2*N[,2]+3*N[,3])
              [,1]
[1,]  1.776357e-14
[2,] -3.197442e-14

R 中零空间基中的小数元素

当我们在具有整数元素的小矩阵上手动计算零空间时,我们通常会得到具有有理数元素的零空间基。

但是,R 返回的矩阵由十进制数组成。

尽管不在 R 上,但 MathWorks 零空间函数的帮助页面 区分了零空间的正交基和有理基。该描述暗示两者是等价的。

这也意味着从算法的角度来看,返回标准正交基在数值上更准确。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

R 中具有多个条件的函数向量化

发布时间:2023/03/21 浏览次数:64 分类:编程语言

一项常见的数据分析任务是根据同一行的其他列使用一个或多个条件创建或更新数据框列。 如果我们尝试使用 if 语句来执行此操作,则只会使用第一行来测试条件,并且会根据该行更

在 R 中读取 xlsx 文件

发布时间:2023/03/21 浏览次数:66 分类:编程语言

在这篇文章中,你将会了解到两个在 R 中读取 xlsx 文件的最完整和最容易使用的库:readxl 和 openxlsx。

清理 R 的环境

发布时间:2023/03/21 浏览次数:178 分类:编程语言

在本教程中,你将学习如何在 R 中编写一个函数,在不需要重新启动 R 的情况下清除环境。

在 R 中注释掉多行

发布时间:2023/03/21 浏览次数:63 分类:编程语言

在本文中,你将学习如何在 R 中注释出多行,而不必在每一行的开头手动写一个#字符来注释。

在 R 中清除内存

发布时间:2023/03/21 浏览次数:197 分类:编程语言

在本教程中,你将学习如何清除 R 系统占用的内存,而不必重新启动它或重新启动它运行的计算机。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便