24小时热门版块排行榜    

Znn3bq.jpeg
查看: 953  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 286求调剂 +25 Faune 2026-04-06 25/1250 2026-04-11 23:23 by labixiaoqiao
[考研] 288求调剂,一志愿华南理工大学071005 +18 ioodiiij 2026-04-08 18/900 2026-04-11 20:25 by liyun12321
[考研] 电子信息270求调剂 +14 terminal469 2026-04-07 14/700 2026-04-11 19:44 by laoshidan
[考研] 22408 352分求调剂 +4 努力的夏末 2026-04-09 4/200 2026-04-11 10:42 by maddjdld
[考研] 337求调剂 +4 研s. 2026-04-10 4/200 2026-04-11 08:57 by zhq0425
[考研] 计算机类求调剂,22408-274分 +7 上岸de小虫 2026-04-09 8/400 2026-04-10 19:56 by fxue1114
[考研] 一志愿京区985,085401,与本科专业一致,电子信息工程, +4 阳光开朗的男孩 2026-04-10 4/200 2026-04-10 18:27 by shenrf
[考研] 环境专硕调剂 +16 会说话的肘子 2026-04-06 16/800 2026-04-10 10:30 by asy1wn
[考研] 308求调剂 +21 倘若起风了呢 2026-04-05 21/1050 2026-04-10 08:13 by Sammy2
[考研] 一志愿2110,化学学硕310分,本科重点双非求调剂 +18 努力奋斗112 2026-04-08 18/900 2026-04-09 23:28 by wolf97
[考研] 085600材料与化工301分求调剂院校 +33 刺痛jk 2026-04-06 34/1700 2026-04-09 18:31 by hy861222
[考研] 一志愿武理车辆 281 求调剂 +5 上岸研究生. 2026-04-07 5/250 2026-04-09 15:56 by only周
[考研] 274求调剂 +5 山阿蔓 2026-04-07 5/250 2026-04-09 15:28 by 18828373951
[考研] 一志愿西南大学生物学学硕344 求生物学相关调剂/生物与医药 +7 超人不会飞@ 2026-04-08 7/350 2026-04-09 09:35 by gong120082
[考研] 296求调剂 +3 汪!?! 2026-04-08 3/150 2026-04-08 22:00 by zhouyuwinner
[考研] 材料考研求调剂总分280 +30 mkjlz1 2026-04-06 35/1750 2026-04-08 21:25 by cyh—315
[考研] 275 求调剂 +8 Lei812514 2026-04-07 8/400 2026-04-08 12:46 by chemisry
[考研] 机械调剂 +3 zzzbcb 2026-04-07 3/150 2026-04-07 22:19 by hemengdong
[考研] 305求调剂 +4 77Qi 2026-04-06 4/200 2026-04-07 20:06 by shanqishi
[考研] 285求调剂 +5 mapmath 2026-04-06 6/300 2026-04-06 17:18 by 蓝云思雨
信息提示
请填处理意见