我使用 GNU Octave 4.4.1(Arch Linux 上的 x86_64-pc-linux-gnu),并且 fplot 函数有问题。我想知道为什么
fplot(@(x) 1/(1+25*x.^2),[-1,1])
有不同的结果
fplot(@(x) (1+25*x.^2).^-1,[-1,1])
(后者返回正确的图形)
有过完全相同的问题和我的学生一起使用 Windows 版本的 Octave 4.4.1。
我想知道这是否是一个实际错误,或者有一个奇特的解释来解释为什么后一个命令是正确的而第一个命令是错误的(所以我可以尝试说服我的学生他们应该使用 GNU Octave。好的,我会无论如何尝试一下)。
答案1
问题是缺少“.”,但是八度应该会产生一条未出现的错误消息。为了证明差异,只需计算要绘制的值:
octave:16> x=linspace(-1,1,11)
x =
Columns 1 through 8:
-1.00000 -0.80000 -0.60000 -0.40000 -0.20000 0.00000 0.20000 0.40000
Columns 9 through 11:
0.60000 0.80000 1.00000
octave:17> 1/(1+25*x.^2)
error: operator /: nonconformant arguments (op1 is 1x1, op2 is 1x11)
octave:17> 1./(1+25*x.^2)
ans =
Columns 1 through 7:
0.038462 0.058824 0.100000 0.200000 0.500000 1.000000 0.500000
Columns 8 through 11:
0.200000 0.100000 0.058824 0.038462
所以正确的形式是
fplot(@(x) 1./(1+25*x.^2),[-1,1])