路由器做网站服务器吗/跨境电商培训

路由器做网站服务器吗,跨境电商培训,云教育科技网站建设,运维为什么没人干在实际开发中会遇到一些工程问题,需要求解复杂函数方程的问题。使用传统的数学方法比较难以处理。本文将使用二分法不断获取一个函数的近似解。 二分法:其基本思想是利用函数在某个区间内的连续性,通过不断缩小区间范围来逼近方程的解。 算法…

在实际开发中会遇到一些工程问题,需要求解复杂函数方程的问题。使用传统的数学方法比较难以处理。本文将使用二分法不断获取一个函数的近似解

二分法:其基本思想是利用函数在某个区间内的连续性,通过不断缩小区间范围来逼近方程的解。

算法前置要求

在使用二分法求解函数值近似解之前,需要满足以下几个前置条件:

  • 函数连续性
    为了确保在区间内存在一个近似解,函数 f(x)必须是连续的。否则,可能会因为函数不连续导致二分法无法收敛到正确的解。

  • 单调性判断
    在应用时需要确保函数在所选区间内为单调函数。二分法在求解过程中的边界更新依赖于函数的单调性判断。通过比较区间端点的函数值来决定是否为单调递增或者递减。 如果函数整体不是单调的,但是在某区间内单调递增或者单调递减,那么也可以求区间内的结果。

  • 初始区间覆盖目标值
    要求区间 [lowerBound,upperBound]的值域内必须包含目标值 target 的对应函数值。

以函数示例 f(x) = x^3 - 4x^2 + 6x - 24,同时满足3个条件:   连续性 && 单调性 && 起始位置覆盖区间值

算法思路

整个算法的核心步骤如下:

  1. 区间初始化
    首先,在已知的区间 [lowerBound,upperBound]内,假设函数 f(x)在此区间内是单调连续的,并且存在满足条件的解。

  2. 迭代过程

    • 计算当前区间的中点 mid。
    • 判断当前区间长度是否小于 x 方向的容忍误差 toleranceX,如果满足条件,则停止迭代。
    • 同时,计算 f(mid) 与目标值 target 的差距,如果差距小于函数值的容忍误差 toleranceResult,则认为找到近似解。
    • 判断函数的单调性
      • 单调递增函数:如果 f(mid)小于 target,则将lowerBound更新为 mid;如果f(mid)大于 target, 则将upperBound更新为 mid。
      • 单调递减函:如果 f(mid)大于 target,则将lowerBound更新为 mid;如果f(mid)小于 target, 则将upperBound更新为 mid。
  3. 结果判断
    当迭代结束后,比较区间两端点以及中点的函数值误差,选择误差最小的点作为最终结果返回。

代码实现与详细注释

下面是 Swift 语言实现的完整代码,函数 f(x) 可以替换成其他单调连续函数:


import Foundationclass YCCloseToResult: NSObject {// 定义函数 f(x) = x^3 - 4x^2 + 6x - 24static func f(x: Double) -> Double {return pow(x, 3) - 4 * pow(x, 2) + 6 * x - 24}// 二分法:在区间 [lowerBound, upperBound] 内寻找使得 f(x) 接近 target 的 x 值/// - Parameters:///   - target: 目标函数值,即希望 f(x) 接近的数值。///   - lowerBound: 搜索区间的下界,表示在该值以上开始寻找满足条件的 x 值。///   - upperBound: 搜索区间的上界,表示在该值以下开始寻找满足条件的 x 值。///   - toleranceX: x 方向的容忍误差。当上下界之差小于此值时,认为 x 的精度已经满足要求,从而停止迭代。///   - toleranceResult: 函数值的容忍误差。当 f(x) 与 target 的差值小于此值时,认为已经找到了足够精确的近似解,从而停止迭代。/// - Returns: 返回使 f(x) 接近 target 的 x 值;如果在给定区间内没有找到合适的解,则返回 nil。static func bisectionMethod(target: Double, lowerBound: Double, upperBound: Double, toleranceX: Double = 0.01, toleranceResult: Double = 0.01) -> Double? {var lower = lowerBound   // 区间下界var upper = upperBound   // 区间上界var mid: Double = 0var loopCount = 0        // 记录循环次数var fMid: Double = 0     // 中点对应的 f(x) 值var fUpper: Double = self.f(x: upper)   // 上界对应的 f(x) 值var fLower: Double = self.f(x: lower)   // 下界对应的 f(x) 值if target > max(fLower, fUpper) || target < min(fLower, fUpper) {print("目标值不在给定区间内")return nil}// 开始迭代while true {loopCount += 1mid = (lower + upper) / 2  // 计算中点// 如果区间长度小于 x 的容忍误差,则认为 x 精度达到要求if (upper - lower) <= toleranceX {print("x误差达到精度要求")break}// 计算当前下界、中点和上界的函数值fMid = self.f(x: mid)fUpper = self.f(x: upper)fLower = self.f(x: lower)print("循环次数: \(loopCount); f(\(lower))=\(fLower), f(\(mid))=\(fMid), f(\(upper))=\(fUpper)")// 如果中点对应的函数值与目标值之间的误差满足要求,则退出循环if abs(fMid - target) < toleranceResult {print("结果达到精度要求")break} else {// 根据函数单调性判断:这里假设函数在区间内单调if fLower < fUpper {  // 单调递增函数// 如果中点的函数值小于目标值,则更新下界if fMid < target {lower = mid} else { // 否则更新上界upper = mid}} else {  // 单调递减函数if fMid < target {upper = mid} else {lower = mid}}}}print("总循环次数: \(loopCount)")// 在 lower, mid, upper 中选择哪个点的函数值最接近 targetlet absLower = abs(fLower - target)let absMid = abs(fMid - target)let absUpper = abs(fUpper - target)var result: Double = 0if absLower < absMid, absLower < absUpper {result = lower} else if absMid < absLower, absMid < absUpper {result = mid} else {result = upper}return result}
}// 测试函数
extension YCCloseToResult {// 示例入口函数,用于测试二分法查找static func test() {// 目标函数值let target = 10.13// x 的容忍误差:当上下界的差值小于这个值时停止迭代let toleranceX: Double = 0.01// 函数值的容忍误差:当 f(x) 与 target 的差值小于这个值时认为已找到近似解let toleranceResult: Double = 0.001// 调用二分法函数,寻找使 f(x) 接近 target 的 x 值if let result = self.bisectionMethod(target: target, lowerBound: -100, upperBound: 100, toleranceX: toleranceX, toleranceResult: toleranceResult) {print("\(target) 的近似解是 \(result)")// 分别打印 result 左侧、处于和右侧附近的 x 对应的函数信息self.showInfo(result: result-toleranceX, target: target)self.showInfo(result: result, target: target)self.showInfo(result: result+toleranceX, target: target)} else {print("在给定的范围内没有找到解。")}}// 打印函数 f(x) 的值以及与目标值 target 的误差static func showInfo(result: Double, target: Double) {let fRes = self.f(x: result)let absRes = abs(fRes - target)print("f(\(result)) 的值是 \(fRes), 误差为 \(absRes)")}
}

运行结果: 通过不断的二分接近,最终求得结果

10.13 的近似解是 4.401206970214844

f(4.401206970214844) 的值是 10.178870703912295, 和目标差值为 0.048870703912294644

二分查找的时间复杂度为O(logN),效率还不错。

使用Python画的函数图。

import matplotlib.pyplot as plt
import numpy as np# 定义函数 f(x)
def f(x):return x**3 - 4*x**2 + 6*x - 24# 生成 x 值
x = np.linspace(-10000, 10000, 10)
# 计算对应的 y 值
y = f(x)# 创建图形
plt.figure(figsize=(10, 6))
plt.plot(x, y, label=r'$f(x) = x^3 - 4x^2 + 6x - 24$')# 添加标题和标签
plt.title('Plot of $f(x) = x^3 - 4x^2 + 6x - 24$')
plt.xlabel('x')
plt.ylabel('f(x)')# 添加网格
plt.grid(True)# 显示图例
plt.legend()# 显示图形
plt.show()

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

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

相关文章

stanley 路径跟踪控制算法

文章目录 写在前面的话算法思路核心代码1 路径发布2 获取车子当前位置3 预瞄路径点4 计算航向误差5 计算横向误差 完整控制代码演示视频 写在前面的话 轨迹跟踪 Trajectory Tracking 和 路径跟踪 Path Following 是机器人控制和自动驾驶领域中的两个核心概念&#xff0c;尽管它…

Qt中通过QLabel实时显示图像

Qt中的QLabel控件用于显示文本或图像&#xff0c;不提供用户交互功能。以下测试代码用于从内置摄像头获取图像并实时显示&#xff1a; Widgets_Test.h&#xff1a; class Widgets_Test : public QMainWindow {Q_OBJECTpublic:Widgets_Test(QWidget *parent nullptr);~Widgets…

pyQt学习笔记——Qt资源文件(.qrc)的创建与使用

Qt资源文件&#xff08;.qrc&#xff09;的创建与使用 1. 选择打开资源2. 创建新资源3. 添加资源文件夹4. 选择要加载的图片文件5. 编译resource.qrc文件6. 替换PySlide6为PyQt57. 其他说明 1. 选择打开资源 在Qt项目中&#xff0c;可以通过windowIcon点击选择打开资源。 2. 创…

光电效应及普朗克常数的测定数据处理 Python实现

内容仅供参考&#xff0c;如有错误&#xff0c;欢迎指正&#xff0c;如有疑问&#xff0c;欢迎交流。 因为我不会Excel所以只能用Python来处理 祝大家早日摆脱物理实验的苦海 用到的一些方法 PCHIP &#xff08;分段三次埃尔米特插值多项式&#xff09; 因为实验时记录的数…

2025最新3个wordpress好用的主题

红色大气的wordpress企业主题&#xff0c;适合服务行业的公司搭建企业官方网站使用。是一款专为中小企业和个人开发者设计的WordPress主题&#xff0c;旨在提供专业的网站构建解决方案。 通过此WordPress主题&#xff0c;用户可以轻松创建和维护一个专业的企业网站&#xff0c…

OLLVM 增加 CC++ 字符串加密功能

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 前言 当我们如果没有对字符串进行加密&#xff0c;使用 IDA 反汇编一下 so 可以看到 C 代码中的字符串就直接暴露了。 字符串加密原理 sobf.c #include <…

自动化逆向框架使用(Objection+Radare2)

1. 工具链架构与核心优势 1.1 动静结合逆向体系 graph LR A[动态分析] -->|Objection实时Hook| B[关键点定位] B --> C[行为数据捕获] D[静态分析] -->|Radare2深度解析| E[控制流重建] E --> F[漏洞模式识别] B --> F C --> F 组合优势对比&…

Docker-Volume数据卷详讲

Docker数据卷-Volume 一&#xff1a;Volume是什么&#xff0c;用来做什么的 当删除docker容器时&#xff0c;容器内部的文件就会跟随容器所销毁&#xff0c;在生产环境中我们需要将数据持久化保存&#xff0c;就催生了将容器内部的数据保存在宿主机的需求&#xff0c;volume …

单片机和微控制器知识汇总——《器件手册--单片机、数字信号处理器和可编程逻辑器件》

目录 四、单片机和微控制器 4.1 单片机(MCU/MPU/SOC) 一、定义 二、主要特点 三、工作原理 四、主要类型 五、应用领域 六、选型与设计注意事项 七、发展趋势 4.2 数字信号处理器(DSP/DSC) ​编辑​编辑 一、定义 二、工作原理 三、结构特点 四、应用领域 五、选型与设计注…

高数下---8.1平面与直线

目录 平面的确定 直线的确定 若要求某一直线或平面就根据要素来求。 例题 平面中的特殊情况 平面中的解题思路 直线的解题思路 平面的确定 两要素 一 一点 二 倾斜角 即法向量 点法式 可化为一般式 Ax By Cz D 0; (A,B,C) 即法向量&#xff1b; 改变D 即…

CMS迁移中SEO优化整合步骤详解

内容概要 在CMS迁移过程中&#xff0c;系统化的规划与执行是保障SEO排名稳定性的核心。首先需明确迁移流程的关键阶段&#xff0c;包括数据备份、URL适配、元数据同步及安全配置等环节。其中&#xff0c;数据备份不仅需覆盖原始数据库与静态资源&#xff0c;还需验证备份文件的…

Python:进程间的通信,进程的操作队列

进程间的队列&#xff1a; 队列的基本操作&#xff1a; 入队&#xff1a;将数据放到队列尾部 出队&#xff1a;从队列的头部取出一个元素 maxsize&#xff1a;队列中能存放数据个数的上限(整数)&#xff0c;一旦达到上限插入会导致阻塞&#xff0c;直到队列中的数据被消费掉 …

【C++初阶】--- 类与对象(中)

1.类的默认成员函数 默认成员函数就是⽤⼾没有显式实现&#xff0c;编译器会⾃动⽣成的成员函数称为默认成员函数。⼀个类&#xff0c;我们不写的情况下编译器会默认⽣成以下6个默认成员函数&#xff0c;我们主要需要掌握前4个&#xff0c;后两个了解以下即可&#xff0c;默认…

python处理音频相关的库

1 音频信号采集与播放 pyaudio import sys import pyaudio import wave import timeCHUNK 1024 FORMAT pyaudio.paInt16 CHANNELS 1#仅支持单声道 RATE 16000 RECORD_SECONDS 3#更改录音时长#录音函数&#xff0c;生成wav文件 def record(file_name):try:os.close(file_…

YoloV8训练和平精英人物检测模型

概述 和平精英人物检测&#xff0c;可以识别游戏中所有人物角色&#xff0c;并通过绘制框将人物选中&#xff0c;训练的模型仅仅具有识别功能&#xff0c;可以识别游戏中的视频、图片等文件&#xff0c;搭配Autox.js可以推理&#xff0c;实现实时绘制&#xff0c;但是对手机性…

智能汽车图像及视频处理方案,支持视频实时拍摄特效能力

在智能汽车日新月异的今天&#xff0c;美摄科技作为智能汽车图像及视频处理领域的先行者&#xff0c;凭借其卓越的技术实力和前瞻性的设计理念&#xff0c;为全球智能汽车制造商带来了一场视觉盛宴的革新。美摄科技推出智能汽车图像及视频处理方案&#xff0c;一个集高效性、智…

rosbag|ROS中.bag数据包转换为matlab中.mat数据类型

代码见代码 msg_dict中设置自定义消息类型 test_config中设置需要记录的具体的值 test_config中topic_name以及message_type照搬plotjuggler打开时的参数 最后生成.mat文件在matlab中进行使用

JS 对象转数组,数组转对象

数据格式 objMap : {apiP: 8000, sder: true, host: "1.111", wPort: "1335" }要求&#xff1a;将 objMap 转化为 数组 const equipArray Object.keys(objMap ).map(key > {return {name: key,value: objMap [key]}打印结果 数组转为对象 let equipAr…

vue - [Vue warn]: Duplicate keys detected: ‘0‘. This may cause an update error.

问题描述&#xff1a; vue项目中&#xff0c;对表单数组赋值时&#xff0c;控制台抛出警告&#xff1a; 问题代码&#xff1a; 问题分析&#xff1a; 1、Vue 要求每个虚拟 DOM 节点必须有唯一的 key。该警告信息通常出现在使用v-for循环的场景中&#xff0c;多个同级节点使用…

DeepSeek V3–0324 vs DeepSeek-V3, 排名最高非推理模型

最近DeepSeek V3 升级。 本文将带您了解该模型的核心特性、基准表现,以及如何通过Hugging Face推理终端和OpenRouter平台亲身体验。我们还将通过创意生成与逻辑分析两大测试案例,直观展示其卓越性能。 DeepSeek-V3-0324 2025年3月24日,深度求索(DeepSeek)AI正式发布了V3…