程序猿成长之路番外篇-如何理解牛顿迭代法及如何使用牛顿迭代法求数的平方根

news2024/11/28 6:26:27

小伙伴们好久不见,我又来了,这次我分享的内容是如何理解牛顿迭代法及如何使用牛顿迭代法求数的平方根

什么是牛顿迭代法?

官方话术:牛顿迭代法又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。
简而言之,就是用来模拟近似值的一种算法。

牛顿迭代法产生背景

多数方程不存在求根公式,因此求精确根非常困难,甚至不可解,从而寻找方程的近似根就显得特别重要。

牛顿迭代法有什么用?

牛顿迭代法可以用于求解算术平方根等函数具有二阶导的场景。

牛顿迭代法的基本思想?(以求算术平方根为例)

概述:通过不断做切线求x轴交点,无限逼近

  1. 构造函数 y=x^2 - n
    在这里插入图片描述
    在这里解释一下这么构造的原因,当x = 0时y的值为要求的平方数,并且该函数可以二次求导,因此可以通过牛顿迭代法求出根号n的近似值
  2. 之后取靠近0的点C(1, 1-n)然后过该点作函数的切线交x轴于点B(k’, 0), 求出x=k’时函数上的点B‘(k’,k’^2 - n)
    在这里插入图片描述
  3. 之后无限迭代,经过多次迭代我们发现这个值会越来越接近A(根号n,0)
  4. 取极限的值即为根号n的值

牛顿迭代法的求平方根的代码

public static double sqrt(double n) {
    double threshold= 1e-15;
    double k = 1.0;
    while (Math.abs(k*k - n) > threshold) {
        k = (k + n/k) / 2.0;
    }
    return k;
}

牛顿迭代法的求平方根的证明

  1. 已知构造的函数为y = x^2 - n
  2. 设C为函数上的一点,且C的横坐标值设为k,即x = k, 有 y = k^2 - n, 即C(k,k^2-n)
  3. C点切线斜率设为m = (x^2 - n)’ = 2x = 2k
  4. 则有切线与横坐标的交点B(k’,0), 又有m = Δy/Δx, 则有Δx = Δy/m = (k^2 - n)/ 2k,因此有k’ = k - Δx = k - (k^2 - n)/ 2k = (k^2 + n)/2k = (k + n/k) / 2,之后将x=k’ 在函数上的点作为C点重复步骤2、3、4
  5. 当Δy -> 0时,即k^2 - n -> 0时,即C点无限趋近于零点时,k 即为所求的解,即根号n
  6. 证毕

—————————————有任何问题欢迎在评论区留言———————————

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/576954.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaSE】Java基础语法(二十五):异常

文章目录 1. 异常2. 编译时异常和运行时异常的区别3. JVM默认处理异常的方式4. 查看异常信息5. throws方式处理异常6. throw抛出异常7 . try-catch方式处理异常8. Throwable成员方法(应用)9. 自定义异常(应用) 1. 异常 异常的概述…

算法6.堆结构、堆排序、加强堆

算法|6.堆结构、堆排序、加强堆 1.比较器的定义 题意:定义一个学生类,分别实现对学生对象数组按年龄升序、按id降序、按名字的字典序、按id排序且id相同的年龄大的排在前边。 解题思路: 定义一个学生类定义一个实现了Comparator接口的类A…

前端包管理器的简介,pnpm的使用以及和npm的区别

随着前端的不断发展,包管理工具也不断的丰富,从最开始的npm到现在cnpm,pnpm,yarn,一个新的包管理工具的出现是为了弥补之前包管理工具的一个痛点,今天我就来说一下包管理器的出现的原因和pnpm的简单使用和一些包管理工具的一些区别…

【Vue】二:Vue核心处理---事件处理

文章目录 1. 事件修饰符1.1 prevent1.2 stop1.3 capture - 添加事件侦听器时使用 capture 模式。1.4 self1.5 one1.6 passive 2.按键修饰符3.系统修饰符 1. 事件修饰符 1.1 prevent 当我们点击后,回去先执行关联的事件,然后再去执行默认行为&#xff0c…

Arduino学习

物联网学习资料 《arduino程序设计基础》陈吕洲 北京航空航天大学出版社 半颗心脏博客导航一站式搜索(所有博客的汇总帖) Ai-Thinker 安信可科技 github 半颗心脏 | 徐宏 蓝牙技术 蓝牙网关【【智能家居】入门攻略二!啥是网关?蓝牙、zigbee协议详…

隐藏在背后的真相——数据存储的方式(上)

数据存储的方式 1. 数据类型详细介绍1.1类型的基本归 2. 整形在内存中的存储2.1原码,反码,补码2.2有符号(unsigned)和无符号(signed)2.3 例题 3. 大小端字节序介绍及判断 所属专栏:C语言❤️ &a…

学网络安全可以参考什么方向?该怎么学?

在这个圈子技术门类中,工作岗位主要有以下三个方向: 安全研发安全研究:二进制 方向安全研究:网络渗透方向 下面逐一说明一下。 安全研发 安全行业的研发岗主要有两种分类: 与安全业务关系不大的研发岗位与安全业务…

英文论文(sci)解读复现【NO.13】基于YOLOv5的自然场景下苹果叶片病害实时检测

此前出了目标检测算法改进专栏,但是对于应用于什么场景,需要什么改进方法对应与自己的应用场景有效果,并且多少改进点能发什么水平的文章,为解决大家的困惑,此系列文章旨在给大家解读发表高水平学术期刊中的 SCI论文&a…

python 真正的密码,字符串排序

代码: from typing import List def turePassword(wordList:List[str]) ->str:wordList list(set(wordList))#排序先字符串长度,其次字典序wordList.sort(keylambda x :(len(x),x))ans for i in range(len(wordList)-1,-1,-1):flag Truefor j in …

蓝奥声核心技术分享——无线同步群控技术

1.技术背景 无线同步群控技术指基于对目标场景状态变化的协同感知而获得触发响应并进行智能决策,属于蓝奥声核心技术--边缘协同感知(EICS)技术的关键支撑性技术之一。该项技术涉及无线物联网边缘域网络的无线通信与智能控制技术领域,具体主要…

浅谈人工智能怎么提升工作效率

一、引言 随着科技的飞速发展,人工智能(AI)逐渐成为各行各业提高工作效率的重要工具。本报告旨在通过分析人工智能在提高工作效率方面的作用,探讨其具体实现方法,并通过案例分析来深入了解其实际应用效果和优缺点&…

算法8.从暴力递归到动态规划1

算法|8.从暴力递归到动态规划1 目前感觉,背包问题和货币数组问题本质相同,货币的与dp相关的三种代码写完了,快复习不完了,背包暂时先不写了,回头再写,补充,再总结,结合那个C大神的文…

对KMP算法的一点碎碎念——上篇

对KMP算法的一点碎碎念——上篇 文章目录 对KMP算法的一点碎碎念——上篇1. KMP 算法 Next数组 求解问题1.1 前置知识-最长公共前后缀LCP1.1.1 前缀与后缀1.1.2 最长公共前后缀LCP 1.2 手算法求解 Next数组值(3种常见情况)1.2.1 情况1: next数组 正常存放匹配字符的长度情况1的…

前端面试-React专题

目录 一.React1. React 的主要特性是什么2.React 的核心思想是3. 什么是jsx4. render()函数5. 函数组件和类组件的区别6. HTML和React中事件处理的区别7. React 中的合成事件8. 虚拟Dom?为什么使用?如何实现?9. 在 constructor 中给 super 函…

Excel - 如何给单元格加上下拉框

当你使用下拉列表来限制人们在单元格中的输入时,数据输入会更快、更准确。当有人选择一个单元格时,下拉列表的向下箭头就会出现,可以点击它并进行选择。 创建一个下拉列表 / Create a drop-down list 你可以通过提供下拉列表使工作表更有效率…

基于微信小程序的教学质量评价系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

ubuntu下编译esp32 micropython固件编译(可自行增加模块)

目录 0. 前言1. 安装ESP-IDF2. 初始化Micropython仓库3. 选择ESP-IDF相应版本情况1情况2 4. 开始编译5.烧录固件 0. 前言 为ESP32编译Micropython固件 操作系统:ubuntu22.04 1. 安装ESP-IDF 本节需要ESP-IDF环境,安装开发环境是必要的。 …

FPGA之手把手教你做多路信号发生器(STM32与FPGA数据互传控制波形生成)

文章目录 博主的念叨一、任务介绍1、本文目标2、设计思路3、设计注意事项 二、设计代码1.顶层文件代码2.波形生成模块3.ROM例化4.PLL例化5.引脚分配 总结 博主的念叨 博主建了一个技术资源分享的群,开源免费,欢迎进来唠嗑280730348 最近趁热打铁做了一…

pandas库的常用操作介绍

目录 1.1.Pandas概述2.Pandas索引结构3.groupby学习5.Pandas数值运算二元统计6.对象操作7.merge合并显示设置9.pivot操作10. 时间操作11.常用操作12.groupby操作13.字符串操作14.索引操作15.pandas绘图操作 1.1.Pandas概述 Python的pandas库是一个数据处理和数据分析库&#x…

javascript基础七:说说你对Javascript中作用域的理解?

一、作用域 作用域,即变量(变量作用域又称上下文)和函数生效(能被访问)的区域或集合 换句话说,作用域决定了代码区块中变量和其他资源的可见性 举个粟子 function myFunction(){let name小爱同学 } undef…