牛顿迭代公式求根式

#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. 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值