重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
计算反正切函数(使用欧拉变换公式,精度很高),反正切函数的级数展开公式:
十载的镇康网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。营销型网站的优势是能够根据用户设备显示端的尺寸不同,自动调整镇康建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“镇康网站设计”,“镇康网站推广”以来,每个客户项目都认真落实执行。
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];
}
}
}
级数计算就不用我给代码了吧。
#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;
}
sacnf("%s",a);这个语句根本没的用。就算输入到a,也只会被当成字符串来处理。
printf("%f",j);这个语句不知道是不是你写错了,j前面没逗号。
你想想反余切的公式就可以编程 出来了,这个东西最好要自己实践,别人帮你只是指导你,对你编程没有实际的好处。
反3角函数有 acos(double),asin(double),atan(double),atan(double,double),返回值 double 型,弧度值。转角度要 *180.0/3.1416。
例如:
1、#include stdio.h
2、#includestdlib.h
3、#includemath.h
4、int main()
5、{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;}
1、反三角函数是一种基本初等函数。
2、它是反正弦arcsin x,反余弦arccos x,反正切arctan x,反余切arccot x,反正割arcsec x,反余割arccsc x这些函数的统称,各自表示其反正弦、反余弦、反正切、反余切 ,反正割,反余割为x的角。
3、它并不能狭义的理解为三角函数的反函数,是个多值函数。
4、三角函数的反函数不是单值函数,因为它并不满足一个自变量对应一个函数值的要求,其图像与其原函数关于函数 y=x 对称。欧拉提出反三角函数的概念,并且首先使用了“arc+函数名”的形式表示反三角函数。
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|