楼主: yo2xia
2715 0

[学科前沿] R qr分解的源代码没看懂 [推广有奖]

  • 14关注
  • 2粉丝

已卖:3份资源

博士生

17%

还不是VIP/贵宾

-

威望
0
论坛币
165 个
通用积分
33.8190
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
5226 点
帖子
118
精华
0
在线时间
226 小时
注册时间
2013-5-25
最后登录
2021-5-29

楼主
yo2xia 发表于 2014-10-21 14:50:13 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
大家好,我最近在C++中利用R中的qr源代码编程一个qr分解的函数。主要是想求得矩阵qr分解后的pivot,R中qr分解的源代码如下
  1. qr.default <- function(x, tol = 1e-07, LAPACK = FALSE, ...)
  2. {
  3.     x <- as.matrix(x)
  4.     if(is.complex(x))
  5.         return(structure(.Call("La_zgeqp3", x, PACKAGE = "base"), class="qr"))
  6.     ## otherwise :
  7.     if(!is.double(x))
  8.         storage.mode(x) <- "double"
  9.     if(LAPACK) {
  10.         res <- .Call("La_dgeqp3", x, PACKAGE = "base")
  11.         if(!is.null(cn <- colnames(x)))
  12.             colnames(res$qr) <- cn[res$pivot]
  13.         attr(res, "useLAPACK") <- TRUE
  14.         class(res) <- "qr"
  15.         return(res)
  16.     }

  17.     p <- ncol(x) # guaranteed to be integer
  18.     n <- nrow(x)
  19.     res <- .Fortran("dqrdc2",
  20.              qr=x,
  21.              n,
  22.              n,
  23.              p,
  24.              as.double(tol),
  25.              rank=integer(1L),
  26.              qraux = double(p),
  27.              pivot = as.integer(1L:p),
  28.              double(2*p),
  29.              PACKAGE="base")[c(1,6,7,8)]# c("qr", "rank", "qraux", "pivot")
  30.     if(!is.null(cn <- colnames(x)))
  31.         colnames(res$qr) <- cn[res$pivot]
  32.     class(res) <- "qr"
  33.     res
  34. }
复制代码
C++的Eigen也有QR分解的函数,但是没有pivot 项。哪位高人知道如何将其转换为C++函数。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:源代码 Default fault Pivot 大家好 源代码 小数点

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-1 17:43