使用 C 中的极限定义计算导数
Calculate derivative using limit definition in 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) 需要取消一些东西。我们这里有一个数值估计,它是一个美化的梯度方程。祝你好运!
添加到@mcfisty,你可以让导数函数接受一个指向将被操作的函数的指针,使导数函数更通用。
double deriv(double x, double (*func)(double))
{
const double h = 0.0001;
return (func(x+h) - func(x)) / h;
}
请注意,这是一个近似值。理想情况下,我们会在 h 接近 0 时找到极限,但如果不了解 func
的定义是什么,就不可能以编程方式做到这一点——我们希望使导数的定义尽可能通用。
我应该编写一个函数,使用公式 (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) 需要取消一些东西。我们这里有一个数值估计,它是一个美化的梯度方程。祝你好运!
添加到@mcfisty,你可以让导数函数接受一个指向将被操作的函数的指针,使导数函数更通用。
double deriv(double x, double (*func)(double))
{
const double h = 0.0001;
return (func(x+h) - func(x)) / h;
}
请注意,这是一个近似值。理想情况下,我们会在 h 接近 0 时找到极限,但如果不了解 func
的定义是什么,就不可能以编程方式做到这一点——我们希望使导数的定义尽可能通用。