Julia 复数型,复数与有理数类型一样,也是一个二元数,在高等数学与信号处理中经常涉及。Julia也内置了复数型,并提供了各种常用的运算。
复数同样是一个参数化的类型,其原型为:
Complex{T <: Real} <: Number
其中,Number是抽象类型,表示Complex是数值类型的一种;而{T<:Real}
表示实部与虚部的类型T可以是Real类型的任一种,包括各种浮点型、整数型、有理数Rational型及无理数AbstractIrrational型(Irrational的父类型)等。
特别地,当T取Float16、Float32及Float64时,对应的复数型分别为Complex{Float16}
、Complex{Float32}
及Complex{Float64}
。为了方便,Julia为它们提供了别名,即ComplexF16
、ComplexF32
和ComplexF64
。
在创建Complex数值对象时,也可以像整型、浮点型、有理数型那样以字面值的方式提供,格式为“实部+虚部im”。为了避免歧义,其中的虚部标识采用了im,对应于数学中的虚部单位i,例如:
julia> 1 + 2im
1 + 2im
如上所示,虚部可由数值紧跟im构成。
若没有提供虚部值,会默认为1,例如:
julia> 1+im
1+im
若不提供实部,则会默认为0,例如:
julia> 2im
0 + 2im
但如果使用变量提供虚部值,则需将变量与虚部单位明确的采用乘号表示出来,例如:
但是这种用乘号表示的复数并不推荐,因为很容易与常规的乘法冲突,所以建议使用函数complex()
构造复数,例如:
julia> complex(a, b)
1 + 2im
该函数创建的Complex类型会由Julia自动确定。
当然也可以使用复数类型声明的构造方法创建Complex类型,例如:
julia> ComplexF32(1.0, 2.0)
1.0f0 + 2.0f0im
这种方式可以限定创建对象的类型。
正如类型的声明所述,除了整型与浮点型外,其他类型的实数也是可用于创建Complex对象的,例如:
julia> using Base.MathConstants
julia> complex(γ, π)
0.5772156649015329 + 3.141592653589793im
julia> typeof(ans)
Complex{Float64} # 无理数Irrational型变成了浮点型
julia> complex(1//2, 2//3)
1//2 + 2//3*im
julia> typeof(ans)
Complex{Rational{Int64}}
在数学上,复数有着各种操作,比如求共轭,取绝对值,算模的值或相位角等,这些操作在Julia中也都可以实现,如表所示。
酷客网相关文章:
评论前必须登录!
注册