我的解法基于教程的内容,也就是还没有到的内容不会出现在我的解法中,并且既然是练习便尽量地使用Go的特性,抛弃自己对其它语言使用的习惯。
习题:http://tour.golang.org/#44
中文资料:http://blog.punkid.org/2008/02/28/compute-the-square-root-via-newtons-iteration/
解法:
package main
import fmt "fmt"
import math "math"
// 找个比较近的值,期望有这个东西能够比较快地找到合适的值。
func guess(seed float64, value float64) float64 {
if seed > value {
return 1
}
var p float64 = 1.0
for v:= seed; v < value; p, v = v, v*seed {}
if p > value {
return 1
}
return p
}
func newtonIterator(start float64) func(float64) float64 {
sqr := start
return func(value float64) float64 {
sqr = sqr - ((sqr*sqr - value)/(2*sqr))
return sqr
}
}
func main() {
var value float64 = 101
sqr_2 := math.Sqrt(value)
start := guess(2, value)
f := newtonIterator(start)
for i := 0; i < 100; i++ {
fmt.Println(f(value) ,":", sqr_2)
}
}
感慨:牛顿太NB了!
分享到:
相关推荐
### 利用牛顿迭代法求平方根 #### 核心知识点概述 牛顿迭代法是一种高效的数值计算方法,常用于求解方程的近似解。本文将详细介绍如何使用牛顿迭代法来求解一个正数的平方根,并通过具体的实例来验证其有效性。 #...
这个程序展示了如何使用GMP来计算小整数的平方根并精确到任意精度,它并没有直接调用GMP的浮点函数来直接计算,而是通过牛顿迭代法逐步求精得到指定的精度。 这个程序以在VC6,VC2008和GCC下编译通过。在这个...
在matlab平台上,通过牛顿法求解方程的根,牛顿法具有二次收敛性,求解速度快
1.double my_sqrt(double c);求平方根 。 假设浮点数在计算机中按IEEE标准表示。而c是一个整的规格化浮点数。令 为c的尾数。使用如下的牛顿迭代格式: 请详细论证p,q的选取,实得仅使用三次迭代...使用牛顿迭代法求
实际上求平方根的算法方法主要有两种:二分法(binary search)和牛顿迭代法(Newton iteration) 1:二分法 求根号5 a:折半: 5/2=2.5 b:平方校验: 2.5*2.5=6.25>5,并且得到当前上限2.5 c:再次向下折半:2.5/2=1.25 d...
牛顿迭代法是一种求解实数和复数方程近似根的方法,由艾萨克·牛顿(Isaac Newton)提出。它通过构造一个迭代序列,利用函数的切线来逼近方程的根。该方法在计算机科学中尤为常见,因为其具有收敛速度快的特点。牛顿...
在编程领域,尤其是在C语言中,迭代法是一种常用的数值计算方法,用于求解各种问题,如本例中的求平方根。迭代法通过一系列逐步逼近的近似值来找到精确解,这种方法尤其适用于不能直接求解的复杂问题。在这个案例中...
牛顿迭代法是一种科学计算方法,用于求解非线性方程 f(x) = 0。该方法的核心思想是通过迭代来逼近方程的根。设 x* 是方程 f(x) = 0 的根,x0 是 x* 的近似值。在 x0 附近对函数做局部线性化,可以得到根 x* 的新近似...
牛顿法算平方更,java文件,有附录和说明
牛顿迭代法是一种高效求解方程近似解的数值分析方法,由18世纪的物理学家艾萨克·牛顿提出。它基于泰勒级数展开的思想,通过构造一个线性化的函数来逼近原函数,然后求解该线性化函数的零点,从而逐步接近原函数的根...
C语言简单编程-迭代法求平方根不采用MATH.H的库函数-,
另一个示例展示了如何使用牛顿迭代法计算一个数的平方根。具体步骤包括: 1. **定义目标函数**:虽然这里没有显式定义目标方程,但实质上是在求解\( y^2 - x = 0 \)。 2. **主函数实现**: - 输入待求平方根的数\...
以下是一个使用Python实现的牛顿迭代法求平方根的例子: ```python import math def sqrt_newton(num, epsilon=1e-7): x = num / 2.0 # 初始估计值 while True: y = (x + num / x) / 2.0 # 迭代公式 if abs(y ...
在计算机科学和数学中,求解一个整数的平方根通常采用两种方法:二分法(Binary Search)和牛顿迭代法(Newton's Iteration)。这两种方法在解决方程求根问题时,各有其优势和适用场景。 1. **二分法**: - **基本...
牛顿迭代法是一种在数值分析中寻找非线性方程数值解的重要方法,由著名科学家艾萨克·牛顿提出。这种方法基于微积分的基本思想,即局部线性化,通过迭代的方式逐步逼近方程的精确解。在解决复杂的非线性问题时,牛顿...
牛顿迭代法是一种在数学和计算机科学中广泛使用的求解非线性方程数值解的方法。由17世纪的科学家艾萨克·牛顿提出,它基于微积分的基本原理,即局部线性化。这种方法利用函数在某一点的切线来近似原函数,并通过解...
Python 迭代法求正数的平方根 Python 是一种流行的高级编程语言,广泛应用于科学计算、数据分析、人工智能等领域。在 Python 中,有多种方法可以实现正数的平方根计算,本文将介绍迭代法求正数的平方根,并对其进行...