找回密码
 注册
查看: 5028|回复: 0

R语言中如何进行奇异值分解和行列式

[复制链接]
发表于 2011-1-22 21:16:06 | 显示全部楼层 |阅读模式
函数svd(M) 可以把任意一个矩阵M作为一个参数, 且对M 进行奇异值分解。这包括
一个和M 列空间一致的正交列U 的矩阵,一个和M 行空间一致的正交列V 的矩阵,以及
一个正元素D 的对角矩阵,如M = U %*% D %*% t(V)。D 实际上以对角元素向量的形
式返回。svd(M) 的结果是由d, u 和v 构成的一个列表。
如果M 是一个方阵,就不难看出
> absdetM <- prod(svd(M)$d)
计算M 行列式的绝对值。如果在各种矩阵中都需要这种运算,我们可以把它定义为一
个R 函数
> absdet <- function(M) prod(svd(M)$d)
此后, 我们可以把absdet() 当一个R 函数使用了。作为一个零碎但可能很有用的例
子,你应该考虑写一个计算方阵迹(trace)的函数tr() [提示: 你不需要外在的循环,
仔细看一下函数diag()]。
R 有一个计算行列式(包括符号)的内置函数det 和另外一个给出符号和模(对
数坐标可选)的函数。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2024-11-21 23:28 , Processed in 0.025344 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表