(附加题)已知f(x) = cosx - x。x的初值为3.14159/4,用牛顿法求解方程f(x) = 0的近似解,要求精确到10-6。f(x)的牛顿法的表达式为xn+1 = xn + (cosxn–xn) / (sinxn + 1)。请用函数编写
输出格式
该方程的近似解
输出样例
该方程的近似解为0.739085
数据范围与提示
精确到10-6的意思是xn+1与xn的差值绝对值小于等于10-6
代码版本1:
#include<iostream>
#include<stdio.h>
using namespace std;
void main()
{
double delta = 100;
double xn = 3.14159 / 4;
while (fabs(delta) >= 1e-6)
{
delta = xn;
xn = xn + (cos(xn) - xn) / (sin(xn) + 1);
delta -= xn;
}
cout <<"该方程的近似解为"<< xn << endl;
}
代码版本2:
#include<iostream.h>
#include<math.h>
double Newton(double x0,double e);
int main()
{
double x0=3.14159/4;
double e=10E-6;
cout<<Newton(x0,e)<<endl;
}
double Newton(double x0,double e)
{
double x1;
do
{
x1=x0;
x0=x1-(cos(x1)-x1)/(sin(x1)-1);
}
while(fabs(x0-x1)>e);
return x0;
}