我应该编写一个函数,使用公式(f(x+h)-f(x))/h
计算sin^2(x)/x+3
的导数。
我在网上读过很多例子,但都很复杂。我对编码不太了解,我只能通过生成函数来计算这个导数
例如
float deriv(float x,float h)
我们如何编写这个函数?
我认为一个很好的方法是使用一个基于该定义计算导数的函数,以及一个实现该特定公式的函数。
float deriv (float x, float h) {
float dydx = (function(x+h) - function(x))/h;
return dydx;
}
float function(float x) {
// Implement your sin function here evaluated for the argument
}
请记住,导数的定义适用于h->0,要获得f'(x(需要取消。我们这里有一个数值估计,它是一个美化的梯度方程。祝你好运
添加到@mcfity,可以让派生函数将指针指向将要操作的函数,从而使派生函数更通用。
double deriv(double x, double (*func)(double))
{
const double h = 0.0001;
return (func(x+h) - func(x)) / h;
}
请注意,这是一个近似值。理想情况下,当h接近0时,我们会找到极限,但如果不知道func
的定义是什么,这是不可能通过编程实现的——我们希望保持导数的定义尽可能通用。