牛顿迭代法求根 (即曲线与x坐标轴交点) :

在曲线的一点P1(a, f(a)), 做切线,

切线与x轴, 相交于 A 点,

A点做垂线

与曲线交于 P2(b, f(b)) 点,

在P2点继续做切线,

切线与x轴, 相交于 B 点,

...

重复此步骤, 与x轴的交点, A, B, ... 会趋近于曲线的根。

正在学习go, go语言实现版, 求2的平方根:

package main

import (

"fmt"

"math"

)

const STEP_CNT = 10

func sqrt(x float64) float64 {

ft, t := 1.0, 1.0

for i := 0; i < STEP_CNT; i++ {

t = ft

ft = t - (t * t -x) / 2 / t

fmt.Println("step: ", i, ft)

}

return ft

}

func main() {

fmt.Println(sqrt(2))

fmt.Println(math.Sqrt(2))

}

曲线上选一点 P1(t, f(t)), 本例中 曲线方程为 y = x2 - 2, 因此f(t) = t2 - 2

P1切线方程为 y = f(t) + k(x - t), 斜率k 为2t, 因此 y = f(t) + k (x - t)

切线与x轴交点, 即f(t) + k(x - t) = 0 => x = t - f(t)/k

因此迭代为 : tn+1 =tn - f(tn)/k , 其中 f(t) = t2 - 2,k = 2t

因此 tn+1 =tn- (tn * tn - 2) / 2tn

代码中 ft = t - (t * t - x ) / 2 / t 即由此得来。

扩展打到求高次幂。

tn+1 =tn - f(tn)/k, f(t) = tp - value, 求value的 p 次根

f'(t) = p * tp-1

代码如下:

package main

import (

"fmt"

"math"

)

const STEP_CNT = 10

func sqrt(x float64, n int) float64 {

if n < 2 {

return 0

}

ft, t := 1.0, 1.0

for i := 0; i < STEP_CNT; i++ {

t = ft

k := float64(n) * math.Pow(t, float64(n - 1))

f_current := math.Pow(t, float64(n))

ft = t - (f_current - x) / k

fmt.Println("step: ", i, ft)

}

return ft

}

func main() {

fmt.Println(sqrt(81, 4))

fmt.Println(sqrt(27, 3))

fmt.Println(sqrt(9, 2))

}

python牛顿迭代法求平方根_Newton迭代法求平方根相关推荐

  1. python迭代法求平方根_1021: 迭代法求平方根

    题目描述 用迭代法求 平方根 公式:求a的平方根的迭代公式为: X[n+1]=(X[n]+a/X[n])/2 要求前后两次求出的差的绝对值少于0.00001. 输出保留3位小数 输入 X 输出 X的平 ...

  2. python牛顿迭代法推导求根的迭代公式_推导牛顿迭代法

    推导牛顿迭代法 牛顿法是方程求根的一个有力方法,常常能快速求出其他方法求不出或者难以求出的 解. 假定有一个函数 y=f ( x ) ,方程 f(x)=0 在 x = r 处有一个根,对于此根,我们先 ...

  3. 迭代法求平方根 MATLAB,用迭代法的思想 给出求根号(2 根号(2 根号(2 根号2)))的迭代格式...

    用牛顿迭代法 求方程 2*x*x*x-4*x*x+3*x-6 的根 先去看看计算方法学习一下"牛顿迭代法"吧,不然就算懂了这个小程序也意义不大,真的 用C语言编程求牛顿迭代法求方程 ...

  4. 用迭代法求某数a的平方根

    今天晚上笔试题目最后一题很简单,可是自己做不出= =,就是不用库函数,求一个浮点数的平方根. 立马想到用物理法,比如正方形的面积法等,可是求解出不出,然后就绕在里面了.归根到底还是平时的知识储备太少了 ...

  5. 方程求根的迭代法——牛顿迭代法

    用牛顿法解方程xe(x) -1=0 程序流程图如下: //方程求根的迭代法--牛顿迭代法 /*************Analysis********** *1.初值x0,精度e,迭代次数N *2.牛 ...

  6. python基础练习题(按条件对指定序列求和,打印99乘法表、求斐波那契数列、百马百担、求水仙花数、求n以内的所有质数(素数)和)、集合的讲解、一些公关方法

    1.求100(含100)以内所有偶数的和 range(start,end,step)这个序列生成器,和那个切片的语法一样,含头不含尾,step是步长,这里就不需要在对j进行判断了,对于这些简单求奇数和 ...

  7. Algorithm:C++/python语言实现之求旋转数组最小值、求零子数组、求最长公共子序列和最长公共子串、求LCS与字符串编辑距离

    Algorithm:C++/python语言实现之求旋转数组最小值.求零子数组.求最长公共子序列和最长公共子串.求LCS与字符串编辑距离 目录 一.求旋转数组最小值 1.分析问题 2.解决思路 二.求 ...

  8. C语言实现牛顿-拉夫逊newton raphson求近似根roots(附完整源码)

    实现牛顿-拉夫逊newton raphson求近似根 实现以下几个相关的接口 实现牛顿-拉夫逊newton raphson求近似根的完整源码(定义,实现,main函数测试) 实现以下几个相关的接口 d ...

  9. 用计算机算算术平方根顺序是ON然后是什么,第2课时用计算器求一个正数的算术平方根.ppt...

    1.比较下列各组数的大小: (1) 与 (2) 与 8 依次按键 显示:1.732 050 808 例3 小丽想用一块面积为400 cm2的正方形纸片,沿着边的方向剪出一块面积为300 cm2的长方形 ...

最新文章

  1. tp5上传文件并获取文件路径_thinkphp表单上传文件并将文件路径保存到数据库中...
  2. 【转】ASP中的SQL注入
  3. word手写字体以假乱真_学会Word上下标,搞定公式输入
  4. dhs手术是什么意思_#下颌角手术# #磨骨瘦脸# 下颌角手术多少钱?
  5. 快速搭建Python+Selenium+Sublime 自动化测试环境方法
  6. 荔枝派 Nano 全志 F1C100s 编译运行 Linux ubuntu并升级gcc
  7. 聊聊天,如果能重来,还干不干程序员?
  8. [转载]Netvault:操作Informix APM将A机备份的数据恢复到B机
  9. 词汇表生成(C语言)
  10. 1.亿级流量的电商网站---概述
  11. 源码分享—《Java多线程编程核心技术》源码,Java多线程编程核心技术源码 略微有改动。
  12. vue前端UI框架收集
  13. matlab 蜗杆轮廓,基于MATLAB的直廓环面蜗杆的可视化
  14. 三国演义主要人物个人经历
  15. 证书服务器搭建与邮件签名加密
  16. Hasor-RSF —— 分布式服务框架
  17. AutoCad 新建或打开对话框 经常变为命令提示行的解决办法!
  18. 微信后台 phxrpc (v0.8) 之 Timer(二)
  19. 10张剪纸风格2021牛年祝福海报
  20. 百度地图、高德地图、腾讯地图餐饮POI内容结构及获取接口

热门文章

  1. PHP导出word【 直接生成word文件 】
  2. 7-22 循环日程表
  3. 什么是黑盒测试和白盒测试、灰盒测试?
  4. 经典数学问题——三门问题(数据分析面试题)
  5. C/C++输入输出加速(算法考试重要!)
  6. SpringBoot搭建微信公众号后台(零):服务搭建与接口验证
  7. 兰道尔原理(Laudauer‘s Principle)
  8. OpenCV“迷雾”车道识别的反思
  9. 深信服2018春季招聘-研发卷编程题 - 题解
  10. java 同比数据怎么算的_有当日数据和去年全年数据,如何通过公式做每日同比?...