C#,数值计算,用割线法(Secant Method)求方程根的算法与源代码

本文主要是介绍C#,数值计算,用割线法(Secant Method)求方程根的算法与源代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 割线法

割线法用于求方程 f(x) = 0 的根。它是从根的两个不同估计 x1 和 x2 开始的。这是一个迭代过程,包括对根的线性插值。如果两个中间值之间的差值小于收敛因子,则迭代停止。

亦称弦截法,又称线性插值法.一种迭代法.指用割线近似曲线求方程根的2步迭代法.此法用通过点(xk,f(xk))及(xk-1,f(xk-1))的割线

近似曲线y=f(x),用割线的根作为方程根的新近似xk+1,从而得到方程求根的割线法迭代程序

( k=1,2,…,n),

其中x0,x1为初始近似.若f(x)在根x*的邻域内有二阶连续导数,且f′(x*)≠0,则当x0,x1在x*邻域内时,割线法收敛于x*,其收敛阶为

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;

        public static bool Secant(double x1, double x2, out double x0, double Epsilon)
        {
            int n = 0;
            double xm;
            
            x0 = x1;
            if (funx(x1) * funx(x2) < 0)
            {
                do
                {
                    x0 = (x1 * funx(x2) - x2 * funx(x1))  / (funx(x2) - funx(x1));

                    double c = funx(x1) * funx(x0);

                    x1 = x2;
                    x2 = x0;

                    n++;

                    if (Math.Abs(c) < float.Epsilon)
                    {
                        break;
                    }
                    xm = (x1 * funx(x2) - x2 * funx(x1))  / (funx(x2) - funx(x1));

                } while (Math.Abs(xm - x0) >= Epsilon);
                return true;
            }
            else
            {
                return false;
            }
        }
    }
}

3 源代码

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;public static bool Secant(double x1, double x2, out double x0, double Epsilon){int n = 0;double xm;x0 = x1;if (funx(x1) * funx(x2) < 0){do{x0 = (x1 * funx(x2) - x2 * funx(x1))  / (funx(x2) - funx(x1));double c = funx(x1) * funx(x0);x1 = x2;x2 = x0;n++;if (Math.Abs(c) < float.Epsilon){break;}xm = (x1 * funx(x2) - x2 * funx(x1))  / (funx(x2) - funx(x1));} while (Math.Abs(xm - x0) >= Epsilon);return true;}else{return false;}}}
}

这篇关于C#,数值计算,用割线法(Secant Method)求方程根的算法与源代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/797714

相关文章

C#监听txt文档获取新数据方式

《C#监听txt文档获取新数据方式》文章介绍通过监听txt文件获取最新数据,并实现开机自启动、禁用窗口关闭按钮、阻止Ctrl+C中断及防止程序退出等功能,代码整合于主函数中,供参考学习... 目录前言一、监听txt文档增加数据二、其他功能1. 设置开机自启动2. 禁止控制台窗口关闭按钮3. 阻止Ctrl +

C#解析JSON数据全攻略指南

《C#解析JSON数据全攻略指南》这篇文章主要为大家详细介绍了使用C#解析JSON数据全攻略指南,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、为什么jsON是C#开发必修课?二、四步搞定网络JSON数据1. 获取数据 - HttpClient最佳实践2. 动态解析 - 快速

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

C#读写文本文件的多种方式详解

《C#读写文本文件的多种方式详解》这篇文章主要为大家详细介绍了C#中各种常用的文件读写方式,包括文本文件,二进制文件、CSV文件、JSON文件等,有需要的小伙伴可以参考一下... 目录一、文本文件读写1. 使用 File 类的静态方法2. 使用 StreamReader 和 StreamWriter二、二进

C#中Guid类使用小结

《C#中Guid类使用小结》本文主要介绍了C#中Guid类用于生成和操作128位的唯一标识符,用于数据库主键及分布式系统,支持通过NewGuid、Parse等方法生成,感兴趣的可以了解一下... 目录前言一、什么是 Guid二、生成 Guid1. 使用 Guid.NewGuid() 方法2. 从字符串创建

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

C#如何去掉文件夹或文件名非法字符

《C#如何去掉文件夹或文件名非法字符》:本文主要介绍C#如何去掉文件夹或文件名非法字符的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#去掉文件夹或文件名非法字符net类库提供了非法字符的数组这里还有个小窍门总结C#去掉文件夹或文件名非法字符实现有输入字

C#之List集合去重复对象的实现方法

《C#之List集合去重复对象的实现方法》:本文主要介绍C#之List集合去重复对象的实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C# List集合去重复对象方法1、测试数据2、测试数据3、知识点补充总结C# List集合去重复对象方法1、测试数据