二分法以及牛顿法开根号

来源:互联网 发布:网络免费发布信息平台 编辑:程序博客网 时间:2024/05/16 05:14

二分法比较简单

#include<cstdio>#include<iostream>using namespace std;float sqrt(float n){    float max,min,mid;    max=n;    min=0;    mid=(min+max)/2;    while(1)    {        if(n-mid<0.002&&mid-n<0.02) break;//设置精度        mid=(min+max)/2;        if(mid*mid>n)        {            max=mid;        }        else if(mid*mid<n)        {            min=mid;        }        else        {            return mid;        }    }    return mid; }  int main() {    float n=81;    cout<<sqrt(n);    return 0;  } 

以下是牛顿法

科普:牛顿法
http://www.matongxue.com/madocs/205.html#/madoc

公式推导:
这里写图片描述

#include<cstdio>#include<iostream>using namespace std;float sqrt(float n){    float k=n;    while(1)    {        if(k*k==n)         {            return k;            break;        }        else        {            if(k*k-n<0.00002&&n-k*k<0.00002)            {                return k;                break;            }            k=0.5*(k+n/k);        }    } }  int main() {    float n=9;    cout<<sqrt(n);    return 0;  } 
原创粉丝点击