牛顿法求方程实根
发布网友
发布时间:2024-01-19 13:16
我来回答
共1个回答
热心网友
时间:2024-03-17 21:34
所给方程的Newton公式为x(k+1)=x(k)-(x(k)*x(k)+x(k)*lnx(k))/(x(k)+1)
#include <iostream>
#include <cmath>
int main()
{
double x = 0.56;//初值
double x_temp = 0; //记录前一次计算值
double n = 0; //统计次数
std::cout << n << " " << x << std::endl;
while(abs(x-x_temp) > 1e-5)
{
x_temp = x; //记录前一次计算值
x = x - (x * x + x * log(x))/(x + 1); //所给方程的Newton迭代公式
++n;
std::cout << n << " " << x << std::endl;
}
getchar();
return 0;
}
输出结果:
0 0.56
1 0.567114
2 0.567143
3 0.567143
按你说的简单过程,仅仅是做作业用一下。
精度不够自己改一下循环,显示精度可以用std::setprecision()控制。