用C语言表示反正弦,反余弦,反正切函数

我知道在C语言中没有反正弦,反余弦,反正切函数,
但是,我现在要用到这类函数,并且要用C语言编程实现,
或者有没有什么间接的实现方法
望高手指教!!
不好意思搞错了
我要的是正割函数

第1个回答  2009-04-14
计算反正切函数(使用欧拉变换公式,精度很高),反正切函数的级数展开公式:

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];
}
}
}

级数计算就不用我给代码了吧。

参考资料:http://topic.csdn.net/t/20051116/10/4396595.html

第2个回答  推荐于2017-09-25
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|
第3个回答  2009-04-14
学了这么久数学。重来没碰到过要求反正割函数的。因该能间接利用正弦或余弦吧!!????
第4个回答  推荐于2017-10-06
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|本回答被提问者采纳

怎样用C语言表示反正弦,反余弦,反正切函数呢?
计算反正切函数(使用欧拉变换公式,精度很高),反正切函数的级数展开公式:f(x) = x - x^3\/3 + x^5\/5 +...+ (-1)^k * x^(2k+1)\/(2k + 1)+...当|x| > 1时,级数绝对值发散,无法直接使用欧拉公式计算。因此可以通过下面的公式 进...

在C中,怎样使用三角函数?
asin():计算反正弦值示例:double result = asin(value);acos():计算反余弦值示例:double result = acos(value);atan():计算反正切值示例:double result = atan(value);这些函数的参数和返回值都是以弧度为单位。如果需要使用角度值,可以通过将弧度值转换为角度值来实现。另外,需要注意的是,...

c语言中sin函数和cos函数的用法?
C语言里sin函数和cos函数是C标准数学函数库中的函数,调用需要引入math.h头文件。一、sin() 函数描述:C 库函数 double sin(double x) 返回弧度角 x 的正弦。sin() 函数的声明:double sin(double x)。参数:x -- 浮点值,代表了一个以弧度表示的角度。返回值:该函数返回 x 的正弦。二、cos...

请问反正切函数arctanx用c语言怎么表示?
doublecos(doublex)x的余弦函数值 doubletan(doublex)x的正切函数值 doubleasin(doublex)x的反正弦函数值sin-1x,x的值在[-1,1]之间,传回的值在[-p\/2,p\/2]之间 doubleacos(doublex)x的反余弦函数值cos-1x,x的值在[-1,1]之间,传回的值在[-p\/2,p\/2]之间 doubleatan(doublex)x...

谁能告诉我C语言头文件math.h中所有的函数及使用方法。。。
1、 三角函数double sin(double);正弦double cos(double);余弦double tan(double);正切2 、反三角函数double asin (double); 结果介于[-PI\/2,PI\/2]double acos (double); 结果介于[0,PI]double atan (double); 反正切(主值),结果介于[-PI\/2,PI\/2]double atan2 (double,double); 反正切...

C语言中反三角函数的调用
反3角函数有 acos(double),asin(double),atan(double),atan(double,double),返回值 double 型,弧度值。转角度要 *180.0\/3.1416 例如:include <stdio.h> include<stdlib.h> include<math.h> int main(){ double x=0.5;printf("acos=%.2lf degrees\\n",acos(x) * 180.0\/3.1416);pr...

c语言中什么时候才用#include<math.h>??
1、 三角函数 double sin (double);正弦 double cos (double);余弦 double tan (double);正切 2 、反三角函数 double asin (double); 结果介于[-PI\/2, PI\/2] double acos (double); 结果介于[0, PI] double atan (double); 反正切(主值), 结果介于[-PI\/2, PI\/2] ...

在C语言中怎样求反正切,正切是tan,是atan吗
是的啊,我给你再举个例子,以下两行分别打印出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...

c语言标准函数库<math.h>
函数fmod(x, y)在y非零时,返回x除以y的浮点余数,其符号与x相同;若y为零,则结果由实现决定。函数sin(x), cos(x), tan(x)分别计算x的正弦、余弦和正切。函数asin(x), acos(x), atan(x)分别计算x的反正弦、反余弦和反正切。函数atan2(y, x)计算y\/x的反正切。函数sinh(x), cosh(x...

C语言函数数学函数
平方根函数:double sqrt(double x)返回正的平方根。 三角函数:如acos(double x)、asin(double x)、atan(double x)和atan2(double y, double x)计算角度的反余弦、反正弦、反正切和两个角度的反正切。 双曲函数:cosh(double x)、sinh(double x)和tanh(double x)分别计算双曲余弦、...

相似回答