【发布时间】:2014-03-06 23:00:53
【问题描述】:
我正在尝试解决以下等式的特殊情况,其中 l=b=0;它应该返回一个完美平方函数的平方根,例如平方((x-d)^2)。这可以有两种解决方案,(x-d)或(d-x)。我想获得 (x-d) 作为我的最终解决方案,但程序默认返回 (d-x) 解决方案。我尝试改变 d 和 x 的位置,但似乎没有任何效果。这是我的程序:
float y(float x) {
float l=0., b=0., d=8.5, r_0=3., z_0=0.1;
return exp(-pow(x*x*cos(b*PI/180.)*cos(b*PI/180.)+d*d-2*d*x*cos(b*PI/180.)*cos(l*PI/180.), 0.5)/r_0)*exp(-x*pow(1-cos(b*PI/180.)*cos(b*PI/180.),0.5)/z_0) ;
}
int main(){
FILE* fp =NULL;
float x0,xn,step,s,int_val, tau; /* s = distance to the star from the sun*/
int i,n, j ;
scanf("%f%f%d",&x0,&xn,&n);
step = (xn-x0)/n;
s = y(x0) + y(xn);
fp = fopen("trap.txt", "w");
for(i = 1; i < n; i++) {
s += 2*y(x0+i*step);
fprintf(fp,"%e\n",s*step/2);
}
fclose(fp);
【问题讨论】:
-
是否缺少某些代码?
-
该指数至少有一个优化可能,即
1-cos^2(x)=sin^2(x)等。另外,你有什么理由不能只取负分支?
标签: c square-root