- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要以下对角线:
diag(X %*% solve(A) %*% t(X))
其中A
是满秩方阵,X
是矩形矩阵。 A
和 X
都是稀疏的。
我知道求逆矩阵很糟糕,除非你真的需要它。但是,我看不出如何重写公式,将 solve(A)
替换为具有两个参数的 solve
,这样就可以求解线性系统而无需显式反转.这可能吗?
最佳答案
也许在我真正开始之前,我需要提一下,如果你这样做的话
diag(X %*% solve(A, t(X)))
避免矩阵求逆。 solve(A, B)
执行 LU 分解并使用生成的三角矩阵因子求解线性系统 A x = B
。如果您未指定 B
,它默认为对角矩阵,因此您将显式计算 A
的逆矩阵。
您应该仔细阅读 ?solve
,并可能多次阅读提示。它说它基于 LAPACK
例程 DGESV
,您可以在其中找到幕后的数值线性代数。
DGESV computes the solution to a real system of linear equations
A * X = B,
where A is an N-by-N matrix and X and B are N-by-N RHS matrices.
The LU decomposition with partial pivoting and row interchanges is
used to factor A as
A = P * L * U,
where P is a permutation matrix, L is unit lower triangular, and U is
upper triangular. The factored form of A is then used to solve the
system of equations A * X = B.
solve(A, t(X))
和 solve(A) %*% t(X)
之间的区别是效率问题。后者中的一般矩阵乘法 %*%
比 solve
本身要昂贵得多。
然而,即使您使用 solve(A, t(X))
,您也不是在最快的轨道上,因为您还有另一个 %*%
。
此外,由于您只需要对角线元素,因此您会在第一次获取完整矩阵时浪费大量时间。 我在下面的回答将使您走上最快的轨道。
我用 LaTeX 重写了所有内容,内容也大大扩展了,包括对 R 实现的引用。如果您发现它们有用,最后会提供有关 QR 分解、奇异值分解和 Pivoted Cholesky 分解的额外资源。
额外资源
如果您对枢轴 Cholesky 分解感兴趣,可以引用 Compute projection / hat matrix via QR factorization, SVD (and Cholesky factorization?) .在那里我还讨论了 QR 分解和奇异值分解。
以上链接设置在普通最小二乘回归上下文中。加权最小二乘可以引用Get hat matrix from QR decomposition for weighted least square regression .
QR 分解也采用紧凑形式。如果您想了解更多关于 QR 分解是如何完成和存储的,您可以引用 What is "qraux" returned by QR decomposition .
这些问题和答案都集中在数值矩阵计算上。下面给出一些统计应用:
关于r - 如何在不进行矩阵求逆的情况下有效地计算 diag(X %*% solve(A) %*% t(X))?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39533785/
我正在使用 spyder - python。我想测试我的代码。我已关注 pip install spyder-unittest和 pip install pytest .我已经重新启动了内核并重新启动
我编写了一个简单的代码来匹配和选择/丢弃两个文件中的元素。此代码适用于包含 Id 对的 $file_in: Id1 Id2 Id1 Id3 Id1 Id4 Id3 Id4 Id3 Id5 Id3 Id
问题陈述:当 for 循环第二次执行时,我收到 Stale Element Exception。 描述: 我正在使用 for 循环来处理表元素。在第一次迭代中,它将在页面上搜索所需的元素。如果该元素在
我编写了一个简单的代码来匹配和选择/丢弃两个文件中的元素。此代码适用于包含 Id 对的 $file_in: Id1 Id2 Id1 Id3 Id1 Id4 Id3 Id4 Id3 Id5 Id3 Id
我正在尝试用 Java 创建康威的生命游戏,但似乎遇到了障碍。我创建了一个名为“Cell”的类,它包含一个 boolean 变量,该变量本质上确定细胞是活的还是死的,以及在需要时杀死或创建细胞的方法。
我有一张 table userid points expires我只想对所有匹配特定 userid 的点求和和 CURTIME() < expires . 所以我做到了: select *, su
题目地址:https://leetcode.com/problems/solve-the-equation/description/ 题目描述: Solve a given equation an
自从工作流构建问世以来,我一直在使用 TFS 构建。我从未见过使用以下任何一项的需要或愿望: Copy Build output to the server 什么服务器?什么目录? `将构建输出复制到
我有这个矩阵 a = {{2, -2, -4}, {-2, 5, -2}, {-4, -2, 2}} 然后我解出了一个缺少一项的方程。方程的形式为逆[p].a.p == q其中 p 是缺少条目 (x5
下面的代码解决了 hanoi 使用预定义函数 moveLOD、swapLOI 和 swapLID 返回 Action 列表的问题。 MoveLOD:将 1 个圆盘从第一个位置移动到三元组第三个位置中的
基本上,我通过从文本文件中读取一组整数来实现 AVL 树,然后使用 add() 方法填充树。另外,程序应该按顺序打印整数集。 当我运行该程序时,会弹出 StackOverflowError。我认为这个
我在 html 中有一个 span 标签,这个 可以在页面上多次出现。 我只想选择第一个跨度标签。我就是这样做的 var $myvar= $(".mydiv .indiv .myspan:first"
来自 sympy solve() 的解决方案是否以某种方式排序?它是从最小到最大的解决方案吗? 如何强制解决方案的非负性? 在我的问题中,我需要独特的最小正解决方案。我感谢所有的帮助 最佳答案 它们不
我正在尝试打开一个文件,但我收到了: 该进程无法访问该文件,因为它正被另一个进程使用。该文件是一个 XML 文档。谁能帮忙? string activeDirectory = @"X:\SubGr
如何解决此内存泄漏...我什至在最后释放它,如图片所示,但它仍然存在。在 if 语句几乎 10-15 条件下,它像给定的代码一样使用......但最后我发布了它。 LoginResponse *res
我为不同的日子编写了以下代餐代码,但我每天都吃同样的餐。我想隔天吃“肉”和“素食”食物。 my dataframe is as follows: id name
这会创建一个点列表,sympy solve() 方法应该返回 x 的值。相反,它返回另一个方程式,我不确定为什么。 ogrid() 和 ravel() 正在绘图中创建一个点列表,这是在 Matplot
只是好奇它是否使用高斯消去法或其他等效方法? 最佳答案 来自numpy docs : solve is a wrapper for the LAPACK routines dgesv and zges
首先, solve_poly_system( seq, *gens, **args), 有人确切知道solve_poly_system的参数是什么意思吗? 我有系统, rd = λk ua = λk
我正在尝试使用 sympy 的 solve 命令求解方程,但我的输出是一个空列表 [ ]。我认为这可能发生的唯一原因是没有解决方案,但我怀疑这就是原因。任何人都知道为什么我没有得到答案?谢谢! fro
我是一名优秀的程序员,十分优秀!