如何天真有效地编码二次形式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何天真有效地编码二次形式相关的知识,希望对你有一定的参考价值。

我正在尝试编码二次形式Z'(S)^ -1 Z

代码如下

z <- matrix(rnorm(200 * 100), 200, 100)
S <- cov(z)
quad.naive <- function(z, S) 
        Sinv <- solve(S)
        rowSums((z %*% Sinv) * z) 

但是,我不确定我是否完全理解该函数的最后一行

rowSums((z %*% Sinv) * z)

由于天真,我们应该键入与数学公式完全相同的

t(Z) %*% Sinv %*% Z

因此,任何人都可以解释为什么行和的形式与朴素的数学形式,特别是相同。为什么在两个度量(z和Sin)相乘之后,它使用逐个元素的乘号*乘以Z,而不是使用%*%。

(z %*% Sinv) * z 
答案

以下内容发表评论的时间过长。

“我正在尝试编码二次形式Z'(S)^ -1 Z”我认为二次形式不正确。

假设Zm x n矩阵。然后:

  • [S = cov(Z)n x n矩阵
  • [S^-1n x n矩阵
  • [t(Z)n x m矩阵

因此,Z' S^-1 Z(在R中为t(Z) %*% solve(S) %*% Z)表示将具有以下尺寸的矩阵相乘

(n x m) (n x m) (m x n)

显然不起作用。

也许您是说Z %*% solve(S) %*% t(Z),它返回一个m x m矩阵,其对角线与rowSums(Z %*% Sinv * Z)相同。

以上是关于如何天真有效地编码二次形式的主要内容,如果未能解决你的问题,请参考以下文章

SQL注入防御绕过——二次编码之干掉反斜杠

看我如何利用二次编码进行xss

如何基于报表工具FineReport进行二次开发

第二次作业

线性二次型LQR方法可以用于非线性系统吗

如何以 ShowDialog() 形式打开表单;我第一次打开表单但 Show();我第二次打开同一个表格