淘先锋技术网

首页 1 2 3 4 5 6 7

C语言中反三角函数的调用

包含头文件 math.h

反3角函数有 acos(double),asin(double),atan(double),atan(double,double),

返回值 double 型,弧度值。转角度要 *180.0/3.1416

例如:

#include stdio.h

#includestdlib.h

#includemath.h

int main()

{

double x=0.5;

printf("acos=%.2lf degrees\n",acos(x) * 180.0/3.1416);

printf("asin=%.2lf degrees\n",asin(x) * 180.0/3.1416);

printf("atan=%.2lf degrees\n",atan(x) * 180.0/3.1416);

printf("atan2=%.2lf degrees\n",atan2(1.0,2.0) * 180.0/3.1416);

return 0;

}

C语言编程求arcsin x

#include "math.h"

double fn[1000] = {1};

double f(int n) {

int i;

if (fn[n]) return fn[n];

for (i = 1; i = n; i++) {

if (fn[n-i]) {

int t = n-i+1;

while (t = n) {

fn[t] = fn[t-1]* t;

t++;

}

break;

}

}

return fn[n];

}

double C(double x, int n) {

int t = 2*n;

return f(t)*pow(x,t+1)/(pow(2, t) * f(n) * f(n) *(t+1));

}

double asin0(double x)

{

double res = 0, t;

int i = 0;

do {

t = C(x, i++);

res += t;

}while (t  1e-7);

return res;

}

int main() {

printf("%f", asin0(0.5));

return 0;

}

C语言asin()函数:求反正弦的值(以

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

double

log10(double

x)

x

底数为

10

的对数,log10x,x

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语言中怎么实现反三角函数计算(急,在线等,高手请进!)

sacnf("%s",a);这个语句根本没的用。就算输入到a,也只会被当成字符串来处理。

printf("%f",j);这个语句不知道是不是你写错了,j前面没逗号。

你想想反余切的公式就可以编程 出来了,这个东西最好要自己实践,别人帮你只是指导你,对你编程没有实际的好处。

如何用C语言编写arctan(x/y)

如果math.h库中没有的话,提供你一条思路,在数学手册上去查一下 arctan的级数展开式。我多年前曾用汇编编制过tan函数,就用此方法。

搜到一些公式,不知你以后是否会用,都写上了。

arctan x = x - x^3/3 + x^5/5 - ... (x≤1)

ex = 1+x+x2/2!+x3/3!+...+xn/n!+...

ln(1+x)= x-x2/3+x3/3-...(-1)k-1*xk/k+... (|x|1)

sin x = x-x3/3!+x5/5!-...(-1)k-1*x2k-1/(2k-1)!+... (-∞x∞)

cos x = 1-x2/2!+x4/4!-...(-1)k*x2k/(2k)!+... (-∞x∞)

arcsin x = x + 1/2*x3/3 + 1*3/(2*4)*x5/5 + ... (|x|1)

arccos x = π - ( x + 1/2*x3/3 + 1*3/(2*4)*x5/5 + ... ) (|x|1)

sinh x = x+x3/3!+x5/5!+...(-1)k-1*x2k-1/(2k-1)!+... (-∞x∞)

cosh x = 1+x2/2!+x4/4!+...(-1)k*x2k/(2k)!+... (-∞x∞)

arcsinh x = x - 1/2*x3/3 + 1*3/(2*4)*x5/5 - ... (|x|1)

arctanh x = x + x^3/3 + x^5/5 + ... (|x|1)

怎样用C语言表示反正弦,反余弦,反正切函数呢?

计算反正切函数(使用欧拉变换公式,精度很高),反正切函数的级数展开公式:

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

}

}

}

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