| 6 | 1/1 | 返回列表 |
| 查看: 945 | 回復: 5 | |||
[求助]
關于二分法 已有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)容被屏蔽 |
|
《算法導論》: http://pan.baidu.com/share/link? ... mp;amp;uk=540980231 司守奎《建模算法與應用》: http://pan.baidu.com/share/link? ... mp;amp;uk=540980231 發(fā)自小木蟲Android客戶端 |
|
本帖內(nèi)容被屏蔽 |
| 6 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 0703 化學 求調(diào)劑,一志愿山東大學 342 分 +5 | Shern—- 2026-03-28 | 5/250 |
|
|---|---|---|---|---|
|
[碩博家園] 求調(diào)劑 有機化學考研356分 +4 | Nadiums 2026-03-25 | 5/250 |
|
|
[考研] 【求調(diào)劑】085601材料工程專碩 | 總分272 | +7 | 腳滑的守法公民 2026-03-27 | 7/350 |
|
|
[考研] 0856求調(diào)劑 +7 | 楒桉 2026-03-28 | 7/350 |
|
|
[考研] 304求調(diào)劑 +6 | 曼殊2266 2026-03-27 | 6/300 |
|
|
[考研] 266分,求材料冶金能源化工等調(diào)劑 +7 | 哇呼哼呼哼 2026-03-27 | 9/450 |
|
|
[考研] 0856,材料與化工321分求調(diào)劑 +12 | 大饞小子 2026-03-27 | 13/650 |
|
|
[考研] 085405 考的11408求各位老師帶走 +3 | Qiu學ing 2026-03-28 | 3/150 |
|
|
[考研] 化學調(diào)劑 +4 | 愛吃番茄的旭 2026-03-24 | 5/250 |
|
|
[論文投稿] Journal of Mechanical Science and Technology +3 | Russ_ss 2026-03-25 | 5/250 |
|
|
[碩博家園] 北京林業(yè)大學碩導招生廣告 +6 | kongweilin 2026-03-26 | 8/400 |
|
|
[考研] 276求調(diào)劑。有半年電池和半年高分子實習經(jīng)歷 +10 | 材料學257求調(diào)劑 2026-03-23 | 11/550 |
|
|
[考研] 359求調(diào)劑 +4 | 王了個楠 2026-03-25 | 4/200 |
|
|
[考研] 材料調(diào)劑 +8 | 匹克i 2026-03-23 | 8/400 |
|
|
[考研] 341求調(diào)劑 +7 | 青檸檬1 2026-03-26 | 7/350 |
|
|
[考研] 0854人工智能方向招收調(diào)劑 +4 | 章小魚567 2026-03-24 | 4/200 |
|
|
[考研]
|
黃粱一夢千年 2026-03-24 | 3/150 |
|
|
[考研] 344求調(diào)劑 +3 | desto 2026-03-24 | 3/150 |
|
|
[考研] 284求調(diào)劑 +3 | yanzhixue111 2026-03-23 | 6/300 |
|
|
[考研] 材料/農(nóng)業(yè)專業(yè),07/08開頭均可,過線就行 +3 | 呵唔哦豁 2026-03-23 | 4/200 |
|