使用input输入函数供numderivative调用时重复触发输入如何解决
问题原因
你将函数输入的input语句写在了待求导的目标函数f(x)内部。数值求导函数numderivative在计算导数值时,需要多次调用目标函数f(x)计算不同点的函数值来构造差分,每调用一次f(x)就会触发一次输入请求,因此会出现多次要求输入函数的情况。
解决方法
把函数输入逻辑移到f(x)外部,只让用户输入一次函数表达式,后续f(x)调用时直接复用该表达式计算即可,修正后的Scilab代码如下:
clc clear x0 = input('Enter the x value: ') // 全局仅请求输入一次函数表达式 func_str = input('Enter your function (use x as variable): ', 's') // 目标函数直接复用预存的表达式计算 function y = f(x) y = evstr(func_str) endfunction dd = numderivative(f, x0) printf('The definite derivative value of f(x) in x = %d is %.6f', x0, dd)
改动说明
- 新增
func_str变量在函数外部接收用户输入,input加's'参数将用户输入的函数内容直接按字符串存储,不会当场执行计算 f(x)内部仅通过evstr执行预存的表达式得到函数值,不再触发输入请求- 无论
numderivative内部需要调用多少次f(x),全程仅需要用户输入一次函数表达式
内容的提问来源于stack exchange,提问作者Ayrton Infante Jacinto
相关产品推荐
相关产品推荐

