【数值计算方法】非线性方程(组)和最优化问题的计算方法:非线性方程式求根的二分法、迭代法、Newton 迭代法及其Python实现

news2024/11/27 2:40:06

目录

一、非线性方程式求根

1、二分法(Bisection Method、对分法)

a. 理论简介

b. python实现

2、迭代法(Iterative Method)

a. 理论简介

b. python实现

3、Newton 迭代法(Newton's Method)

a. 理论简介

b. python实现


一、非线性方程式求根

        非线性方程举例:

f(x)=0

5x^4+3x+1=0

        非线性方程式求根是一个重要的数值计算问题,常用的方法包括二分法、迭代法和牛顿迭代法。

1、二分法(Bisection Method、对分法)

a. 理论简介

(连续函数介值定理)

        二分法是一种简单而直观的求根方法,适用于单调函数的根。它的基本思想是通过不断缩小根所在区间来逼近根的位置。具体步骤如下:

  • 首先,选择一个初始区间[a, b],确保函数在这个区间内连续且函数值异号(即f(a) * f(b) < 0)。
  • 然后,计算区间的中点c = (a + b) / 2,并计算函数在c处的值f(c)。
  • 接下来,根据f(c)与0的关系,确定新的区间[a, c]或[c, b],使得新的区间内仍满足函数值异号的条件。
  • 重复上述步骤,直到满足预设的精度要求,即根的近似值落在所选区间内。

b. python实现

def f(x):
    return 5 * x**4 + 3 * x + 1

def bisection_method(a, b, tolerance=1e-6, max_iterations=100):
    if f(a) * f(b) >= 0:
        return None

    for _ in range(max_iterations):
        c = (a + b) / 2
        if abs(f(c)) < tolerance:
            return c

        if f(c) * f(a) < 0:
            b = c
        else:
            a = c

    return None

# 调用二分法求解方程的根
root = bisection_method(a=-1, b=0)
if root is not None:
    print("方程的一个根为:", root)
else:
    print("未找到方程的根")

注意,二分法要求初始区间[a, b]满足f(a) * f(b) < 0,即方程在区间的两个端点上取值异号。

输出:

a=-0.5, b=1
方程的一个根为: -0.36193275451660156
a=-1, b=0
未找到方程的根

2、迭代法(Iterative Method)

a. 理论简介

        迭代法是一种通过不断迭代逼近根的方法,适用于任意函数的根。它的基本思想是从一个初始的近似值开始,通过不断更新逼近根的位置,直到满足预设的精度要求。具体步骤如下:

  • 首先,选择一个初始的近似值x0。
  • 然后,根据迭代公式x[i+1] = g(x[i]),计算下一个近似值x[i+1]。
  • 重复上述步骤,直到满足预设的精度要求,即近似值与根的差值足够小。

b. python实现

def g(x):
    return (-1) / (5 * x**3 + 3)

def iterative_method(initial_guess, tolerance=1e-6, max_iterations=100):
    x = initial_guess
    for _ in range(max_iterations):
        x_next = g(x)
        if abs(x_next - x) < tolerance:
            return x_next
        x = x_next
    return None

# 调用迭代法求解方程的根
root = iterative_method(initial_guess=0)
if root is not None:
    print("方程的一个根为:", root)
else:
    print("未找到方程的根")

注意,迭代法的收敛性与迭代函数的选择密切相关,对于某些函数可能无法收敛或者收敛速度很慢。

输出:

方程的一个根为: -0.36193292438672897

3、Newton 迭代法(Newton's Method)

a. 理论简介

        牛顿迭代法是一种快速收敛的求根方法,适用于光滑函数的根。它利用函数的局部线性近似来逼近根的位置。具体步骤如下:

  • 首先,选择一个初始的近似值x0。
  • 然后,根据牛顿迭代公式x[i+1] = x[i] - f(x[i]) / f'(x[i]),计算下一个近似值x[i+1]。
  • 重复上述步骤,直到满足预设的精度要求,即近似值与根的差值足够小。

b. python实现

def f(x):
    return 5 * x**4 + 3 * x + 1

def f_prime(x):
    return 20 * x**3 + 3

def newton_method(initial_guess, tolerance=1e-6, max_iterations=100):
    x = initial_guess
    for _ in range(max_iterations):
        delta_x = f(x) / f_prime(x)
        x -= delta_x
        if abs(delta_x) < tolerance:
            return x
    return None

# 调用牛顿迭代法求解方程的根
root = newton_method(initial_guess=0)
if root is not None:
    print("方程的一个根为:", root)
    print(int(f(root)))
else:
    print("未找到方程的根")

注意,牛顿法要求2阶导不编号,1阶导不为0

输出:

方程的一个根为: -0.3619330489831212

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

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

相关文章

制作搞笑聊天视频的新神器,全自动搞笑聊天对话视频生成器!

大家都知道&#xff0c;想要在社交媒体上出人头地&#xff0c;搞笑聊天视频是一个绝佳的选择。而如何制作一个搞笑的聊天视频呢&#xff1f;不要担心&#xff0c;今天我要向大家推荐的是一款神奇的搞笑聊天视频生成器&#xff0c;它可以让你轻松一键制作出搞笑对话视频。 搞笑对…

9.2.4 【MySQL】段的结构

段不对应表空间中某一个连续的物理区域&#xff0c;而是一个逻辑上的概念&#xff0c;由若干个零散的页面以及一些完整的区组成。像每个区都有对应的XDES Entry来记录这个区中的属性一样&#xff0c;定义了一个INODE Entry结构来记录段中的属性。 它的各个部分释义如下&#xf…

向AI提问,我是怎么做的?

OpenAI 是一个人工智能研究实验室和技术公司&#xff0c;而 ChatGPT&#xff08;Chatbot GPT&#xff09;是 OpenAI 开发的一种基于自然语言处理技术的聊天机器人模型。它能够理解用户的输入并生成相应的回复&#xff0c;通过模仿人类对话的方式进行交流。但是AI对话与人完全不…

IT数据预警设备监控

信息技术已经成为企业经营的重要支撑。恶意程序、黑客攻击、数据泄露等问题频繁发生&#xff0c;对公司经营影响很大。因此&#xff0c;IT预警监控已经成为公司维护数据安全的主要防御。  IT预警监控是一种基于实时监控公司IT系统&#xff0c;及时发现和处理隐性安全威胁管理…

MySQL强制使用索引的两种方式及优化索引,使用MySQL存储过程创建测试数据。

一、MySQL强制使用索引的两种方式 1、使用 FORCE INDEX 语句&#xff1a; explainselect*fromtbl_test force index (index_item_code)where(item_code between 1 and 1000) and (random between 50000 and 1000000)order byrandomlimit 1; 使用 FORCE INDEX&#xff08;索引…

「华为P60 Pro」只要599元,老牌国产再现骚操作

国内智能手机经过这么些年的洗牌&#xff0c;真正活下来且过得滋润其实也就那屈指可数的几家。 刚开始大家还能拼创意、拼设计&#xff0c;最后发现拼来拼去&#xff0c;还是逃不开同质化命运。 到了现在&#xff0c;也不比啥创意了&#xff0c;干脆堆配置、卷规格一条路走到…

14.TIM输出比较示例程序(PWM驱动LED呼吸灯PWM驱动舵机PWM驱动直流电机)

目录 输出比较相关库函数 PWM驱动LED呼吸灯 PWM驱动舵机 PWM驱动直流电机 输出比较相关库函数 1.OC初始化&#xff08;掌握&#xff09; // 配置输出比较模块&#xff0c;输出比较单元有四个&#xff0c;对应也有四个函数 // 第二个参数是结构体&#xff0c;就是输出比较…

Docker的相关知识介绍以及mac环境的安装

一、什么是Docker 大型项目组件较多&#xff0c;运行环境也较为复杂&#xff0c;部署时会碰到一些问题&#xff1a; 依赖关系复杂&#xff0c;容易出现兼容性问题开发、测试、生产环境有差异 Docker就是来解决这些问题的。Docker是一个快速交付应用、运行应用的技术&#x…

互联网医院牌照|互联网医院牌照审批流程和材料

随着科技的不断进步和社会的发展&#xff0c;互联网医院已经成为了当前的热点。而互联网医院的准入门槛自然也就越来越高。如果您计划成立一个互联网医院&#xff0c;您需要了解申请互联网医院牌照所需要注意的方面以及申请的流程。 一、资质申请前的准备 1、立项阶段准备 在立…

Python异步框架大战:FastAPI、Sanic、Tornado VS Go 的 Gin

一、前言 异步编程在构建高性能 Web 应用中起着关键作用&#xff0c;而 FastAPI、Sanic、Tornado 都声称具有卓越的性能。本文将通过性能压测对这些框架与Go的Gin框架进行全面对比&#xff0c;揭示它们之间的差异。 原文&#xff1a;Python异步框架大战&#xff1a;FastAPI、Sa…

文心一言 VS 讯飞星火 VS chatgpt (101)-- 算法导论9.3 7题

七、用go语言&#xff0c;设计一个 O(n)时间的算法&#xff0c;对于一个给定的包含n个互异元素的集合 S 和一个正整数k≤n&#xff0c;该算法能够确定 S 中最接近中位数的k个元素。 文心一言&#xff1a; 要设计一个 O(n) 时间的算法来找到集合 S 中最接近中位数的 k 个元素&…

诊断27服务介绍

在UDS诊断协议中,有一些服务,比如2E服务写入DID数据,2F服务控制输入输出,它们都会改变ECU控制器的内存数据,所以在请求这类服务时需要慎之又慎。诊断协议设计了一个安全解锁机制,让ECU在接收到某些诊断服务(2E、2F等)前需要处于解锁状态,这就是27服务实现。 Tester发…

【校招VIP】前端操作系统之存储管理-交换

考点介绍&#xff1a; 前端开发的时候&#xff0c;在页面刷新之后&#xff0c;我们的所有数据都会被清空&#xff0c;这时候就要用到本地存储技术了&#xff0c;前端的存储数据的方式有四种&#xff1a;cookie、localStorage、sessionStorage和indexDB。 本期分享的前端操作系…

JavaScript简介引入方式(JavaScript基础语法、JavaScript对象、BOM、DOM、事件监听)

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 JavaScript简介&引入方式 简介&#xf…

手把手教你实现:将后端SpringBoot项目部署到华为云服务器上

前言 前提&#xff1a;有一个后端项目&#xff0c;项目能够运行在本地&#xff0c;可以通过本地访问&#xff08;localhost&#xff09; 如果没有可以看这篇&#xff1a;一个基于SpringBoot的后端项目 注册华为云账号 华为云官网 购买云服务器 产品 -> 华为云耀云服务器…

数据结构--插入排序

目录 插入排序 算法实现 算法效率分析 插入排序的优化-折半插入排序 最终的结果&#xff1a;&#xff08;方式&#xff09; 优化-折半查找的代码实现 ​回顾 插入排序 算法实现 算法效率分析 空间复杂度和问题规模无关 插入排序的优化-折半插入排序 之前的元素有序&am…

【2023集创赛】加速科技杯三等奖作品:私密性高精度刷手身份认证系统

本文为2023年第七届全国大学生集成电路创新创业大赛&#xff08;“集创赛”&#xff09;加速科技杯三等奖作品分享&#xff0c;参加极术社区的【有奖征集】分享你的2023集创赛作品&#xff0c;秀出作品风采&#xff0c;分享2023集创赛作品扩大影响力&#xff0c;更有丰富电子礼…

pdf怎么压缩?pdf压缩方法大全

pdf怎么压缩&#xff1f;PDF是一种广受欢迎的文件格式&#xff0c;相信现在有很多用户都在使用。这是因为PDF具有出色的兼容性&#xff0c;适用于包含数据、图片、表格和文字等各种内容&#xff0c;不管是在电脑、手机、平板上&#xff0c;都可以让文件以最规范的方式打开呈现给…

垃圾收集器ParNewCMS与底层三色标记算法

JVM字节码文件class&#xff1a;&#xff08;16进制&#xff09; 前四个字节码CA FE BA BE&#xff0c;固定logo包含lineNumberTable&#xff1a;用于异常的定位默认第一个localVariableTable为this&#xff0c;无构造方法也会存在最大接口数FFFF 》65535包含最大操作数栈深度…

【算法思想】贪心

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…