c语言求正弦函数积分 c语言求正弦和余弦

对sin函数求"不定积分",用C语言如何实现???

1.

站在用户的角度思考问题,与客户深入沟通,找到景县网站设计与景县网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、网站建设、企业官网、英文网站、手机端网站、网站推广、申请域名虚拟主机、企业邮箱。业务覆盖景县地区。

c语言中要编写sin函数,实质上要利用sin的泰勒公式,然后根据泰勒公式,将其中的每一项进行分解,最后用循环,累加计算出最终结果

2.

下面用for循环实现sin的算法,程序代码如下:

#include

#include

void

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语言编程求函数y=sinx在(0,1)区间的定积分?

#includestdio.h

#includemath.h

#define N 10000000

void main()

{

double sum=0;

int i;

for(i=0; iN; i++)

{

sum += sin((double)(i)/N)/N;

}

printf("%lf\n%lf",sum,1-cos(1));

}

N后面的0有点多了,不过这个数刚好能精确到小数点后6位。

当然,这个程序的算法实在是太垃圾了,效率非常的低下……

对sin函数求积分,用C语言如何实现???

??

解法一 ∫sin(x)dx = cos(x) +c 积分公式

double jfSin(double x, double y)

{

return cos(y) - cos(x)

}

解法二 野蛮近似法

d是精度

double jfSin(double x, double y, double dx)

{ double ret;

for(; x =y; x+= dx)

{

ret += sin(x);

}

return ret;

}

用c语言编写y=sin()利用积分概念

有区别:这里假定pi是double型的变量

1)x为整型时,y=sin(x*pi/180);会先计算x*pi得到double型数据(因为pi的类型),然后再做除法

z=sin(x/180*pi);会先计算x/180得到整型数据(因为分子、分母均整型)小数部分被

截断了然后再与pi相乘得到double类型结果

应当写做:z=sin((double)x/180*pi);或z=sin(x/180.0*pi);

只要分子、分母中有一个数据类型是double的会使编译程序调用double类型的

运算步骤。

2)x是double型但取值很大时

y=sin(x*pi/180);会先计算x*pi,如果x的值大得x*pi会超出double类型表示范围时就会出问题

y=sin(x/180*pi);会先计算除法,这样先缩小得数再做乘法保证结果不会溢出


网站栏目:c语言求正弦函数积分 c语言求正弦和余弦
文章源于:http://scjbc.cn/article/dojshjj.html

其他资讯