我正在尝试在IJulia笔记本上使用PyPlot绘制一个函数,但我不断收到错误消息。
当我运行此代码时:
function gtest2(x)
6.34*(log2(1+exp(10.0*(x+0.5))))^0.8
end
using PyPlot
x = -1.0:0.1:1.0;
plot(x, gtest2(x));
我收到如下错误:
方法错误: 没有方法匹配 ^(::Array{Float64,1}, ::Float64( 最接近的候选者是: ^(::Float64, ::Float64( at math.jl:355 ...
在使用 gtest2(x::Number)
或 gtest2(x::Float64)
定义函数时,我尝试定义不同类型的变量,但我有同样的错误。
它使用 linespace
而不是 -1.0:0.1:1.0
做同样的事情。我知道函数在输入中看到的格式与定义不匹配,但我不明白我做错了什么,因为简单的函数工作:
function f(x)
x
end
plot(x,f(x))
为什么在第一种情况下会出现这些错误?
我在野生动物园上使用IJulia笔记本0.5.1。
您的代码无法正确处理向量,因此您需要更改gtest
使用 .
矢量化语法
function gtest2(x)
6.34*(log2.(1 + exp.(10.0*(x + 0.5)))).^0.8
end
甚至更容易使用点矢量化,如下所示
plot(x, gtest2.(x));
要了解有关点矢量化的更多信息,请参阅文档中的以下内容:https://docs.julialang.org/en/latest/manual/functions.html#man-vectorized-1
第一个定义也适用于:
map(gtest2, x)
或
gtest2.(x)