Chinaunix首页 | 论坛 | 博客
  • 博客访问: 234349
  • 博文数量: 127
  • 博客积分: 34
  • 博客等级: 民兵
  • 技术积分: 655
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-03 10:53
文章分类

全部博文(127)

文章存档

2013年(19)

2012年(108)

分类:

2012-11-12 22:57:12


    在做程序过程当中,我们也不难看到经常会涉及到关于用程序实现数学方面的有趣的问题。那么呢本文章将简单介绍一下如何通过C++编程用二分法求方程近似解的问题,当然,这个只是个人觉得有点意思的问题,没有兴趣的朋友就略过吧。

    二分法求方程近似解:求方程f(x) = x^3 + x^2 - 1 = 0在[0,1]上的近似解,精确度为0.01。

    算法分析:二分法求方程近似解的基本思想是将方程的有解区间平分为两个小区间,然后判断解在哪个小区间;继续把有解的区间一分为二进行判断,如此周而复始,直到求出满足精确要求的近似解。

    二分法求方程近似解的计量泵算法步骤:

    ⑴确定区间[a,b],验证f(a).f(b) < 0,给定精确度e

    ⑵求区间(a, b)的中点mid

    ⑶计算f(mid)

    若f(mid) = 0,则mid就是函数的零点

    若f(a).f(mid) < 0,则令b = mid(此时零点a < x0 < mid)

    若f(mid).f(b) < 0,则令a = mid(此时零点mid < x0 < b)

    ⑷判断是否达到精确度e:即若|a-b| < e,则得到零点近似值a(或b);否则重复⑵-⑷。

    代码如下:

    double F(double a, double b, double c, double d, double x)//函数表达式

    {

    return (((a * x + b) * x) * x + d) / c;

    }

    double Function(double a, double b, double c, double d, double low, double high, double e)

    {

    double mid = (low + high) / 2;

    if (F(a, b, c, d, mid) == 0)

    return mid;

    while ((high-low) >= e)

    {

    mid = (low + high) / 2;

    if (F(a, b, c, d, mid) == 0)

    return mid;

    if (F(a, b, c, d, low)*F(a, b, c, d, mid) < 0)

    high = mid;

    else

    low = mid;

    }

    return low;

    }

正文到此结束

关键词:电阀 应用 旋盖机方程 二分法

计量泵相关信息请访问



阅读(2850) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~