24小时热门版块排行榜    

查看: 937  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 302求调剂 +11 呼呼呼。。。。 2026-03-17 11/550 2026-03-21 08:29 by JourneyLucky
[考研] 一志愿山大07化学 332分 四六级已过 本科山东双非 求调剂! +3 不想理你 2026-03-16 3/150 2026-03-21 03:59 by JourneyLucky
[考研] 303求调剂 +5 睿08 2026-03-17 7/350 2026-03-21 03:11 by JourneyLucky
[考研] 一志愿华中科技大学,080502,354分求调剂 +5 守候夕阳CF 2026-03-18 5/250 2026-03-21 01:06 by JourneyLucky
[考研] 一志愿武理材料305分求调剂 +6 想上岸的鲤鱼 2026-03-18 7/350 2026-03-21 01:03 by JourneyLucky
[考研] 317求调剂 +5 申子申申 2026-03-19 9/450 2026-03-20 22:26 by JourneyLucky
[考研] 一志愿北京化工大学0703化学318分,有科研经历,求调剂 +4 一瓶苯甲酸 2026-03-14 4/200 2026-03-20 20:36 by fen_rao
[考研] 一志愿西安交通大学 学硕 354求调剂 +3 我想要读研究生 2026-03-20 3/150 2026-03-20 20:13 by JourneyLucky
[考研] 工科材料085601 279求调剂 +7 困于星晨 2026-03-17 9/450 2026-03-20 17:38 by 无懈可击111
[考研] 招收调剂硕士 +4 lidianxing 2026-03-19 12/600 2026-03-20 12:25 by lidianxing
[考研] 0703化学调剂 +4 18889395102 2026-03-18 4/200 2026-03-19 16:13 by 30660438
[考研] 085600材料与化工调剂 324分 +10 llllkkkhh 2026-03-18 12/600 2026-03-19 14:33 by llllkkkhh
[考研] 0854可跨调剂,一作一项核心论文五项专利,省、国级证书40+数一英一287 +8 小李0854 2026-03-16 8/400 2026-03-18 14:35 by 搏击518
[考研] 293求调剂 +11 zjl的号 2026-03-16 16/800 2026-03-18 08:10 by zhukairuo
[考研] 277调剂 +5 自由煎饼果子 2026-03-16 6/300 2026-03-17 19:26 by 李leezz
[考研] 一志愿苏州大学材料工程(085601)专硕有科研经历三项国奖两个实用型专利一项省级立项 +6 大火山小火山 2026-03-16 8/400 2026-03-17 15:05 by 无懈可击111
[考博] 26申博 +4 八6八68 2026-03-16 4/200 2026-03-17 13:00 by 轻松不少随
[考研] 材料工程专硕274一志愿211求调剂 +6 薛云鹏 2026-03-15 6/300 2026-03-17 11:05 by 学员h26Tkc
[考研] 288求调剂 +4 奇点0314 2026-03-14 4/200 2026-03-14 23:04 by JourneyLucky
[考研] 复试调剂 +3 呼呼?~+123456 2026-03-14 3/150 2026-03-14 16:53 by WTUChen
信息提示
请填处理意见