| 5 | 1/1 | 返回列表 |
| 查看: 946 | 回復: 5 | |||
| 當前只顯示滿足指定條件的回帖,點擊這里查看本話題的所有回帖 | |||
[求助]
關于二分法 已有3人參與
|
|||
|
請教一下大家: 我的程序大概是這樣: 對一個某個變量第一個節(jié)點,先估一個值,然后按照這個值使用循環(huán),一直算到最后一個節(jié)點,最后一個節(jié)點需滿足某個條件, 想用二分法做,但是由于有循環(huán),不知道函數該怎么寫 這個程序該怎么編啊 |
程序 |
新蟲 (小有名氣)
至尊木蟲 (知名作家)
|
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; } |
|
本帖內容被屏蔽 |
|
《算法導論》: http://pan.baidu.com/share/link? ... mp;amp;uk=540980231 司守奎《建模算法與應用》: http://pan.baidu.com/share/link? ... mp;amp;uk=540980231 發(fā)自小木蟲Android客戶端 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 求調劑 +4 | QiMing7 2026-03-25 | 5/250 |
|
|---|---|---|---|---|
|
[考研] 291求調劑 +7 | Y-cap 2026-03-29 | 8/400 |
|
|
[考研] 070305高分子化學與物理 304分求調劑 +12 | c297914 2026-03-28 | 12/600 |
|
|
[考研] 一志愿鄭州大學,080500學碩,總分317分求調劑 +8 | 舉個栗子oi 2026-03-24 | 9/450 |
|
|
[考研] 求調劑一志愿武漢理工大學材料工程(085601) +7 | WW.' 2026-03-23 | 9/450 |
|
|
[考研] 數一英一271專碩(085401)求調劑,可跨 +7 | 前行必有光 2026-03-28 | 8/400 |
|
|
[考研] 322求調劑 +5 | 舊吢 2026-03-24 | 5/250 |
|
|
[考研] 070300求調劑306分 +4 | 26要上岸 2026-03-27 | 4/200 |
|
|
[考研] 330一志愿中國海洋大學 化學工程 085602 有讀博意愿 求調劑 +3 | wywy.. 2026-03-27 | 4/200 |
|
|
[考研]
|
18419759900 2026-03-25 | 8/400 |
|
|
[考研] 287求調劑 +10 | land xuxu 2026-03-26 | 10/500 |
|
|
[考研] 276求調劑。有半年電池和半年高分子實習經歷 +10 | 材料學257求調劑 2026-03-23 | 11/550 |
|
|
[考研] 321求調劑 +6 | wasdssaa 2026-03-26 | 6/300 |
|
|
[考研] 0703化學求調劑 +3 | 丹青奶蓋 2026-03-26 | 5/250 |
|
|
[考研]
|
WWW西西弗斯 2026-03-24 | 8/400 |
|
|
[考研] 打過很多競賽,085406控制工程300分,求調劑 +3 | askeladz 2026-03-26 | 3/150 |
|
|
[考研] 309求調劑 +4 | gajsj 2026-03-25 | 5/250 |
|
|
[考研] 一志愿哈工大,085400,320,求調劑 +4 | gdlf9999 2026-03-24 | 4/200 |
|
|
[考研] 334分 一志愿武理-080500 材料求調劑 +4 | 李李不服輸 2026-03-25 | 4/200 |
|
|
[考研] 生物學學碩求調劑 +7 | 小羊睡著了? 2026-03-23 | 10/500 |
|