我对“鸭子打字”一词感到困惑。我已经编写了一个适用于矩阵的函数,但是为什么每当我尝试使用向量作为参数时它都会出错?
在这种情况下,您似乎很幸运,并且恰好有一个^
专为矩阵设计的基取幂方法 ( ) 的实现。可能是因为矩阵幂通常很有用,我敢打赌它们有很多优化。
@which v1^2
^(A::AbstractArray{T,2} where T, p::Integer) in LinearAlgebra at C:\cygwin\home\Administrator\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.1 \线性代数\src\dense.jl:366
但是没有内置的向量。请注意,对于 matrix A
,A^2
意味着A * A
使用矩阵乘法规则,与对 中的每个元素进行平方不同A
。对于 2 x 2 矩阵A = [a b; c d]
,您将得到:
A = [a b]
[c d]
A^2 = [a*a+b*c a*b+b*d]
[c*a+d*c c*b+d*d]
对于 vector v
,我猜等价物v^2 = v' * v
是v
和v
它本身的转置之间的点积,给你一个标量(现在我真的希望我可以在 SO 中使用 LaTeX 符号)。
通常,如果您希望运算符广播(神奇地应用于数组或矩阵的每个元素),请在其前面添加一个点。
func = v -> println(v.^2)
func(v2)
# [0.0826262, 0.127083, 0.513595]
这需要每个元素的v2 = [a, b, c]
和广场上它:[a^2, b^2, c^2]
。它类似正方形的每个元素的v1
而不是做的矩阵乘法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句