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

时间:2018-12-03 22:29:05

标签: c derivative

我应该编写一个函数,使用公式sin^2(x)/x+3计算(f(x+h)-f(x))/h的导数。

我在Internet上阅读了许多示例,但是它们很复杂。我对编码不是很了解,我应该仅通过制作一个函数来计算此导数。

例如

float deriv(float x,float h)

我们如何编写此功能?

2 个答案:

答案 0 :(得分:1)

我认为,执行此操作的一种好方法是使用一个基于该定义计算导数的函数,以及使用实现该特定公式的一个函数。

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)则需要取消某些内容。我们在这里得到的是一个数值估计,它是一个引人入胜的梯度方程。祝你好运!

答案 1 :(得分:0)

在@mcfisty上,您可以使派生函数使用指向将要操作的函数的指针,从而使派生函数更加通用。

double deriv(double x, double (*func)(double))
{
    const double h = 0.0001;
    return (func(x+h) - func(x)) / h;
}

请注意,这是一个近似值。理想情况下,我们会在h接近0时找到极限,但是如果不知道func的定义是什么,就不可能通过编程的方式来做到这一点,并且我们希望保持导数的定义尽可能通用。 / p>