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)区间的定积分等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)