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

C#,二分法(Bisection Method)求解方程的算法与源代码

1 二分法

二分法是一种分治算法,是一种数学思维。

对于区间[a,b]上连续不断且f(a)·f(b)<0的函数y=f(x),通过不断地把函数f(x)的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫二分法。
 

基本思路:

给定精确度ξ,用二分法求函数f(x)零点近似值的步骤如下:
1 确定区间[a,b],验证f(a)·f(b)<0,给定精确度ξ.
2 求区间(a,b)的中点c.
3 计算f(c).
(1) 若f(c)=0,则c就是函数的零点;
(2) 若f(a)·f(c)<0,则令b=c;
(3) 若f(c)·f(b)<0,则令a=c.
(4) 判断是否达到精确度ξ:即若|a-b|<ξ,则得到零点近似值a(或b),否则重复2-4.
 

2 代码

调用之前,请用委托方法给定需要求解的方程。

这样就可以求解任意的方程而无需修改核心代码。

using System;
using System.Text;
using System.Collections;
using System.Collections.Generic;namespace Legalsoft.Truffer.Algorithm
{public delegate double delegateFunctionX(double x);public static partial class Algorithm_Gallery{public static delegateFunctionX funx = null;/// <summary>/// 二分法解方程的算法/// </summary>/// <param name="a"></param>/// <param name="b"></param>/// <param name="epsilon"></param>/// <returns></returns>public static double Bisection(double a, double b, double epsilon = 0.01){if (funx(a) * funx(b) >= 0){return 0.0;}double c = a;while ((b - a) >= epsilon){c = (a + b) / 2;if (funx(c) == 0.0){break;}else if (funx(c) * funx(a) < 0){b = c;}else{a = c;}}return c;}}
}

POWER BY TRUFFER.CN
BY 315SOFT.COM

相关文章:

  • 寿司转盘,用 C 编码
  • FPGA中的模块调用与例化
  • 云计算基础-存储基础
  • 【OpenAI Sora】 最强文生视频怎么用-新手小白必看教程
  • 类和结构体的区别
  • MATLAB|基于改进二进制粒子群算法的含需求响应机组组合问题研究(含文献和源码)
  • AI在职场变革中的引领作用:从本土实践看智能技术带来的效率跃升与行业革新
  • YML 静态类获取值
  • php基础学习之可变函数(web渗透测试关键字绕过rce和回调函数)
  • 【leetcode刷题之路】面试经典150题(1)——数组/字符串
  • 树和二叉树的基本知识
  • UPC训练赛二十/20240217
  • 关于umi ui图标未显示问题
  • HarmonyOS—状态管理概述
  • Linux第58步_备份busybox生成rootfs根文件系统
  • ----------
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • java概述
  • Node 版本管理
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • Python学习笔记 字符串拼接
  • ReactNative开发常用的三方模块
  • ubuntu 下nginx安装 并支持https协议
  • Vue 2.3、2.4 知识点小结
  • vuex 笔记整理
  • Windows Containers 大冒险: 容器网络
  • Zepto.js源码学习之二
  • 高程读书笔记 第六章 面向对象程序设计
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 简析gRPC client 连接管理
  • 聊聊flink的BlobWriter
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 主流的CSS水平和垂直居中技术大全
  • ​ ​Redis(五)主从复制:主从模式介绍、配置、拓扑(一主一从结构、一主多从结构、树形主从结构)、原理(复制过程、​​​​​​​数据同步psync)、总结
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​人工智能书单(数学基础篇)
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (四)linux文件内容查看
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转载)虚函数剖析
  • .java 指数平滑_转载:二次指数平滑法求预测值的Java代码
  • .NET Core IdentityServer4实战-开篇介绍与规划
  • .NET delegate 委托 、 Event 事件
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • /etc/shadow字段详解