| 6 | 1/1 | 返回列表 |
| 查看: 943 | 回復(fù): 5 | |||
[求助]
關(guān)于二分法 已有3人參與
|
|
請教一下大家: 我的程序大概是這樣: 對一個某個變量第一個節(jié)點,先估一個值,然后按照這個值使用循環(huán),一直算到最后一個節(jié)點,最后一個節(jié)點需滿足某個條件, 想用二分法做,但是由于有循環(huán),不知道函數(shù)該怎么寫 這個程序該怎么編啊 |
程序 |
至尊木蟲 (知名作家)
|
http://edisonshih.pixnet.net/blog/post/30455128-%5bc語言數(shù)值分析%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; } |
新蟲 (小有名氣)
|
本帖內(nèi)容被屏蔽 |
|
《算法導(dǎo)論》: http://pan.baidu.com/share/link? ... mp;amp;uk=540980231 司守奎《建模算法與應(yīng)用》: http://pan.baidu.com/share/link? ... mp;amp;uk=540980231 發(fā)自小木蟲Android客戶端 |
|
本帖內(nèi)容被屏蔽 |
| 6 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 291求調(diào)劑 +7 | Y-cap 2026-03-29 | 8/400 |
|
|---|---|---|---|---|
|
[考研] 一志愿南昌大學(xué)324求調(diào)劑 +5 | hanamiko 2026-03-29 | 5/250 |
|
|
[考研] 求調(diào)劑一志愿武漢理工大學(xué)材料工程(085601) +7 | WW.' 2026-03-23 | 9/450 |
|
|
[考研] 0703 化學(xué) 求調(diào)劑,一志愿山東大學(xué) 342 分 +4 | Shern—- 2026-03-28 | 4/200 |
|
|
[考研] 322求調(diào)劑 +7 | 宋明欣 2026-03-27 | 7/350 |
|
|
[考研] 071000生物學(xué)求調(diào)劑,初試成績343 +7 | 小小甜面團 2026-03-25 | 7/350 |
|
|
[考研] 317求調(diào)劑 +6 | 十閑wx 2026-03-24 | 6/300 |
|
|
[考研] 085600,材料與化工321分調(diào)劑 +4 | 大饞小子 2026-03-27 | 6/300 |
|
|
[考研] 333求調(diào)劑 +3 | question挽風(fēng) 2026-03-23 | 3/150 |
|
|
[考研] 0703化學(xué)338求調(diào)劑! +6 | Zuhui0306 2026-03-26 | 7/350 |
|
|
[考研] 286求調(diào)劑 +4 | lim0922 2026-03-26 | 4/200 |
|
|
[考研] 333求調(diào)劑 +6 | wfh030413@ 2026-03-23 | 6/300 |
|
|
[考研] 生物學(xué) 296 求調(diào)劑 +4 | 朵朵- 2026-03-26 | 6/300 |
|
|
[考研] 打過很多競賽,085406控制工程300分,求調(diào)劑 +3 | askeladz 2026-03-26 | 3/150 |
|
|
[考研] 290分調(diào)劑求助 +3 | 吉祥止止陳 2026-03-25 | 3/150 |
|
|
[考研] 各位老師您好:本人初試372分 +5 | jj涌77 2026-03-25 | 6/300 |
|
|
[考研] 上海電力大學(xué)材料防護與新材料重點實驗室招收調(diào)劑研究生(材料、化學(xué)、電化學(xué),環(huán)境) +4 | 我愛學(xué)電池 2026-03-23 | 4/200 |
|
|
[考研] 調(diào)劑 +4 | 13853210211 2026-03-24 | 4/200 |
|
|
[考研] 277分求調(diào)劑,跨調(diào)材料 +3 | 考研調(diào)劑lxh 2026-03-24 | 3/150 |
|
|
[考研]
|
13659058978 2026-03-24 | 4/200 |
|