使用C中的极限定义计算导数



我应该编写一个函数,使用公式(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的定义是什么,这是不可能通过编程实现的——我们希望保持导数的定义尽可能通用。

最新更新