计算方法实验(四):牛顿迭代法

2023-11-17

Newton迭代法数学原理

求非线性方程 f ( x ) = 0 f(x) = 0 f(x)=0的根 x ∗ x^{*} x,牛顿迭代法计算公式

x 0 = α x_{0} = \alpha x0=α

x n + 1 = x n − f ( x n ) f ′ ( x n ) x_{n + 1} = x_{n} - \frac{f(x_{n})}{f^{'}(x_{n})} xn+1=xnf(xn)f(xn)

n = 0 , 1 , ⋯ n = 0,1,\cdots n=0,1,

一般地,牛顿迭代法具有局部收敛性,为保证迭代收敛,要求,对充分小的 δ > 0 \delta > 0 δ>0 α ∈ O ( x ∗ , δ ) \alpha \in O(x^{*},\delta) αO(x,δ)。如果 f ( x ) ∈ C 2 [ a , b ] f(x) \in C^{2}\lbrack a,b\rbrack f(x)C2[a,b] f ( x ∗ ) = 0 f(x^{*}) = 0 f(x)=0 f ′ ( x ∗ ) ≠ 0 f^{'}(x^{*}) \neq 0 f(x)=0,那么,对充分小的 δ > 0 \delta > 0 δ>0,当 α ∈ O ( x ∗ , δ ) \alpha \in O(x^{*},\delta) αO(x,δ)时,由牛顿迭代法计算出的 { x n } \{ x_{n}\} {xn}收敛于 x ∗ x^{*} x,且收敛速度是2阶的;如果 f ( x ) ∈ C m [ a , b ] f(x) \in C^{m}\lbrack a,b\rbrack f(x)Cm[a,b] f ( x ∗ ) = f ′ ( x ∗ ) = ⋯ = f ( m − 1 ) ( x ∗ ) = 0 f(x^{*}) = f^{'}(x^{*}) = \cdots = f^{(m - 1)}(x^{*}) = 0 f(x)=f(x)==f(m1)(x)=0 f ( m ) ( x ∗ ) ≠ 0 ( m > 1 ) f^{(m)}(x^{*}) \neq 0(m > 1) f(m)(x)=0(m>1),那么,对充分小的 δ > 0 \delta > 0 δ>0,当 α ∈ O ( x ∗ , δ ) \alpha \in O(x^{*},\delta) αO(x,δ)时,由牛顿迭代法计算出的 { x n } \{ x_{n}\} {xn}收敛于 x ∗ x^{*} x,且收敛速度是1阶的;

问题

利用牛顿迭代法求 f ( x ) = 0 f(x) = 0 f(x)=0的根

输入:初值 α \alpha α,精度 ε 1 , ε 2 \varepsilon_{1},\varepsilon_{2} ε1,ε2,最大迭代次数 N N N

输 出:方程 f ( x ) = 0 f(x) = 0 f(x)=0 x ∗ x^{*} x的近似值或计算失败标志

程序流程

核心代码

#include <cmath>
#include <cstdio>
#include <iostream>
using namespace std;

double x, e1, e2;
int n;

double f(double x) { return cos(x) - x; }
double df(double x) { return -sin(x) - 1; }

int main() {
    scanf("%lf%lf%lf%d", &x, &e1, &e2, &n);
    for (int i = 1; i <= n; i++) {
        double F = f(x), DF = df(x);
        if (fabs(F) < e1) {
            printf("%lf", x);
            return 0;
        }
        if (fabs(DF) < e2) {
            printf("Failed");
            return 0;
        }
        double x1 = x - F / DF;
        double tol = fabs(x - x1);
        if (tol < e1) {
            printf("%lf", x1);
            return 0;
        }
        x = x1;
    }
    printf("Failed");
    return 0;
}

详细报告

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算方法实验(四):牛顿迭代法 的相关文章

  • 情感分析中的深度学习

    一 情感分析中的基本模型 1 前馈神经网络 FNN 不考虑输入数据具备的任何特定结构常与正则化结合使用 主要解决问题 神经网络有大量隐藏层 隐藏层非常难以训练 梯度消失和过拟合问题 FNN 由一个输入层 一个 浅层网络 或多个 深层网络 因
  • 商品销售管理系统设计论文--毕业设计

    内容摘要 在科学技术日新月异的今天 计算机已逐步渗入各个领域 无论是学习 工作 还是娱乐都普及了计算机的使用 而随着网络的开通 并与Internet连接更让我们社会成为信息化的时代 人们不再需要浪费太多的时间去手工的获得信息 只要做在家中轻
  • 【Mac】电脑维修 换电池之被坑记

    文章目录 1 概述 1 概述 今天遇到一个糟心的事情 我的mac电脑 电池坏了 想换电池 然后以前查了一下 发现要1000块 因为电池没坏透彻 就没去换 这次想去换了 然后当时脑子蒙了 直接去店里 然后问了一下换电池400块 但是要订购电池
  • Hadoop在Windows10下的安装及简单操作

    Hadoop环境搭建 准备工作 首先从网站https www oracle com technetwork java javase downloads jdk8 downloads 2133151 html下载匹配Windows x64的J

随机推荐

  • java游戏主角叶开,逸之老板的天机城与叶开大神女魃墓,决赛场上谁更抢眼?...

    精锐组 逸之老板的天机城与叶开大神女魃墓 决赛场上谁更抢眼 逸之老板150级无级别刀 出场效果到底是不是很一般 吃货分队 逸之的天机城在精锐组也算是佼佼者 扛上150级无级别刀 如虎添翼 在决赛中 变身机甲 对方宝宝根本招架不住 摸一下就飞
  • 微信小程序上线后无法调用后端接口

    我们要在小程序设置里把request请求域名加上保存就可以了
  • 生信入门(二)——使用limma、Glimma和edgeR,RNA-seq数据分析

    生信入门 二 使用limma Glimma和edgeR RNA seq数据分析 文章目录 生信入门 二 使用limma Glimma和edgeR RNA seq数据分析 一 简介 二 数据背景 三 初始配置 四 数据整合 1 数据下载 2
  • Vue使用axios实现跨域请求

    在前后端分离的项目中 关键的一步就是能够进行跨域请求 可以通过前端发送请求访问不同端口的服务器获取数据 为了解决这一问题使用的是axios来实现跨域请求 一 安装axios 使用npm安装 npm install axios save 首先
  • less 命令详解

    less 命令详解 less 与more命令类似 但可以通过翻页键查看上下页的内容 b lt 缓冲区大小 gt 设置缓冲区的大小 e 当文件显示结束后 自动离开 f 强迫打开特殊文件 例如外围设备代号 目录和二进制文件 g 只标志最后搜索的
  • 通过域策略登录脚本收集域用户的登录/注销信息

    1 我们需要在域控制器上新建一个隐藏的共享文件夹 shoujifile 专门用于存放收集到的资料 如下图所示 登录和注销脚本代码如下 收集域用户注销计算机信息 On Error Resume Next strComputer Set lia
  • IDEA中部署git

    IDEA中使用 git 1 在Idea中配置 git 安装好 IntelliJ IDEA后 如果Git 安装在默认路径下 那么 idea 会自动找到 git 的位置 如果更改了 Git 的安装位置则需要手动配置下Git 的路径 选择 Fil
  • C# 语音识别

    在 NET4 0中 我可以借助System Speech组件让电脑来识别我们的声音 以上 当我说 你好 显示 Darren 我说 age 显示 永远21 如何做呢 首先要开启电脑的语音识别功能 右键电脑右下方的扬声器 选择 录音设备 点击默
  • 实现labelme批量json_to_dataset方法

    labelme可以帮助我们快速的实现Mask RCNN中数据集json文件的生成 然而还需要我们进一步的将json转成dataset 可以直接在cmd中执行labelme json to dataset exe C Users Admini
  • 校验码在线计算工具

    符合在合种场景下开发使用 LRC校验码在线计算器 ME2在线工具
  • NE555 + CD4017流水灯

    NE555 CD4017流水灯 1 完成此物只需要清楚2个点 1 NE555充当信号发生器 产生方波 信号即电信号 有高低电平之分 所谓方波就是在一个周期内 保持前a时间高电平 持续1 a时间内的低电平 0
  • js中如何实现字符串去重?

    聚沙成塔 每天进步一点点 专栏简介 使用 Set 数据结构 使用循环遍历 写在最后 专栏简介 前端入门之旅 探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅 这个专栏是为那些对Web
  • 一个页面好几个地方调用ajax,如何使用一个jquery ajax调用来更新页面上的多个区域?...

    我目前正在使用jQuery Ajax和PHP实现购物车 并且大部分工作正在进行 然而 我目前卡在如何更新购物车页面内容时 我更新购物车 因为此刻我返回的HTML更新侧栏中的购物车区域 工作正常 如何使用一个jquery ajax调用来更新页
  • 头条号个人中心登录_手把手教你如何在头条号中绑定百家号?

    现在的自媒体平台很多 很多人做自媒体时注册了多个平台 一般都是将自己制作的内容发到不同平台 由于每个平台都要审核发布内容是否符合平台规定 如果发现网上有相同内容被认为是抄袭可能审核不通过 因此 帐号之间关联在一起 平台就知道是这内容是同一作
  • 一种基于Redisson实现简单的分布式定时任务执行方案

    一般在springcloud下单机执行定时任务的代码 EnableScheduling public class TestTask Scheduled cron 0 public void test System out println s
  • SSM项目遇到的问题(5)

    SSM项目中前端传递的方式为post且格式为Json 遇到的问题 问题解决 遇到的问题 简单介绍一下 遇到的问题 前端传送的数据为Json格式 方法为post 也就是这样子的 但是在后端获取到的数据 死活都为null 不管接受的参数 是这样
  • 解决Error:Flash Download failed -“Cortex-M3”问题

    自己用的ST link下载程序 按照网友配置ST Link在keil5上的应用 结果就是这样的 首先我用的STM32F103ZET6建的工程 想把程序下载到STM32F103C8T6上 我看到其他博友说的问题有如下 1 在KEIL5上配置错
  • python爬虫学习笔记3

    1 selenium 1 什么是selenium 1 Selenium是一个用于Web应用程序测试的工具 2 Selenium测试直接运行在浏览器中 就像真正的用户在操作一样 3 支持通过各种driver FirfoxDriver Iter
  • tolua框架整理

    文 知乎 罗培羽 第一篇 代码热更新 这些日子在找Unity3D的现成框架 希望能给后续项目开发带来便利 找着找着 便关注到了LuaFramework 这是一套基于tolua的框架 可以实现热更新 然而相关的资料太少 磕磕碰碰的尝试之后 便
  • 计算方法实验(四):牛顿迭代法

    Newton迭代法数学原理 求非线性方程 f x 0 f x 0 f x 0的根