在计算方法里有一种求一元非线性方程的解法,叫做二分法。

简单介绍如下:

函数F(x)在区间[a,b] 上连续,假定在区间内有唯一实根,计为x*

二分法的思想为:首先确定有根区间,将区间二等分,通过判断F(x)的符号,逐步将有根区间缩小,直至有根区间足够小,便可求出满足精度要求的近似根。

然后给出一例题和C#的编程解法:

//用二分法求方程f(x)=x^4-x-10.27=0在(1,2)上的根。精确到10^(-2)usingSystem;

classDichotomy

{

staticvoidMain()

{

intk=-1;//记录循环索引doublea=1;//下限doubleb=2;//上限doublex=0;//所求的根        Console.Write("k   a \t         b \t      x \t   F(x) \t       a-b\n");

//第一次计算x=(a+b)/2;

        k++;

        Console.Write("{0,-4}{1,-13}{2,-13}{3,-13}{4,-20}{5}\n",k,a,b,x,F(x),a-b);

while(true)

{

            k++;

doublef=F(x);

if(f<0)

{

                a=x;

            }elseif(f>0)

{

                b=x;

            }            x=(a+b)/2;

if((b-a)<0.01)

{

                Console.Write("{0,-4}{1,-13}{2,-13}{3,-13}{4,-20}{5}\n",k,a,b,x,f,a-b);

break;

            }

            Console.Write("{0,-4}{1,-13}{2,-13}{3,-13}{4,-20}{5}\n",k,a,b,x,f,a-b);

        }        Console.ReadLine();

    }

privatestaticdoubleF(doublex)

{

returnMath.Pow(x,4)-x-10.27;

    }}

输出结果为:

k   a            b            x            F(x)                a-b

0   1            2            1.5          -6.7075             -1

1   1.5          2            1.75         -6.7075             -0.5

2   1.75         2            1.875        -2.64109375         -0.25

3   1.75         1.875        1.8125       0.214619140625      -0.125

4   1.8125       1.875        1.84375      -1.29024841308594   -0.0625

5   1.84375      1.875        1.859375     -0.557734031677246  -0.03125

6   1.859375     1.875        1.8671875    -0.176621873378753  -0.015625

7   1.859375     1.8671875    1.86328125   0.0177218760550026  -0.0078125

可见b7- a7 约等于0.0078<10^(-2),从而|x*-x7|<=0.5*(b7- a7 )<=0.5*10^(-2),也就是满足题目的精度要求,所以满足要求的根为:x*约等于1.863

二分法求非线性方程组Java_用C#编写二分法解一元非线性方程相关推荐

  1. Matlab 数值计算----二分法求非线性方程组

    bisect.m函数(二分法的实现算法) function[x_star,index,it]=bisect(fun,a,b) %求解非线性计算方程的二分法,其中,fun(x)为需要求根的函数; %a, ...

  2. 求非线性方程组的最小二乘解的广义逆法C实现

    求非线性方程组的最小二乘解的广义逆法 #include "math.h"#include "stdlib.h"#include "6gmiv.c&qu ...

  3. 蒙特卡洛法求非线性方程组

    蒙特卡罗法的概念及应用 蒙特卡洛法 (又称统计试验法)是描述装备运用过程中各种随机现象的基本方法,而且它特别适用于一些解析法难以求解甚至不可能求解的问题,因而在装备效能评估中具有重要地位. 用蒙特卡洛 ...

  4. 复化梯形公式求椭圆周长C语言,C语言编程解线性,非线性方程,龙贝格算法.docx

    C语言编程解线性,非线性方程,龙贝格算法 课程设计课程名称:数值计算B 设计题目:数值计算B课程设计学号:姓名:完成时间: 2015年10月27日题目一:非线性方程求根一.题目假设人口随时间和当时人口 ...

  5. 牛顿拉夫森法 matlab,【原创】牛顿-拉夫森迭代求非线性方程组

    function [xf,fval,iter]=newtmullt(e,x0,es,maxit,varargin) %     written by tubehu %     www.MATLABsk ...

  6. matlab求解不等式方程组解集,matlab求不等式方程组的可行解

    求高手用matlab解一个三元的方程组 我算的你这个解都是无穷大.具体过程如下:第一步:建立M文件函数myf.mfunctionf=myf(x)f(1)=600+x(1)*cos(10)+x(2)*s ...

  7. python牛顿法解非线性方程组_科学网—求解多元非线性方程组F(x)=0的Newton-Raphson方法及其MATLAB实现 - 王福昌的博文...

    科学网对公式支持不太好,在博客园有相同博文 牛顿迭代法可以推广到多元非线性方程组 $boldsymbol{F}(boldsymbol{x})=boldsymbol{0}$的情况,称为牛顿-- 拉夫逊方 ...

  8. 二分法求方程根matlab,matlab用二分法求方程 的正根,要求误差小于0.0005

    matlab编程题:用二分法求方程x^3-3*x-1=0的根 先建立二分法的fun.m文件,代码如下:functionfun(a,b,e)%f是自定义的函数%a为隔根区间左端点,b为隔根区间右端点,e ...

  9. matlab求解非线性常微分方程组,求一道用matlab编程解非线性方程组

    满意答案 a67211123t 2013.05.10 采纳率:53%    等级:12 已帮助:9981人 对于非线性方程组F(X)=0,用fsolve函数求其数值解.fsolve函数的调用格式为: ...

最新文章

  1. 介绍一个效率爆表的数据采集框架
  2. 17.matlab中各种文件的I/O操作2——fopen操作
  3. 沈阳职业计算机学院宿舍几人间,沈阳工学院宿舍怎么样 住宿条件好不好
  4. python3+requests:get、post请求(python get、post)
  5. 微型计算机断电后信息将会丢失,计算机基础知识试题及答案a2
  6. python从文件初始化失败_iOS 6:libpython2.7.a初始化导入错误
  7. Unity2020.2中支持的C#8有什么新特性?
  8. java中osend,如何从java o javafx向windows任务栏发送信息
  9. 数据结构笔记(三)-- 链式实现顺序表
  10. linkbox php,win10 docker-toolsbox 搭建php开发环境
  11. ServiceNow常用角色和分组
  12. linux 之TFTP的使用
  13. ssm仓库管理系统含论文
  14. orc识别 语音识别 云真机 内网穿透快速调研
  15. 三菱FX5U添加新模块
  16. Debian添加开机启动项
  17. java标准差代码实现
  18. 转载 回声消除的总结
  19. linux 代码格式化工具下载,Linux 代码格式化工具 indent
  20. 基于 Hive 构建数据仓库

热门文章

  1. python所有变量更新_python更新全局变量
  2. qt输出中文乱码处理(解决方法)
  3. 商务风格表格的设计与实现
  4. 2021年二月下旬文章导读与开源项目仓库 | scatter-gather DMA,SR-IOV,ARP欺骗,中断,Lockdep,virtio,vhost
  5. Linux虚拟化KVM-Qemu分析(六)之中断虚拟化
  6. 模拟退火法-TSP问题
  7. 现代科技概论_现代科技概论课程:力与运动1
  8. VUE3 Router路由
  9. java讲对象放在常量池的方法_java的常量池里面都放了些神马东西
  10. (三)使用自动编码器进行深度伪造