题目:
算法公式:
实验程序:
#include <iostream>
#include <math.h>
using namespace std;
double F1(double x) //F1为原函数,注意变量x的值和函数返回值都是double型的,否则在后面的循环误差会很大
{
double result;
result = pow(x, 3) - pow(x, 2) - x - 1;
return result;
}
double F2(double x) //F2为F1导函数,注意变量x的值和函数返回值都是double型的,否则在后面的循环误差会很大
{
double result;
result = 3 * pow(x, 2) - 2 * pow(x, 1) - 1;
return result;
}
int main()
{
double epson, X0, X, k = 0;
cout << "任务:用牛顿迭代法求方程的根,请输入精度的值";
cin >> epson;
cout << "请输入初始化的迭代值X0=";
cin >> X0;
do
{
X = X0;
X0 = X - F1(X) / F2(X);
cout << "第" << k+1 << "次迭代: " << "X_k=" << X0 << " |X_k-X_(k-1)| = " << fabs(X - X0) << endl << endl;
k++;
} while (fabs(X - X0) >= epson);
cout << "近似解为" << X0;
return 0;
}
输出结果: