gpt4 book ai didi

julia - Julia 中的单位矩阵

转载 作者:行者123 更新时间:2023-12-04 16:57:30 25 4
gpt4 key购买 nike

我正在尝试在 Julia 1.1 中构造单位矩阵.看完documentation我发现我可以计算一个 4x4 单位矩阵,如下所示:

julia> Id4 =1* Matrix(I, 4, 4)

4×4 Array{Int64,2}:
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1

这是最简单的编码方式还是有更好/更短的方式,因为它是一个经常使用的矩阵?

最佳答案

给定 using LinearAlgebra ,表示单位矩阵的最简单的方式是:

I
这个答案可能看起来很老套,但也很深刻。运营商的全部观点 I是在用户想要一个单位矩阵的绝大多数情况下,没有必要实际实例化该矩阵。
假设你想要一个 1000x1000单位矩阵。当您可以使用 I 时,为什么还要浪费时间构建整个矩阵? ,注意到 sizeof(I)计算结果为 1 (即对象的大小为 1 个字节)。基础 Julia 中的所有函数(包括 LinearAlgebra )都理解 I 的含义是,并且可以适本地使用它,而不必浪费时间构建它首先表示的实际矩阵。
现在,由于某种原因,您可能需要指定单位矩阵元素的类型。笔记:
julia> I
UniformScaling{Bool}
true*I
所以在这种情况下,您使用的是对角线为 true 的名义单位矩阵和 false 的非对角线.这在很多情况下就足够了,即使您的其他矩阵是 IntFloat64 .在内部,Julia 将使用专门针对类型的方法。但是,如果要指定单位矩阵包含整数或浮点数,请使用:
julia> 1I
UniformScaling{Int64}
1*I

julia> 1.0I
UniformScaling{Float64}
1.0*I
请注意 sizeof(1I)计算结果为 8 ,表示名义上的 Int64该矩阵的成员的类型。
另请注意,您可以使用例如 5I如果你想要一个带有 5 的概念矩阵在对角线上和 0别处。
在某些情况下(这些情况比许多人想象的要少得多),您可能需要实际构建矩阵。在这种情况下,您可以使用例如:
Matrix(1I, 3, 3)    # Identity matrix of Int type
Matrix(1.0I, 3, 3) # Identity matrix of Float64 type
Matrix(I, 3, 3) # Identity matrix of Bool type
Bogumił 在评论中还指出,如果您对在上述构造函数的第一个参数中暗示输出的类型感到不舒服,您也可以使用(稍微详细一点):
Matrix{Int}(I, 3, 3)      # Identity matrix of Int type
Matrix{Float64}(I, 3, 3) # Identity matrix of Float64 type
Matrix{Bool}(I, 3, 3) # Identity matrix of Bool type
并明确指定类型。
但实际上,您可能需要执行此操作的唯一时间如下:
  • 当您想将单位矩阵输入到以输入必须是具体矩阵类型的方式编写的包中的函数中时。
  • 当您想从一个单位矩阵开始,然后通过一个或多个转换将其原地变异为其他东西时。
  • 关于julia - Julia 中的单位矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57270276/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com