我应该编写一个函数,使用公式sin^2(x)/x+3
计算(f(x+h)-f(x))/h
的导数。
我在Internet上阅读了许多示例,但是它们很复杂。我对编码不是很了解,我应该仅通过制作一个函数来计算此导数。
例如
float deriv(float x,float h)
我们如何编写此功能?
答案 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>