double atan(double x)
滨湖ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!
x 的反正切函数值tan-1x,传回的值在 [-pi/2,pi/2] 之间
double atan2(double y, double x)
y/x 的反正切函数值tan-1(y/x),传回的值在 [-pi, pi] 之间
arctanX的导数是1/(1+X²)这里的X=x/2复合函数求导,需要先求子函数的导数,即X'=1/2再乘上arctanX的导数所以所求导数是1/[2(1+x²/4)]
C语言中之数学函数
C语言提供了以下的数学函数,要使用这些函数时,在程序文件头必须加入:
#include
编译时,必须加上参数「-lm」(表示连结至数学函式库),例如「gcc -lm test.c」。
函数之自变量与传回之值型别见自变量或函数前之型别宣告。
函数已经在「math.h」或其它标头档宣告过了,因此在使用时不必再加型别宣告,例如「y=sin(x);」,不用写成「y=double sin(double x);」。
函数说明
double sin(double x)
x 的正弦函数值
double cos(double x)
x 的余弦函数值
double tan(double x)
x 的正切函数值
double asin(double x)
x 的反正弦函数值 sin-1x,x的值在 [-1,1] 之间,传回的值在 [-p/2,p/2] 之间
double acos(double x)
x 的反余弦函数值cos-1x,x的值在 [-1,1] 之间,传回的值在 [-p/2,p/2] 之间
double atan(double x)
x 的反正切函数值tan-1x,传回的值在 [-p/2,p/2] 之间
double atan2(double y, double x)
y/x 的反正切函数值tan-1(y/x),传回的值在 [-p, p]
C语言中之数学函数
C语言提供了以下的数学函数,要使用这些函数时,在程序文件头必须加入:
#include math.h
编译时,必须加上参数「-lm」(表示连结至数学函式库),例如「gcc -lm test.c」。
函数之自变量与传回之值型别见自变量或函数前之型别宣告。
函数已经在「math.h」或其它标头档宣告过了,因此在使用时不必再加型别宣告,例如「y=sin(x);」,不用写成「y=double sin(double x);」。
函数说明
double sin(double x)
x 的正弦函数值
double cos(double x)
x 的余弦函数值
double tan(double x)
x 的正切函数值
double asin(double x)
x 的反正弦函数值 sin-1x,x的值在 [-1,1] 之间,传回的值在 [-p/2,p/2] 之间
double acos(double x)
x 的反余弦函数值cos-1x,x的值在 [-1,1] 之间,传回的值在 [-p/2,p/2] 之间
double atan(double x)
x 的反正切函数值tan-1x,传回的值在 [-p/2,p/2] 之间
double atan2(double y, double x)
y/x 的反正切函数值tan-1(y/x),传回的值在 [-p, p] 之间
double sinh(double x)
x 的双曲正弦函数值
double cosh(double x)
x 的双曲余弦函数值
double tanh(double x)
x 的双曲正切函数值
double exp(double x)
x 的指数函数 ex
double log(double x)
x 的自然对数 ln(x),x 0
double log10(double x)
x 底数为 10 的对数,log10x,x 0
double pow(double x, double y)
x 的 y 次方 xy
double sqrt(double x)
x 的根号值 √x
double ceil(double x)
不小于 x 的最小整数(但其型别为 double)
double floor(double x)
不大于 x 的最大整数(但其型别为 double)
int abs(int x)
整数 x 的绝对值 |x|
long labs(long x)
长整数 x 的绝对值 |x|
double fabs(double x)
实数 x 的绝对值 |x|
是的啊,我给你再举个例子,以下两行分别打印出tan(45)=1,atan(1)=45。
注意:要用double类型,不然会得到错误的结果。
#include stdio.h
#include math.h
#define pi 3.1415926
void main()
{
printf("%f\n",tan(double(45)/double(180)*pi));
printf("%f\n",atan(1)*double(180)/pi);
}
计算反正切函数(使用欧拉变换公式,精度很高),反正切函数的级数展开公式:
f(x) = x - x^3/3 + x^5/5 +...+ (-1)^k * x^(2k+1)/(2k + 1)+...
当|x| 1时,级数绝对值发散,无法直接使用欧拉公式计算。因此可以通过下面的公式
进行等价转换之后再进行计算。
等价转换公式:
a) ATan(1/x) = Pi/2 - ATan(x)
b) ATan(-x) = - ATan(x)
特殊情况
0 = ArcTan(0)
Pi/2 = ArcTan(无穷大)
//
// 欧拉公式
//
// sum是和,term是通项值,jterm初始为1,以后按1递增。wrksp是工作单元,视jterm的
// 最大值而定。
//
void eulsum(int nterm,double *sum,double term,int jterm,double wrksp[])
{
double tmp,dum;
if(jterm == 1)
{
nterm = 1;
wrksp[1] = term;
*sum = 0.5 * term;
}
else
{
tmp = wrksp[1];
wrksp[1] = term;
for(int j=1; j = nterm; j++)
{
dum = wrksp[j+1];
wrksp[j+1] = 0.5 * (wrksp[j] + tmp);
tmp = dum;
}
if(fabs(wrksp[nterm + 1]) = fabs(wrksp[nterm]))
{
*sum = *sum + 0.5 * wrksp[nterm + 1];
nterm = nterm + 1;
}
else
{
*sum = *sum + wrksp[nterm + 1];
}
}
}
级数计算就不用我给代码了吧。