2分法
をテンプレートにして作成
[
トップ
|
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
|&ref(bisection.jpg,,100%);|
+&ref(rf_bisection.eq19.gif,nolink,70%);, &ref(rf_bisecti...
#ref(rf_bisection.eq27.gif,nolink,70%)
#code(C){{
/*!
* 2分法(bisection method)
*/
int bisection(double func(const double), double xl, doubl...
{
double f = func(xl);
double fmid = func(xr);
if(f*fmid >= 0.0) return 0.0;
int k;
double dx = fabs(xr-xl), xmid;
for(k = 0; k < max_iter; ++k){
dx *= 0.5;
fmid = func(xmid);
if(dx < eps || fmid == 0.0){
x = xmid;
max_iter = k; eps = dx;
return 1;
}
if(f*fmid < 0){
xr = xmid;
}
else{
xl = xmid;
f = fmid;
}
}
max_iter = k; eps = dx;
return 0;
}
}}
終了行:
|&ref(bisection.jpg,,100%);|
+&ref(rf_bisection.eq19.gif,nolink,70%);, &ref(rf_bisecti...
#ref(rf_bisection.eq27.gif,nolink,70%)
#code(C){{
/*!
* 2分法(bisection method)
*/
int bisection(double func(const double), double xl, doubl...
{
double f = func(xl);
double fmid = func(xr);
if(f*fmid >= 0.0) return 0.0;
int k;
double dx = fabs(xr-xl), xmid;
for(k = 0; k < max_iter; ++k){
dx *= 0.5;
fmid = func(xmid);
if(dx < eps || fmid == 0.0){
x = xmid;
max_iter = k; eps = dx;
return 1;
}
if(f*fmid < 0){
xr = xmid;
}
else{
xl = xmid;
f = fmid;
}
}
max_iter = k; eps = dx;
return 0;
}
}}
ページ名: