当前位置: 首页 > news >正文

非线性方程二分法

非线性方程二分法

优点:算法直观、简单、总能保证收敛;局限:收敛速度慢、一般不单独用它求根,仅为了获取根的粗略近似

文章目录

  • 非线性方程二分法
    • @[toc]
    • 1 二分法基本思想
    • 2 二分法实现

1 二分法基本思想

f ( x ) f(x) f(x) [ a , b ] [a,b] [a,b]上连续、严格单调、满足条件
f ( a ) f ( b ) < 0 f(a)f(b)<0 f(a)f(b)<0
则在区间 [ a , b ] [a,b] [a,b]内必有一根 x ∗ x^* x。通过反复对分有根区间,以极限思想求解出非线性方程的数值解。具体步骤如下:

  • [ a , b ] [a,b] [a,b]的中点 x 0 = ( a + b ) / 2 x_0=(a+b)/2 x0=(a+b)/2,计算 f ( x 0 ) f(x_0) f(x0),当
    • f ( a ) f ( x 0 ) < 0 f(a)f(x_0)<0 f(a)f(x0)<0,则令 a 1 = a , b 1 = x 0 a_1=a,b_1=x_0 a1=a,b1=x0;
    • f ( x 0 ) f ( b ) < 0 f(x_0)f(b)<0 f(x0)f(b)<0,则令 a 1 = x 0 , b 1 = b a_1=x_0,b_1=b a1=x0,b1=b;

通过重复上述步骤,得到一系列有根区间
[ a , b ] ⊃ [ a 1 , b 1 ] ⊃ [ a 2 , b 2 ] ⊃ ⋯ ⊃ … [a,b]\supset [a_1,b_1]\supset[a_2,b_2]\supset\dots \supset\dots [a,b][a1,b1][a2,b2]
由于后一个区间长度是前一个区间的一半,通过递归公式求解出区间长度的通项公式
b k − a k = b − a 2 k b_k-a_k=\frac{b-a}{2^k} bkak=2kba
k → ∞ k\to \infty k时, ∣ ∣ b k − a k ∣ ∣ → 0 ||b_k-a_k||\to0 ∣∣bkak∣∣0,此时序列 { a k } , { b k } , { x k } → x ∗ \{a_k\},\{b_k\},\{x^k\} \to x^* {ak},{bk},{xk}x,其中
x ∗ = a k + b k 2 x^*=\frac{a_k+b_k}{2} x=2ak+bk
由于方程根和中点间的距离真包含于 [ a k , b k ] [a_k,b_k] [ak,bk],故收敛速度
0 ≤ ∣ x ∗ − x k ∣ ≤ ( b k − a k ) / 2 = ( b − a ) / 2 k + 1 0\le|x^*-x_k|\le(b_k-a_k)/2=(b-a)/2^{k+1} 0xxk(bkak)/2=(ba)/2k+1
k → ∞ k\to \infty k时,利用夹逼定理
lim ⁡ k → ∞ 0 ≤ lim ⁡ k → ∞ ∣ x ∗ − x k ∣ ≤ lim ⁡ k → ∞ ( b − a ) / 2 k + 1 = 0 \mathop {\lim }\limits_{k\to \infty}0 \le \mathop {\lim }\limits_{k\to \infty}|x^*-x_k|\le\mathop {\lim }\limits_{k\to \infty}(b-a)/2^{k+1}=0 klim0klimxxkklim(ba)/2k+1=0
故有 x k → x ∗ x^k\to x^* xkx。给定终止条件 ε \varepsilon ε,当
( b − a ) / 2 k + 1 < ε (b-a)/2^{k+1}<\varepsilon (ba)/2k+1<ε
时,可求出满足精度 ε \varepsilon ε的最少二分次数 k k k


2 二分法实现

求解:
f ( x ) = 2 x + x − 2 f(x)=2^x+x-2 f(x)=2x+x2

function[xstar,index,it] = bisect(fun,a,b,ep)
% 非线性方程二分法
% fun为目标函数
% a,b为初始区间
% ep为精确度,当(b-a)/2<ep循环结束,迭代失败输出两端点函数值
% index指标变量,index = 1,迭代成功,index  = 0表明初始区间不是有根区间
% it迭代次数
if nargin < 4ep = 1e-5;
end
fa = feval(fun,a); %计算a处的函数值
fb = feval(fun,b); %计算b处的函数值
if fa*fb>0xstar = [fa,fb];index = 0;it = 0;return
end
k = 0;
while abs(b-a)/2 >= epx = (a+b)/2;fx = feval(fun,x);if fx*fa<0b = x;fb = fx;elsea = x;fa = fx;endk = k +1;
end
xstar = (a+b)/2;index = 1;it = k
%具体函数
function f = fun1(x)
%测试函数
f = 2^x+x-2;  %任意可改
endformat long
[xstar,index,it] = bisect(@fun1,0,2,0.0000001)

xstar = 0.543000400066376

index = 1

it = 24


-END-

参考文献

曾繁慧. 数值分析[M]. 中国矿业大学出版社,2009

相关文章:

非线性方程二分法

非线性方程二分法 优点&#xff1a;算法直观、简单、总能保证收敛&#xff1b;局限&#xff1a;收敛速度慢、一般不单独用它求根&#xff0c;仅为了获取根的粗略近似 文章目录 非线性方程二分法[toc]1 二分法基本思想2 二分法实现 1 二分法基本思想 设 f ( x ) f(x) f(x)在 [ …...

H3C防火墙单机旁路部署(网关在防火墙)

防火墙旁路部署在核心交换机上&#xff0c;内网有三个网段vlan 10&#xff1a;172.16.10.1/24、vlan 20&#xff1a;172.16.20.1/24、vlan30&#xff1a;172.16.30.1。要求内网网关在防火墙设备上&#xff0c;由防火墙作为DHCP服务器给终端下发地址&#xff0c;同时由防火墙来控…...

基于密度的无线传感器网络聚类算法的博弈分析(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 提高能源效率是无线传感器网络面临的关键挑战之一&#xff0c;无线传感器网络日益普遍。由于节点&#xff08;传感器&#xff…...

宕机了?!DolphinScheduler 高可用和 Failover 机制关键时刻保命

高可用性是 Apache DolphinScheduler 的特性之一。它通过冗余来避免单点问题&#xff0c;所有组件天然支持横向扩容&#xff1b;但仅仅保证了冗余还不够&#xff0c;当系统中有节点宕机时&#xff0c;还需要有故障转移机制能够自动将宕机节点正在处理的工作转移到新节点上执行&…...

try(){}用法try-with-resources、try-catch-finally

属于Java7的新特性。 经常会用try-catch来捕获有可能抛出异常的代码。如果其中还涉及到资源的使用的话&#xff0c;最后在finally块中显示的释放掉有可能被占用的资源。 但是如果资源类已经实现了AutoCloseable这个接口的话&#xff0c;可以在try()括号中可以写操作资源的语句(…...

常见Http错误码学习

​ 常见 http 错误码 服务器巡检时比较常见的 http 错误码 400 Bad Request408 Request Timeout499 client has closed connection502 Bad Gateway504 Gateway Timeout 这些错误码反映了服务器什么样的状态&#xff0c;仅看字面意思还不太容易理解&#xff0c;就动手做个试验…...

qemu-基础篇——ARM 链接过程分析(六)

文章目录 ARM 链接过程分析源文件global_bss_file.cglobal_data_fle.cglobal_function_file.cglobal_rodata_file.cmain.c 链接文件 link.lds编译命令及反汇编命令解析 .o 文件global_bss_file.oglobal_data_fle.oglobal_function_file.oglobal_rodata_file.omain.o 链接观察链…...

Java企业工程项目管理系统+spring cloud 系统管理+java 系统设置+二次开发

工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff1a;实现对数据字典标签的增删改查操作 2、编码管理&#xff1a;实现对系统编码的增删改查操作 3、用户管理&#xff1a;管理和查看用户角色 4、菜单管理&#xff1a;实现对系统菜单的增删改查操…...

Eureka与Zookeeper的区别

著名的CAP 理论指出&#xff0c;一个分布式系统不可能同时满足 C( 一致性 ) 、 A( 可用性 ) 和 P( 分区容错性 ) 。 由于分区容错性在是分布式系统中必须要保证的&#xff0c;因此我们只能在 A 和 C 之间进行权衡&#xff0c;在此 Zookeeper 保证的是 CP, 而 Eureka 则是 AP…...

顺序表和链表的各种代码实现

一、线性表 在日常生活中&#xff0c;线性表的例子比比皆是。例如&#xff0c;26个英文字母的字母表&#xff08;A,B,C,……&#xff0c;Z&#xff09;是一个线性表&#xff0c;表中的数据元素式单个字母。在稍复杂的线性表中&#xff0c;一个数据元素可以包含若干个数据项。例…...

C# 介绍三种不同组件创建PDF文档的方式

1 c# 数据保存为PDF&#xff08;一&#xff09; &#xff08;spire pdf篇&#xff09; 2 c# 数据保存为PDF&#xff08;二&#xff09; &#xff08;Aspose pdf篇&#xff09; 3 c# 数据保存为PDF&#xff08;三&#xff09; &#xff08;PdfSharp篇&#xff09; 组件名称 绘制…...

极简面试题 --- Redis

什么是 Redis&#xff1f; Redis 是一个基于内存的键值存储系统&#xff0c;也被称为数据结构服务器。它支持多种数据结构&#xff0c;例如字符串、哈希表、列表、集合和有序集合&#xff0c;并且可以在内存中快速读写。 Redis 的优势有哪些&#xff1f; 快速&#xff1a;由…...

可视化图表API格式要求有哪些?Sugar BI详细代码示例(4)

Sugar BI中的每个图表可以对应一个数据 API&#xff0c;用户浏览报表时&#xff0c;选定一定的过滤条件&#xff0c;点击「查询」按钮将会通过 API 拉取相应的数据&#xff1b;前面说过&#xff0c;为了确保用户数据的安全性&#xff0c;Sugar BI上的所有数据请求都在Sugar BI的…...

学习vue(可与知乎合并)

一&#xff1a;组件及交互 1、什么是组件&#xff1f; 组件是可复用的 Vue 实例&#xff0c;且带有一个名字&#xff1a;在这个例子中是 。我们可以在一个通过 new Vue 创建的 Vue 根实例中&#xff0c;把这个组件作为自定义元素来使用&#xff1a; 声明组件 // 定义一个名…...

【UEFI实战】Linux下如何解析ACPI表

本文介绍如何在Linux下查看ACPI表示。使用的系统是Ubuntu18.04&#xff1a; Linux home 4.15.0-36-generic #39-Ubuntu SMP Mon Sep 24 16:19:09 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux 可以在如下的目录看到ACPI的基本信息&#xff1a; 但是默认的表都是不可以直接查看的&…...

Java-Redis持久化之RDB操作

Java-Redis持久化之RDB操作 1.为什么redis需要持久化&#xff1f;2.什么是RDB操作?3.请你用自己的话讲下RDB的过程?4.如何恢复rdb文件? 1.为什么redis需要持久化&#xff1f; Redis是内存数据库&#xff0c;如果不将内存数据库保存到磁盘&#xff0c;那么服务器进程退出&am…...

信号signal编程测试

信号会打断系统调用&#xff0c;慎用&#xff0c;就是用的时候测一测。 下面是信号的基础测试 信号 信号&#xff08;signal&#xff09;机制是UNIX系统中最为古老的进程之间的通信机制。它用于在一个或多个进程之间传递异步信号。信号可以由各种异步事件产生&#xff0c;例如…...

Linux学习记录——이십삼 进程信号(2)

文章目录 1、可重入函数2、volatile关键字3、如何理解编译器的优化4、SIGCHLD信号 1、可重入函数 两个执行流都执行一个函数时&#xff0c;这个函数就被重入了。比如同一个函数insert&#xff0c;在main中执行时&#xff0c;这个进程时间片到了&#xff0c;嵌入了内核&#xf…...

Revit中如何创建曲面嵌板及一键成板

一、Revit中如何创建曲面嵌板 在我们的绘图过程中可能会遇见一些曲面形状&#xff0c;而我们的常规嵌板没办法满足我们绘制的要求&#xff0c;我们今天学习如何在revit中绘制曲面嵌板。 1.新建“自适应公制常规模型”族&#xff0c;创建4个点图元并为其使用自适应。 2.在相同的…...

STM32F4_DHT11数字温湿度传感器

目录 前言 1. DHT11简介 2. DHT11数据结构 3. DHT11的传输时序 3.1 DHT11开始发送数据流程 3.2 主机复位信号和DHT11响应信号 3.3 数字 “0” 信号表示方法 3.4 数字 “1” 信号表示方法 4. 硬件分析 5. 实验程序详解 5.1 main.c 5.2 DHT11.c 5.3 DHT11.h 前言 DH…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时&#xff0c;拉取并启动容器后&#xff0c;有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致&#xff0c;包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因&#xff0c;并提供解决方案。 一、确认MySQL容器的运行状态 …...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的&#xff0c;需要先安…...

jdbc查询mysql数据库时,出现id顺序错误的情况

我在repository中的查询语句如下所示&#xff0c;即传入一个List<intager>的数据&#xff0c;返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致&#xff0c;会导致返回的id是从小到大排列的&#xff0c;但我不希望这样。 Query("SELECT NEW com…...