float xx, x1, f1, fx;
float X2, xb, x0, f2;
float F0;xx = 0;
x1 = Xstart;
xx = x1;
funcr_chg(spruse_x, xx, fx);
f1 = fx;
do {
X2 = x1 + Deta;
xb = x1 + Deta;
xx = X2;
funcr_chg(spruse_x, xx, fx);
f2 = fx;
if (f1 * f2 < 0) {
break;
}else{
x1 = xb;
f1 = f2;
}
}while(true);do{
x0 = (x1 + X2) / 2;
xx = x0;
funcr_chg(spruse_x, xx, fx);
F0 = fx;
f2 = F0;
if (Math.Abs(x0 - X2) <= Eps || Math.Abs(F0) <= Eps){
rootx = x0;
break;
} else if (f1 * f2 > 0){
f1 = F0;
x1 = x0;
}else if (f1 * f2 < 0){
X2 = x0;
}
} while(true);Eps是指Single的Epsilon字段吧,你用Single.Epsilon替换就可以了。
float X2, xb, x0, f2;
float F0;xx = 0;
x1 = Xstart;
xx = x1;
funcr_chg(spruse_x, xx, fx);
f1 = fx;
do {
X2 = x1 + Deta;
xb = x1 + Deta;
xx = X2;
funcr_chg(spruse_x, xx, fx);
f2 = fx;
if (f1 * f2 < 0) {
break;
}else{
x1 = xb;
f1 = f2;
}
}while(true);do{
x0 = (x1 + X2) / 2;
xx = x0;
funcr_chg(spruse_x, xx, fx);
F0 = fx;
f2 = F0;
if (Math.Abs(x0 - X2) <= Eps || Math.Abs(F0) <= Eps){
rootx = x0;
break;
} else if (f1 * f2 > 0){
f1 = F0;
x1 = x0;
}else if (f1 * f2 < 0){
X2 = x0;
}
} while(true);Eps是指Single的Epsilon字段吧,你用Single.Epsilon替换就可以了。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货