在gnuplot中能否将自定义函数作为参数传入另一个自定义函数?
在gnuplot中能否将自定义函数作为参数传递给另一个自定义函数?
gnuplot本身不支持直接把函数作为参数传递给其他函数,但可以通过字符串宏实现类似的通用函数效果,完美匹配你想要的loop2功能。
具体实现步骤
用宏语法定义通用循环函数
利用gnuplot的@宏展开运算符,我们可以让函数接收字符串形式的函数名,动态替换为实际调用:# 通用求和循环函数:接收函数名字符串、自变量、循环次数、移位步长 loop2(g, x, i, s) = (i == 0) ? @g(x) : loop2(g, x-s, i-1, s) + @g(x)定义你需要的目标函数
f(x) = (x <= 0) ? 0 : 1/(1+x)**2 f3(x) = (x <= 0) ? 0 : 1/(1+x)**3调用通用函数
调用时把函数名用双引号包裹成字符串传递即可:plot loop2("f", x, 10, 1) replot loop2("f3", x, 10, 1)
注意事项
- gnuplot默认递归深度有限,如果你的循环次数
i较大,可能需要提前设置递归深度:set recursiondepth 100 # 根据需求调整数值 - 宏是gnuplot实现“函数作为参数”最灵活的方案,因为它本质是字符串替换,能适配任意自定义函数。
内容的提问来源于stack exchange,提问作者hjs
相关产品推荐
相关产品推荐

