c语言牛顿法求整数平方根,牛顿法求平方根-编程练习
平方根函数的数学定义:
√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语言牛顿法求整数平方根,牛顿法求平方根-编程练习相关推荐
- C语言 输入一个整数n,求出其阶乘
输入一个整数n,求出其阶乘 #include <iostream> #include <cstdio> using namespace std; int main() {int ...
- 递归实现牛顿法求整数平方根(原理: 给一个初始值(比如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 ...
- PTA 基础编程题目集 7-14 求整数段和 C语言
PTA 基础编程题目集 7-14 求整数段和 C语言 给定两个整数A和B,输出从A到B的所有整数以及这些数的和. 输入格式: 输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分 ...
- 怎么用c语言表示大整数的四则运算,用c语言编写大整数的四则运算,求大神
用c语言编写大整数的四则运算,求大神 答案:3 信息版本:手机版 解决时间 2019-10-03 17:13 已解决 2019-10-03 01:32 用c语言编写大整数的四则运算,求大神 最佳答案 ...
- PTA—求整数段和(C语言)
PTA-求整数段和(C语言) 给定两个整数A和B,输出从A到B的所有整数以及这些数的和. 输入格式: 输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔. 输出格式: 首先顺 ...
- C语言求整数的和与均值
C语言~~~~计蒜客--求整数的和与均值 蒜头君有 n(1≤n≤10000) 个整数,请求出它们的和与均值. 输入格式 输入第一行是一个整数 n,表示有 n 个整数. 第 2 ~ n+1行每行包含 1 ...
- 用c语言编写两整数乘积,c语言两个数相乘求积 c语言输入两个整数求乘积
C语言中求两数相乘的程序? 思路:double类型的范围: -1.7*10(-308)-1.7*10(308),如果两个数的乘积不超过这样的精度,可以直接使用*符号进行运算. 参考代码: #inclu ...
- C语言简单算法之A乘以B,求整数平均值,是不是胖了,输出各位数字
C语言简单算法之A乘以B,求整数平均值,是不胖了,输出各位数字 1.题目一:A乘以B 1.实验代码 include<stdio.h> int main() {int A,B;scanf(& ...
- C语言:输入10个整数,比较求最大值
我们之前实现过输入10个整数,比较最大值,但要设置11个整型变量:10个变量存储10个数,另一个变量存储最大值!但这样未免太麻烦,而且要一下子输入10个数,未免多输入.虽然不会出错,是因其只判断前十个 ...
- 7-14 求整数段和 (C语言)
7-14 求整数段和 (15 分)给定两个整数A和B,输出从A到B的所有整数以及这些数的和. 输入格式: 输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔. 输出格式: 首 ...
最新文章
- 2.2 Java的基本数据类型
- python 结束子线程并保证工作完成_python3中在线程中结束工作进程的方法
- SqlServer还原数据库时提示:异常终止,不能在此版本的SQL Server中启动,因为它包含分区函数
- VTK:相互作用之Assembly
- findviewbyid找不到id_上班找车位很难吧?看看这波操作……
- 借助拳王虚拟项目公社,自动发货系统,卖虚拟教程产品,实现全自动化赚钱的秘密
- Atitit 网盘使用法 艾提拉著 目录 1. 需要解决几个问题	2 1.1. 多关键词搜索的问题 使用every索引解决	2 1.2. 重要文具类索引使用分类索引 日志 crm类增加000前缀
- 【数学分析笔记05】数列极限的性质
- 简单爬虫爬取知乎日报并保存日报网页到本地
- 安装win10虚拟机遇到的坑
- Filter 过滤器使用
- Unity直线轨迹导弹预判
- Gerber文件介绍
- 聊聊大数据平台上云这点事
- R中的特殊值NAN\NA\inf\NULL
- HTML网页设计: 一 HTML的基本结构
- Altium Designer 批量修改器件名
- mvcmvpmvvm
- 扰人的异常:net.sf.json.JSONException: Object is null
- Linux 下的网卡配置文件解析