62,628
社区成员
发帖
与我相关
我的任务
分享
我是想要拟合,不是求解。//y = a*cos(bx)*sin(cx) + d*x + e
double fx(double x, double a, double b, double c, double d, double e) {
return a*cos(b*x)*sin(c*x) + d*x +e;
}
//cos(x)的近似公式:1-x^2/2!+x^4/4!-x^6/6!...
double cos(double x, int n) { //n为循环次数,看精度要求调整
double s = 1.0, m=1.0, f=-1.0, x2=1.0;
for (int i=0, j=0; i<n; i++) {
for (; j<2*(i+1); j++) {
m *= (i+1); //阶乘
x2 *= x; //乘方
}
s += f*x2/m
f = -f;
}
return s;
}
//sin(x)的近似公式:x-x^3/3!+x^5/5!-x^7/7!...
double sin(double x, int n) { //n为循环次数,看精度要求调整
double s = x, m=1.0, f=-1.0, x2=x;
for (int i=0, j=0; i<n; i++) {
for (; j<2*(i+1); j++) {
m *= (i+2); //阶乘
x2 *= x; //乘方
}
s += f*x2/m;
f = -f;
}
return s;
}