C语言求sinx的值,有我写的程序,请问错在哪里了

C语言求sinx的值,有我写的程序,请问错在哪里了,第1张

for(n=1;;n++)

没有约束条件死循环

sinx,s没有赋初值,sinx=0;s=1

#include<stdioh>

#include<mathh>

void main()

{

int p(int n);

int n;

double i,j,sinx=0;

printf("x的值为03时,sinx的值为:");

for(n=1;fabs(sin(03)-sinx)>=1e-8;n++)

{

j=p(n);

i=pow(-1,n-1)pow(03,2n-1)/j;

sinx+=i;

j=0;

}

printf("%8lf\n",sinx);

}

int p(int n)

{

int i,s=1;

for(i=1;i<=(2n-1);i++)

s=i;

return(s);

}

subroutine cf(n,a) !计算n!的子程序

integer i,n

a=1

do i=1,n

a=ai

end do

end subroutine

program main !b为精度,即误差不越过b

integer i,c

real::x,b

read(,)x,b

i=1

call cf(i,a) !a为i! 误差判断时用到, 误差=/x/(n+1)/(n+1)!

if(abs(x)>=1) then !如果X>=1,取的项数越多误差越大,故只取sinx=x,不然不能判别什么时候停止循环,

s=x

else !如果x<1,用泰勒公式近似展开才有意思,

do while((abs(x))(i+1)/a>=b) 误差=/x/(n+1)/(n+1)!随着i增加即项数增加,越来越小,所以当误差小于b时即可以停止循环,达到要求精度

i=i+1

call cf(i+1,a)

end do

c=i i因为下面的循环变量有i,所以这里再用一变量c来代替n的最大值i

s=0 !求和sinx=x-x3/3!+x5/5!++(-1)(n-1)(x(2n-1))/(2n-1)! c即为n的最大值,

do i=1,c,2 ! i每次加2即N每次加2

call cf(i,a)

s=s+(-1)(i-1)(x(2i-1))/a

end do

endif

write(,)s

end program main

试试吧,我试过可以用的,一定要给我点分啊,我可是一下午没有研究我的论文啊,谢谢哦,

祝你好运

#include<stdioh>

#include<mathh>

#define N 10000000

void main()

{

double sum=0;

int i;

for(i=0; i<N; i++)

{

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

}

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

}

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

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

#include<stdioh>

void main(){

int i,b;

double a,x,s;

scanf("%lf",&x);

a=x;b=1;s=00;

for(i=0;fabs(a/b)>1e-6;){

s= s+a/b;

a=-axx;

i++;

b=b(2i+1)(2i);

}

printf("sinx=%lf",s);

}

#include <stdioh>

int main()

{

int i;

double x,r = 0, item = 0;

scanf("%lf",&x);

for(i = 1, item = x; i <= 10; i ++)

{

if(i != 1) 

item = item  x  x  -1 / (2i-1)/(2i-2);

r += item;

}

printf("sin(x)=%2lf\n", r);

}

#include<stdioh>

#include<mathh>

main()

{

float a,b=1;

float i,sinx,x;

scanf("%f",&x);

a=x;

sinx=0;

for(i=1;fabs(a/b)>=1e-6;i++)

{

sinx+=a/b;

a=-axx;

b=b2i(2i+1); }

printf("%f",sinx);

}

//只能求解制定点的导数

#include <stdioh>

#include <mathh>

double dY_dX(double x,double dx)

{

//dy=sin(x+dx)-sin(x)展开

double dy=sin(x)(cos(dx)-1)+cos(x)sin(dx);

return (dy/dx);//理解导数的定义

}

int main()

{

double x, dx;

scanf("%lf %lf",&x,&dx);//dx趋于0,无限小,dy/dx即导数

printf("目标值cos(%lf)=%lf\n",x,cos(x));

printf("导数值sin\'(%lf)=%lf\n",x,dY_dX(x,dx));

return 0;

}

#include <stdioh>

#include <mathh>

double PI = 314159265358979;

int main() {

double n = 1,x,sinx = 0,fn,alpha;

printf("x(度) = ");

scanf("%lf",&x);

alpha = x;

x = x  PI/ 180;

    fn = x;

    while(fabs(fn) >= 1E-6) {

sinx += fn;

fn = -fnxx/(2n(2  n + 1));

++n;

    }

printf("sin(%0lf) = %lf\n",alpha,sinx);

    return 0;

}

以上就是关于C语言求sinx的值,有我写的程序,请问错在哪里了全部的内容,包括:C语言求sinx的值,有我写的程序,请问错在哪里了、一道计算机FORTRAN95的编程题,按泰勒展开求sinx……即当输入值的值,运行输出结果为sinx的值!十万火急!、C语言编程求函数y=sinx在(0,1)区间的定积分等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10219498.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存