gpt4 book ai didi

c - 从函数的平方根返回首选根

转载 作者:行者123 更新时间:2023-11-30 15:37:25 26 4
gpt4 key购买 nike

我正在尝试针对特殊情况求解以下方程,其中 l=b=0;它应该返回完美平方函数的平方根,例如sqrt((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);

最佳答案

我假设你正在谈论这个部分:

-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 )

首先,实际上有一个函数 double sqrt( double x ) 用于计算平方根。

第二件事是,结合数学,sqrt( square( everything ) ) 将返回 absolutevalue( everything ) 。在您的示例中,sqrt( (x-d)^2 ) 将相当于 absolutevalue( x-d )。由于 absolutevalue( x-d ) 等于 absolutevalue( d-x ),因此更改值的位置不会改变任何内容...

如果x > d,则其计算结果为x - d;否则为d - x,这就是数学所说的。

不能改变位置,但你可以简单地在整个 sqrt( square( ) ) 之前放置一个减号来改变它们的位置。您已经有一个减号了,您只需将其删除即可。

知道平方的平方根计算为绝对值后,您还可以将我上面编写的特定摘录替换为 fabs( x * cos( b * PI/180. ) - d ),其中 fabs 是取 double 绝对值的函数,并在 math.h 中定义。

关于c - 从函数的平方根返回首选根,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22238037/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com