我试图在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));
我遇到了这样的错误:
MethodError:没有方法匹配^(:: Array {Float64,1},:: Float64) 最接近的候选者是:^(:: Float64,:: Float64)在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。
答案 0 :(得分:3)
您的代码没有正确处理向量,因此您需要更改gtest
使用.
矢量化语法
function gtest2(x)
6.34*(log2.(1 + exp.(10.0*(x + 0.5)))).^0.8
end
甚至更容易使用点矢量化如下
plot(x, gtest2.(x));
要详细了解点矢量化,请参阅文档中的以下内容:Book of Shaders
答案 1 :(得分:0)
第一个定义也适用于:
map(gtest2, x)
或
gtest2.(x)