平方根函数的数学定义:

√x= 那样的 y ,使得 y≥0 ,而且 y²=x

计算机计算平方根,最常用的就是牛顿的逐步逼近方法。这一 方法,如果对 x 的平方根的值有了一个猜测 y ,那么就可以通过执行一个简单操作去得到一个更好的猜测:只需要求出 y 和 y/x 的平均值(它更接近实际的平方根值)。例如,可以使用这种方式去计算2的平方根,假定初始值是1:

猜测     商     平均值

1     2/1=2     (2+1)/2=1.5

1.5     2/1.5=1.3333     (1.3333+1.5)/2=1.4167

1.4167     2/1.4167=1.4118     (1.4167+1.4118)/2=1.4142

1.4142     …     …

继续这一计算过程,我们就能得到对2的平方根的越来越好的近似值。

书上给的例子:

(define (mysqrt x) (sqrt-iter 1 x))

(define (goodenough? guess x) (< (abs (- (* guess guess) x)) (* 0.000000000001)))

(define (imporve guess x)  (/ (+ guess (/ x guess)) 2))

(define (sqrt-iter guess x) (if (goodenough? guess x) guess (sqrt-iter (imporve guess x) x)))

我改:

先来个PY的。

def imporve(guess, x):

return (x/guess + guess) /2

def goodenough(guess, x):

return abs(guess * guess - x) < 0.000000000001

def sqrt_iter(guess, x):

if goodenough(guess, x):

return guess

else:

return sqrt_iter(imporve(guess, x), x)

def mysqrt(x):

return sqrt_iter(1, x)

再来一个:

-module(mysqrt).

-export([sqrt/1]).

imporve(Guess, X) -> (X / Guess + Guess) / 2.

goodenough(Guess, X) -> abs(Guess * Guess - X) < 0.000000000001.

sqrt_iter(Guess, X)  ->

case  goodenough(Guess, X) of

true  -> Guess;

false -> sqrt_iter(imporve(Guess, X), X)

end.

sqrt(X) -> sqrt_iter(1, X).

c语言牛顿法求整数平方根,牛顿法求平方根-编程练习相关推荐

  1. C语言 输入一个整数n,求出其阶乘

    输入一个整数n,求出其阶乘 #include <iostream> #include <cstdio> using namespace std; int main() {int ...

  2. 递归实现牛顿法求整数平方根(原理: 给一个初始值(比如X1 = a/2)迭代求a的平方根,设定一个误差限,不断逼近a X1 = a/2 X2 = (X1+a/X1)/

    题目: /* 递归实现牛顿法求整数平方根(原理: 给一个初始值(比如X1 = a/2)迭代求a的平方根,设定一个误差限,不断逼近a X1 = a/2 X2 = (X1+a/X1)/2 - - - Xn ...

  3. PTA 基础编程题目集 7-14 求整数段和 C语言

    PTA 基础编程题目集 7-14 求整数段和 C语言 给定两个整数A和B,输出从A到B的所有整数以及这些数的和. 输入格式: 输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分 ...

  4. 怎么用c语言表示大整数的四则运算,用c语言编写大整数的四则运算,求大神

    用c语言编写大整数的四则运算,求大神 答案:3  信息版本:手机版 解决时间 2019-10-03 17:13 已解决 2019-10-03 01:32 用c语言编写大整数的四则运算,求大神 最佳答案 ...

  5. PTA—求整数段和(C语言)

    PTA-求整数段和(C语言) 给定两个整数A和B,输出从A到B的所有整数以及这些数的和. 输入格式: 输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔. 输出格式: 首先顺 ...

  6. C语言求整数的和与均值

    C语言~~~~计蒜客--求整数的和与均值 蒜头君有 n(1≤n≤10000) 个整数,请求出它们的和与均值. 输入格式 输入第一行是一个整数 n,表示有 n 个整数. 第 2 ~ n+1行每行包含 1 ...

  7. 用c语言编写两整数乘积,c语言两个数相乘求积 c语言输入两个整数求乘积

    C语言中求两数相乘的程序? 思路:double类型的范围: -1.7*10(-308)-1.7*10(308),如果两个数的乘积不超过这样的精度,可以直接使用*符号进行运算. 参考代码: #inclu ...

  8. C语言简单算法之A乘以B,求整数平均值,是不是胖了,输出各位数字

    C语言简单算法之A乘以B,求整数平均值,是不胖了,输出各位数字 1.题目一:A乘以B 1.实验代码 include<stdio.h> int main() {int A,B;scanf(& ...

  9. C语言:输入10个整数,比较求最大值

    我们之前实现过输入10个整数,比较最大值,但要设置11个整型变量:10个变量存储10个数,另一个变量存储最大值!但这样未免太麻烦,而且要一下子输入10个数,未免多输入.虽然不会出错,是因其只判断前十个 ...

  10. 7-14 求整数段和 (C语言)

    7-14 求整数段和 (15 分)给定两个整数A和B,输出从A到B的所有整数以及这些数的和. 输入格式: 输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔. 输出格式: 首 ...

最新文章

  1. 2.2 Java的基本数据类型
  2. python 结束子线程并保证工作完成_python3中在线程中结束工作进程的方法
  3. SqlServer还原数据库时提示:异常终止,不能在此版本的SQL Server中启动,因为它包含分区函数
  4. VTK:相互作用之Assembly
  5. findviewbyid找不到id_上班找车位很难吧?看看这波操作……
  6. 借助拳王虚拟项目公社,自动发货系统,卖虚拟教程产品,实现全自动化赚钱的秘密
  7. Atitit 网盘使用法 艾提拉著 目录 1. 需要解决几个问题 2 1.1. 多关键词搜索的问题 使用every索引解决 2 1.2. 重要文具类索引使用分类索引 日志 crm类增加000前缀
  8. 【数学分析笔记05】数列极限的性质
  9. 简单爬虫爬取知乎日报并保存日报网页到本地
  10. 安装win10虚拟机遇到的坑
  11. Filter 过滤器使用
  12. Unity直线轨迹导弹预判
  13. Gerber文件介绍
  14. 聊聊大数据平台上云这点事
  15. R中的特殊值NAN\NA\inf\NULL
  16. HTML网页设计: 一 HTML的基本结构
  17. Altium Designer 批量修改器件名
  18. mvcmvpmvvm
  19. 扰人的异常:net.sf.json.JSONException: Object is null
  20. Linux 下的网卡配置文件解析

热门文章

  1. 5814:无根树(技巧:树的直径BFS)
  2. 家用风扇控制系统c语言程序设计,数字风扇控制系统的设计
  3. 踩了个DNS解析的坑,但我还是没想通
  4. nginx无网络启动失败——proxy_pass域名DNS解析出错
  5. Java Review(三十三、异常处理----补充:断言、日志、调试)
  6. 3航空公司客户价值分析
  7. 2016.11.03回顾 more excel交换两列
  8. APP上架到各大应用商店的小总结
  9. 硬盘MBR格式转换GPT
  10. numpy.arccos详解