求大佬指正一下
2
下面是一个可以精准逼近sinx的值的函数的示例:
#include
// 精准逼近sinx的函数
double my_sin(double x)
{
// 使用Taylor级数进行逼近
double result = 0.0;
for (int n = 0; n < 10; n++)
{
result += pow(-1.0, n) * pow(x, 2 * n + 1) / factorial(2 * n + 1);
}
return result;
}
// 计算阶乘的函数
int factorial(int n)
{
if (n == 0)
{
return 1;
}
return n * factorial(n - 1);
}
// 使用内置函数验证结果的函数
void verify_result(double x)
{
double sin_x = sin(x);
double my_sin_x = my_sin(x);
std::cout << "sin(" << x << ") = " << sin_x << std::endl;
std::cout << "my_sin(" << x << ") = " << my_sin_x << std::endl;
std::cout << "Absolute error: " << fabs(sin_x - my_sin_x) << std::endl;
}
上面的代码中,我们定义了一个my_sin
函数,该函数使用Taylor级数来逼近sinx的值。在计算Taylor级数时,我们使用了一个递归函数factorial
来计算阶乘。
我们还定义了一个verify_result
函数,该函数使用内置的sin
函数来验证my_sin
函数的结果。
要使用上面的函数,我们可以这样调用它们:
int main()
{
double x = 1.0;
verify_result(x);
return 0;
}