#include <iostream>
using namespace std;
//
/// 变量
//xn 第N项x的值
//k_xn x=xn时的导数值
//fxn x=xn时的函数值
//xn1 利用牛顿迭代公式计算所得的第n+1项的x值
//
/*求解函数式f(x)=x^2-a*/
/*参数xn是第n个x的值,参数a是所求根的平方*/
double y(double a,double xn)
{
double fxn=xn*xn-a;
return fxn;
}
/*求解x=xn项导数值*/
double y_k(double xn)
{
double k_xn=2*xn;
return k_xn;
}
/*牛顿递推公式*/
double NewtonX(double xn,double fxn,double k_xn)
{
double xn1 = xn - fxn/k_xn;
return xn1;
}
int main(int argc, char *argv[])
{
double xn ;//第xn的值
double yn ;//x=xn的函数值f(xn)
double a;//所求根的平方
double k;//x = xn时的导数值
xn = 3;
a = 4;
cout<<"请输入被开方数a:"<<endl;
cin>>a;
for(int i = 0;i < 5;i++)
{
yn = y(a,xn);//计算f(xn)
k = y_k(xn);//计算f'(xn)
xn = NewtonX(xn,yn,k);
}
cout<<"牛顿迭代法求根结果:"<<endl<<"x = "<<xn<<endl;
return 0;
}
//其实,我就是想说。。。。大三的课把我大一时的疑问解决了。。。
//额。。。By the way,advanced mathematics is quite important which improve the correctness of programming.
牛顿迭代公式求根式
最新推荐文章于 2021-03-02 19:58:58 发布