python牛顿迭代法求平方根_Newton迭代法求平方根
牛顿迭代法求根 (即曲线与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迭代法求平方根相关推荐
- python迭代法求平方根_1021: 迭代法求平方根
题目描述 用迭代法求 平方根 公式:求a的平方根的迭代公式为: X[n+1]=(X[n]+a/X[n])/2 要求前后两次求出的差的绝对值少于0.00001. 输出保留3位小数 输入 X 输出 X的平 ...
- python牛顿迭代法推导求根的迭代公式_推导牛顿迭代法
推导牛顿迭代法 牛顿法是方程求根的一个有力方法,常常能快速求出其他方法求不出或者难以求出的 解. 假定有一个函数 y=f ( x ) ,方程 f(x)=0 在 x = r 处有一个根,对于此根,我们先 ...
- 迭代法求平方根 MATLAB,用迭代法的思想 给出求根号(2 根号(2 根号(2 根号2)))的迭代格式...
用牛顿迭代法 求方程 2*x*x*x-4*x*x+3*x-6 的根 先去看看计算方法学习一下"牛顿迭代法"吧,不然就算懂了这个小程序也意义不大,真的 用C语言编程求牛顿迭代法求方程 ...
- 用迭代法求某数a的平方根
今天晚上笔试题目最后一题很简单,可是自己做不出= =,就是不用库函数,求一个浮点数的平方根. 立马想到用物理法,比如正方形的面积法等,可是求解出不出,然后就绕在里面了.归根到底还是平时的知识储备太少了 ...
- 方程求根的迭代法——牛顿迭代法
用牛顿法解方程xe(x) -1=0 程序流程图如下: //方程求根的迭代法--牛顿迭代法 /*************Analysis********** *1.初值x0,精度e,迭代次数N *2.牛 ...
- python基础练习题(按条件对指定序列求和,打印99乘法表、求斐波那契数列、百马百担、求水仙花数、求n以内的所有质数(素数)和)、集合的讲解、一些公关方法
1.求100(含100)以内所有偶数的和 range(start,end,step)这个序列生成器,和那个切片的语法一样,含头不含尾,step是步长,这里就不需要在对j进行判断了,对于这些简单求奇数和 ...
- Algorithm:C++/python语言实现之求旋转数组最小值、求零子数组、求最长公共子序列和最长公共子串、求LCS与字符串编辑距离
Algorithm:C++/python语言实现之求旋转数组最小值.求零子数组.求最长公共子序列和最长公共子串.求LCS与字符串编辑距离 目录 一.求旋转数组最小值 1.分析问题 2.解决思路 二.求 ...
- C语言实现牛顿-拉夫逊newton raphson求近似根roots(附完整源码)
实现牛顿-拉夫逊newton raphson求近似根 实现以下几个相关的接口 实现牛顿-拉夫逊newton raphson求近似根的完整源码(定义,实现,main函数测试) 实现以下几个相关的接口 d ...
- 用计算机算算术平方根顺序是ON然后是什么,第2课时用计算器求一个正数的算术平方根.ppt...
1.比较下列各组数的大小: (1) 与 (2) 与 8 依次按键 显示:1.732 050 808 例3 小丽想用一块面积为400 cm2的正方形纸片,沿着边的方向剪出一块面积为300 cm2的长方形 ...
最新文章
- tp5上传文件并获取文件路径_thinkphp表单上传文件并将文件路径保存到数据库中...
- 【转】ASP中的SQL注入
- word手写字体以假乱真_学会Word上下标,搞定公式输入
- dhs手术是什么意思_#下颌角手术# #磨骨瘦脸# 下颌角手术多少钱?
- 快速搭建Python+Selenium+Sublime 自动化测试环境方法
- 荔枝派 Nano 全志 F1C100s 编译运行 Linux ubuntu并升级gcc
- 聊聊天,如果能重来,还干不干程序员?
- [转载]Netvault:操作Informix APM将A机备份的数据恢复到B机
- 词汇表生成(C语言)
- 1.亿级流量的电商网站---概述
- 源码分享—《Java多线程编程核心技术》源码,Java多线程编程核心技术源码 略微有改动。
- vue前端UI框架收集
- matlab 蜗杆轮廓,基于MATLAB的直廓环面蜗杆的可视化
- 三国演义主要人物个人经历
- 证书服务器搭建与邮件签名加密
- Hasor-RSF —— 分布式服务框架
- AutoCad 新建或打开对话框 经常变为命令提示行的解决办法!
- 微信后台 phxrpc (v0.8) 之 Timer(二)
- 10张剪纸风格2021牛年祝福海报
- 百度地图、高德地图、腾讯地图餐饮POI内容结构及获取接口
热门文章
- PHP导出word【 直接生成word文件 】
- 7-22 循环日程表
- 什么是黑盒测试和白盒测试、灰盒测试?
- 经典数学问题——三门问题(数据分析面试题)
- C/C++输入输出加速(算法考试重要!)
- SpringBoot搭建微信公众号后台(零):服务搭建与接口验证
- 兰道尔原理(Laudauer‘s Principle)
- OpenCV“迷雾”车道识别的反思
- 深信服2018春季招聘-研发卷编程题 - 题解
- java 同比数据怎么算的_有当日数据和去年全年数据,如何通过公式做每日同比?...