24小时热门版块排行榜    

查看: 1071  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 E4V9bALS54sj 2026-09-19 4/200 2026-09-20 07:24 by 9i7PCSZyMzot
[论文投稿] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 E4V9bALS54sj 2026-09-19 4/200 2026-09-20 07:24 by 9i7PCSZyMzot
[硕博家园] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 E4V9bALS54sj 2026-09-19 4/200 2026-09-20 07:12 by 9i7PCSZyMzot
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 E4V9bALS54sj 2026-09-19 4/200 2026-09-20 07:12 by 9i7PCSZyMzot
[公派出国] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +3 E4V9bALS54sj 2026-09-19 4/200 2026-09-20 07:06 by 9i7PCSZyMzot
[考博] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 E4V9bALS54sj 2026-09-19 4/200 2026-09-20 07:01 by 9i7PCSZyMzot
[论文投稿] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 E4V9bALS54sj 2026-09-19 4/200 2026-09-20 06:55 by 9i7PCSZyMzot
[考研] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 4pRyVGCVerAA 2026-09-19 3/150 2026-09-20 00:15 by 9i7PCSZyMzot
[硕博家园] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +3 4pRyVGCVerAA 2026-09-19 3/150 2026-09-20 00:03 by 9i7PCSZyMzot
[考博] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 4pRyVGCVerAA 2026-09-19 4/200 2026-09-19 23:51 by 9i7PCSZyMzot
[基金申请] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 4pRyVGCVerAA 2026-09-19 4/200 2026-09-19 23:39 by 9i7PCSZyMzot
[考研] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 4pRyVGCVerAA 2026-09-19 4/200 2026-09-19 23:27 by 9i7PCSZyMzot
[公派出国] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 4pRyVGCVerAA 2026-09-19 4/200 2026-09-19 23:03 by 9i7PCSZyMzot
[考博] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 4pRyVGCVerAA 2026-09-19 4/200 2026-09-19 23:03 by 9i7PCSZyMzot
[公派出国] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 4pRyVGCVerAA 2026-09-18 7/350 2026-09-19 21:03 by 9i7PCSZyMzot
[基金申请] 国社科系统bug了,是不是要放榜了? +7 kynobel 2026-09-16 9/450 2026-09-19 14:52 by 接好运婷
[考博] 申博发邮件 +8 Lmengk 2026-09-15 9/450 2026-09-19 09:27 by 中间体超市
[有机交流] 各位大神,目前国内有哪些比较好用的逆合成软件? 20+3 zapen 2026-09-15 9/450 2026-09-18 18:17 by zapen
[考博] 上海工程技术大学激光智能制造课题组|2027级博士研究生招生公告 +7 水士口 2026-09-16 8/400 2026-09-16 13:47 by kkklens
[考博] 上海工程技术大学激光智能制造课题组招收博士研究生 +8 两三岁ss 2026-09-14 8/400 2026-09-16 09:46 by 水士口
信息提示
请填处理意见