c++简单迭代法求x的三次方-sinx-12x+1=0初始值x=3 精度0.5*10的-6次方的程序
时间: 2024-12-16 07:29:50 浏览: 7
GA.rar_GA_GA 最大值 x,y_genetic position _精度0.0001_遗传算法sinx
在C++中,我们可以使用牛顿迭代法(Newton's method)来解决非线性方程如 x^3 - sin(x) - 12x + 1 = 0。给定初始值x=3,并设置精度为0.5 * 10^-6。以下是简单的实现:
```cpp
#include <iostream>
#include <cmath>
// 定义函数 f(x) 和其导数 f'(x)
double function(double x) {
return pow(x, 3) - sin(x) - 12 * x + 1;
}
double derivative(double x) {
return 3 * pow(x, 2) - cos(x) - 12;
}
double newtonRaphson(double x_initial, double tolerance) {
double next_x;
do {
next_x = x_initial - function(x_initial) / derivative(x_initial);
x_initial = next_x;
} while (std::abs(function(next_x)) > tolerance);
return next_x;
}
int main() {
double x_initial = 3.0; // 初始猜测值
double tolerance = 0.5e-6; // 精度
double solution = newtonRaphson(x_initial, tolerance);
std::cout << "The root of the equation is approximately: " << solution << std::endl;
return 0;
}
```
这个程序首先定义了目标函数 `function` 和它的导数 `derivative`,然后通过不断迭代更新 `x` 的值直到满足精度要求。最后,在main函数中调用 `newtonRaphson` 函数并输出结果。
阅读全文