我试图使用Octave计算函数导数的数值,但我不断收到此错误:
错误:fp:下标索引必须是正整数或逻辑
这个错误很奇怪,因为我在代码中的任何地方都没有使用下标索引。以下是抛出错误的函数fp
:
function [ dy ] = fp(f, x, ep)
dy = (f(x .+ ep) .- f(x)) ./ ep;
end
当我从Octave解释器运行它时,该函数有效,但是当我尝试使用文件fp.m
调用该函数时,我得到了上述错误。这是我传递给它的功能:
function [ y ] = f(x)
y = (x .+ 2) .* x .+ 1;
end
我已经尝试重命名fp
中的所有变量,因为我偶然发现了一个保留变量名称。还有其他想法吗?
答案 0 :(得分:1)
Octave具有类似于C中的函数指针,除了它们被称为函数句柄。以下是调用文件版本的方法:
fp(@f, -5, 1.0e-15);
如果你传入"f"
,它只是一个字符数组。在这种情况下,f(...)
内的表达式fp
被解释为char数组的索引表达式,因为fp
没有看到函数句柄。如果你传入@f
,那就是指向fp
可以直接调用的函数的指针。