用牛顿-拉弗森法求平方根函数

2024-02-23 19:40

本文主要是介绍用牛顿-拉弗森法求平方根函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

基本介绍
牛顿法(英语:Newton’s method)又称为牛顿-拉弗森方法(英语:Newton-Raphson method),它是一种在实数域和复数域上近似求解方程的方法。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(y)=0的根。

二分法可以求解方根,而使用牛顿迭代法可以更快地解出方根。现在,人们使用的计算器里面大多数都是运用的牛顿迭代法。

原理介绍
假 设 n = x 2 , 现 在 求 n 的 方 根 , 即 x 2 − n = 0 , 把 他 转 换 为 f ( x ) = x 2 − n , 如 上 图 所 示 选 取 x 0 作 为 求 解 方 根 的 初 始 近 似 值 , 过 点 ( x 0 , f ( x 0 ) ) 作 切 线 T , T 的 方 程 为 y = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) 求 出 T 与 x 轴 交 点 的 横 坐 标 x 1 = x 0 − f ( x 0 ) f ′ ( x 0 ) , 称 x 1 为 n 方 根 的 一 次 近 似 值 过 点 ( x 1 , f ( x 1 ) ) 再 作 切 线 , 并 求 得 该 切 线 与 x 轴 交 点 的 横 坐 标 : x 2 = x 1 − f ( x 1 ) f ′ ( x 1 ) 称 x 2 为 n 方 根 的 二 次 近 似 值 。 以 此 类 推 , 得 到 牛 顿 法 的 迭 代 公 式 : x n + 1 = x n − f ( x n ) f ′ ( x n ) ( 注 : f ′ ( x n ) 是 导 数 , 这 里 也 就 是 切 线 的 斜 率 , 数 值 是 2 ∗ x n 猜 测 值 在 经 过 多 次 迭 代 后 会 越 来 越 接 近 曲 线 的 根 , 用 数 学 术 语 来 说 就 是 , 这 个 方 程 式 f ( x ) = 0 在 的 时 候 收 敛 , 故 能 求 得 近 似 n 方 根 的 值 。 牛 顿 法 正 因 为 有 此 明 显 的 几 何 意 义 , 所 以 也 叫 切 线 法 。 假设 n=x^{2} ,现在求n的方根,即x^{2}-n=0,把他转换为f(x)=x^{2}-n,如上图所示\\选取x_{0}作为求解方根的初始近似值,过点\left ( x_{0},f\left ( x_{0} \right ) \right )作切线T,T的方程为 \\y=f\left ( x_{0} \right ) +{f}'\left ( x_{0} \right )\left (x-x_{0} \right ) \\求出T与x轴交点的横坐标x_{1}=x_{0}-\frac{f\left ( x_{0} \right ) }{{f}'\left ( x_{0} \right )},称x_{1}为n方根的一次近似值 \\过点\left ( x_{1},f\left ( x_{1} \right ) \right )再作切线,并求得该切线与x轴交点的横坐标:x_{2}=x_{1}-\frac{f\left ( x_{1} \right ) }{{f}'\left ( x_{1} \right )}\\称x_{2}为n方根的二次近似值。以此类推,得到牛顿法的迭代公式:x_{n+1}=x_{n}-\frac{f\left ( x_{n} \right ) }{{f}'\left ( x_{n} \right )} \\(注:{f}'\left ( x_{n} \right )是导数,这里也就是切线的斜率,数值是2* x_{n}\\ 猜测值在经过多次迭代后会越来越接近曲线的根,用数学术语来说就是,这个方程式 \\f\left ( x \right )=0在的时候收敛,故能求得近似n方根的值。牛顿法正因为有此明显的几何意义,\\所以也叫切线法。 n=x2nx2n=0f(x)=x2nx0(x0,f(x0))线TTy=f(x0)+f(x0)(xx0)Txx1=x0f(x0)f(x0)x1n(x1,f(x1))线线xx2=x1f(x1)f(x1)x2nxn+1=xnf(xn)f(xn)f(xn)线2xn线f(x)=0n线

图示如下
在这里插入图片描述在这里插入图片描述

这篇关于用牛顿-拉弗森法求平方根函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/739716

相关文章

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

MySQL中FIND_IN_SET函数与INSTR函数用法解析

《MySQL中FIND_IN_SET函数与INSTR函数用法解析》:本文主要介绍MySQL中FIND_IN_SET函数与INSTR函数用法解析,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一... 目录一、功能定义与语法1、FIND_IN_SET函数2、INSTR函数二、本质区别对比三、实际场景案例分

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

C/C++错误信息处理的常见方法及函数

《C/C++错误信息处理的常见方法及函数》C/C++是两种广泛使用的编程语言,特别是在系统编程、嵌入式开发以及高性能计算领域,:本文主要介绍C/C++错误信息处理的常见方法及函数,文中通过代码介绍... 目录前言1. errno 和 perror()示例:2. strerror()示例:3. perror(

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

C++中::SHCreateDirectoryEx函数使用方法

《C++中::SHCreateDirectoryEx函数使用方法》::SHCreateDirectoryEx用于创建多级目录,类似于mkdir-p命令,本文主要介绍了C++中::SHCreateDir... 目录1. 函数原型与依赖项2. 基本使用示例示例 1:创建单层目录示例 2:创建多级目录3. 关键注

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程