使用指数运算绘制数组时出错
Error plotting array with exponential operation
我是 Julia 的新手,我正在尝试使用以下内容创建一个情节:
xi2 = range(0,sqrt(6),step=1e-3)
collect(xi2)
plot(xi2, 1-xi2^2/6, label="n = 0")
当我尝试这样做时,出现错误:
MethodError: no method matching ^(::StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, ::Int64)
Closest candidates are:
^(::Union{AbstractChar, AbstractString}, ::Integer) at C:\Users\Acer\AppData\Local\Programs\Julia-1.7.0\share\julia\base\strings\basic.jl:721
^(::Rational, ::Integer) at C:\Users\Acer\AppData\Local\Programs\Julia-1.7.0\share\julia\base\rational.jl:475
^(::Complex{<:AbstractFloat}, ::Integer) at C:\Users\Acer\AppData\Local\Programs\Julia-1.7.0\share\julia\base\complex.jl:839
...
我在这里错过了什么?
你想要 xi2
的元素的 2 次方,所以你想要使用点运算符的元素级操作:
julia> xi2 = range(0,sqrt(6),step=1e-3);
julia> plot(xi2, 1 .- xi2.^2/6, label="n = 0")
(collect
这一步是不必要的,因为大多数数组操作都可以直接在一个范围上执行。如果你确实想要收集 - 即分配内存并使其成为一个完整的数组 - 你必须将 collect
的结果分配给某个变量。在您的原始代码中,元素被收集到一个数组中,但随后被丢弃,因为结果未分配给任何东西。)
我是 Julia 的新手,我正在尝试使用以下内容创建一个情节:
xi2 = range(0,sqrt(6),step=1e-3)
collect(xi2)
plot(xi2, 1-xi2^2/6, label="n = 0")
当我尝试这样做时,出现错误:
MethodError: no method matching ^(::StepRangeLen{Float64, Base.TwicePrecision{Float64}, Base.TwicePrecision{Float64}, Int64}, ::Int64)
Closest candidates are:
^(::Union{AbstractChar, AbstractString}, ::Integer) at C:\Users\Acer\AppData\Local\Programs\Julia-1.7.0\share\julia\base\strings\basic.jl:721
^(::Rational, ::Integer) at C:\Users\Acer\AppData\Local\Programs\Julia-1.7.0\share\julia\base\rational.jl:475
^(::Complex{<:AbstractFloat}, ::Integer) at C:\Users\Acer\AppData\Local\Programs\Julia-1.7.0\share\julia\base\complex.jl:839
...
我在这里错过了什么?
你想要 xi2
的元素的 2 次方,所以你想要使用点运算符的元素级操作:
julia> xi2 = range(0,sqrt(6),step=1e-3);
julia> plot(xi2, 1 .- xi2.^2/6, label="n = 0")
(collect
这一步是不必要的,因为大多数数组操作都可以直接在一个范围上执行。如果你确实想要收集 - 即分配内存并使其成为一个完整的数组 - 你必须将 collect
的结果分配给某个变量。在您的原始代码中,元素被收集到一个数组中,但随后被丢弃,因为结果未分配给任何东西。)