计算反正切函数(使用欧拉变换公式,精度很高),颂蠢反正切函数的级数展开公式:
成都创新互联于2013年创立,是专业互联网技术服务公司,拥有项目网站制作、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元浑南做网站,已为上家服务,为浑南各地企业和个人服务,联系电话:18980820575
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];
}
}
}
级数计算就不用我给代码了吧。
C 语言是吧,看看:
================================================
#includestdio.h
#include局型math.h
int main()
{
double y;
int x,m,i;
printf("y=sin(x) [0x2*pi]\n");
for(y=1;y=-1;y-=0.1)
{ /*y为列方向,值从1到-1,步长为0.1*/
if(y=0)
{
m=asin(y)*10; /*计算出y对应的弧度m,乘以10为图形放大倍数*/
for(x=1;xm;x++)printf(" ");
printf("*"); /*控制打印 * 号*/
for(;x桐源猜31-m;x++)printf(" ");
printf("*\n");
} /*控制打印同一行中对称的*号*/
else
{
m=-1*asin(y)*10;
for(i=0;i裂此32;i++)printf(" ");
for(x=1;xm;x++)printf(" ");
printf("*");
for(;x31-m;x++)printf(" ");
printf("*\n");
}
}
return 0;
}
=================================================
output:
y=sin(x) [0x2*pi]
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
请按任意键继续. . .
1、C语言中要编写sin函数,实质上要利用sin的泰勒公式,然后根据泰勒公式,将其中的每一项进行分解,最后用循环,累加计算出最终结果。
2、下面用for循环实现sin的算法,程序代码如下:
#includestdio.h#includemath.hvoid main(){ int i; float x,sum,a,b; //sum代表和,a为分子,b为分母 char s; printf("please input x"); scanf("%f",x); s=1; sum=0; a=x; //分母赋枣核衡初值 b=1; //分子赋初值 for(i=1;a/b=1e-6;i++) { sum=sum+s*a/b; //累加一项 a=a*x*x; //求下一项分子 b=b*2*i*(2*i+1); //求下一项分母 s*=-1; } printf("sum=%f\n",sum);}
3、 关于上述程序的几点说明:上述程序的计算结果精确到小数点后六位;上述程序运用了sin的泰勒展开式 sin x=x-x^3/3!+x^5/5! ...... ,程序中将sin泰勒公式中的每一项拆成了分子,分母以及每一项前的符凳做号氏颤这三项,以便于每一项的累加。
分享文章:c语言画正函数 c语言绘制正弦曲线
标题路径:https://www.cdcxhl.com/article46/dspjehg.html
成都网站建设公司_创新互联,为您提供关键词优化、ChatGPT、商城网站、外贸网站建设、网站导航、定制开发
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联