24小时热门版块排行榜    

查看: 932  |  回复: 5

shao0722

金虫 (职业作家)

[求助] 关于二分法 已有3人参与

请教一下大家:

我的程序大概是这样:
      对一个某个变量第一个节点,先估一个值,然后按照这个值使用循环,一直算到最后一个节点,最后一个节点需满足某个条件,
想用二分法做,但是由于有循环,不知道函数该怎么写
    这个程序该怎么编啊
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

FMStation

至尊木虫 (知名作家)

【答案】应助回帖

感谢参与,应助指数 +1
http://edisonshih.pixnet.net/blog/post/30455128-%5bc語言數值分析%5d-方程式求解---bisector%28二分法%29

// ==================================
// filename: BiSector.cpp
// use bisector method to find solution
// author  : Edison.Shih.
// Date    : 2010.3.6
// ** all rights resever **
// ==================================

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define SMALL (double)(10E-4)
#define NO_FIND_NUM      (double)(-9999.0)

// =======================================
// f(x) = x^3 + 2x^2 -5x +1,
// have sol at (-4, -3), (0,1), (1, 2)
double func(double x){
      return (x*x*x + 2*x*x - 5*x + 1);
}

// =======================================
double bisector(double (*fptr)(double),
                        double low,
                        double high,
                        double small)
{// small: error rate
      double x = (low+high) / 2.0;
      double xvalue = 0.0; // f(x) = f( (h+low)/2 )
      double hvalue = 0.0; // f(h)
      double lvalue = 0.0; // f(low)
     
      int times = 0;
      //printf("==========================\n";
      do{
            xvalue = (*fptr)(x);
            hvalue = (*fptr)(high);
            lvalue = (*fptr)(low);
            /*
            printf("==========================\n";
            printf("%d times:\n", times++);
     
            printf("L   :%8.4lf,H   :%8.4lf,X    :%8.4lf\n",
                  low, high, x);
            printf("f(L):%8.4lf,f(H):%8.4lf,f(X) :%8.4lf\n",
                  lvalue, hvalue, xvalue);           
            */

            if(xvalue>0 && lvalue>0 && hvalue<0) low = x;
            else if(xvalue>0 && lvalue<0 && hvalue>0) high = x;
            else if(xvalue<0 && lvalue>0 && hvalue<0) high = x;
            else if(xvalue<0 && lvalue<0 && hvalue>0) low = x;
            else return (NO_FIND_NUM); // no find ans
            x = (high + low) / 2;           
      }while(fabs(xvalue) > small);
      // printf("==========================\n";

      return x;
}

// =======================================
int main(int argc, char **argv)
{
      double sol = 0.0;
      for(double x=-5.0; x<=5.0; x=x+1.0)
      {
            sol = bisector(func, x, x+1.0, SMALL);
            printf("sol at (%.0lf,%.0lf):",x,x+1);
            if(sol==NO_FIND_NUM) {
                  printf("no find sol\n";
            }
            else {
                  printf("%.4lf\n",sol);
            }
      }
      return 0;
}
2楼2016-08-09 22:27:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

c333000

新虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
随便找本算法的书都有很多
3楼2016-08-10 00:01:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

TM队长

禁虫 (小有名气)

本帖内容被屏蔽

4楼2016-08-11 10:06:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yz457694

铁杆木虫 (正式写手)

【答案】应助回帖

引用回帖:
4楼: Originally posted by TM队长 at 2016-08-11 10:06:45
算法的书 比如呢
...

《算法导论》:
http://pan.baidu.com/share/link? ... mp;amp;uk=540980231
司守奎《建模算法与应用》:
http://pan.baidu.com/share/link? ... mp;amp;uk=540980231

发自小木虫Android客户端
5楼2016-08-15 00:11:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

TM队长

禁虫 (小有名气)

本帖内容被屏蔽

6楼2016-08-15 00:17:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 shao0722 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 情人节自我反思:在爱情中有过遗憾吗? +5 瞬息宇宙 2026-02-15 6/300 2026-02-18 12:51 by 月下雪林
[找工作] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 i3cz6qj6l2 2026-02-17 3/150 2026-02-18 11:09 by lqtl9djx19
[考博] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 i3cz6qj6l2 2026-02-17 3/150 2026-02-18 10:54 by lqtl9djx19
[考研] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 i3cz6qj6l2 2026-02-17 3/150 2026-02-18 10:39 by lqtl9djx19
[考研] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-18 08:53 by lqtl9djx19
[硕博家园] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-18 08:38 by lqtl9djx19
[找工作] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-17 4/200 2026-02-18 07:55 by lotyj5cz79
[基金申请] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:40 by lotyj5cz79
[考研] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:38 by lotyj5cz79
[硕博家园] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:23 by lotyj5cz79
[论文投稿] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +4 pnpwoqbg8f 2026-02-16 4/200 2026-02-18 07:08 by lotyj5cz79
[公派出国] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-16 3/150 2026-02-18 06:53 by lotyj5cz79
[论文投稿] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-18 00:40 by tk2gfblvuz
[找工作] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 4/200 2026-02-18 00:23 by tk2gfblvuz
[公派出国] 售SCI一区文章,我:8 O5 51O 54,科目齐全,可+急 +3 pnpwoqbg8f 2026-02-17 3/150 2026-02-17 23:40 by tk2gfblvuz
[基金申请] 基金正文30页指的是报告正文还是整个申请书 +3 successhe 2026-02-16 4/200 2026-02-17 20:56 by successhe
[基金申请] 今年春晚有几个节目很不错,点赞! +5 瞬息宇宙 2026-02-16 6/300 2026-02-17 12:49 by jymy19840415
[微米和纳米] 球磨粉体时遇到了大的问题,请指教! 10+3 6sbiam 2026-02-12 15/750 2026-02-16 15:03 by tgzxzqj
[基金申请] 过年走亲戚时感受到了所开私家车的鄙视链 +3 瞬息宇宙 2026-02-15 5/250 2026-02-16 14:23 by aspect3000
[硕博家园] 江汉大学解明教授课题组招博士研究生/博士后 +3 cleverlyy 2026-02-12 3/150 2026-02-12 21:02 by qsdf1
信息提示
请填处理意见