本篇文章给大家谈谈c语言函数cos编程题,以及c语言求cosx的代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
1、C语言编程:使用函数求余弦函数的近似值:输入精度e,用下列公式求cos(x)的近似值2、一道C语言求cos的题目3、C语言编程,cosx问题4、C语言求cos精确值 泰勒公式5、c语言求cos的问题
C语言编程:使用函数求余弦函数的近似值:输入精度e,用下列公式求cos(x)的近似值
#includestdio.h
#includemath.h
int
main(void)
{
double
x,
e,cosx;
double
funcos(double
e,int
x);
printf(“e:
“);
scanf(“%lf”,e);
printf(“x:
“);
scanf(“%lf”,x);
//这里是%lf
cosx=funcos(e,x);
printf(“cos(x)=%.3f\n”,cosx);
return
0;
}
double
funcos(double
e,int
x)
{
int
flag,a,i;
double
sum,item;
double
fact(int
n);
item=1;
//这个初始化要大于e,否则不执行下面
flag=1;
a=0;
i=0;
sum=0;
while(fabs(item)=e){
item=(flag*pow(x,a))/fact(i);
sum=sum+item;
flag=-flag;
a=a+2;
i=i+2;
}
return
sum;
}
double
fact(int
n)
{
int
i;
double
result;
result=1;
for(i=1;i=n;i++){
result=result*i;
}
return
result;
}
一道C语言求cos的题目
本质有问题。
cos(x) = x^0/0!-x^2/2!+x^4/4!-x^6/6!+……
这个公式是运用泰勒公式把函数 f(x)=cos(x) 在 x=0 点展开成多项式 ,当 n 不是很大时 ,只有 x=0 附近的数才能算出比较准确的值,而当 n 很大时 n! 也非常大 ,这时若 x1 那么 x^n 也非常大 ,如果仍采用常规措施怎么可能会对呢?不溢出才怪。
给一些提示:
1,利用函数周期性,始终保持较小的 x ;
2,如果已经求得 t = x^n/n! ,那么
x^(n+2)/(n+2)! = t * x^2 / ( (n+1)*(n+2)) ;
这样整个运算过程中就能尽量避免出现太大的值 ,并能提高效率 ,这只是个思路,实现时请注意细节。
顺便给个粗略的实现,仅供参考,如下:
double funcos(double e, double x)
{
int flag = 1,m = 0;
double k = 1 ,sum = 0;
x = fmod(x,2*3.1415926) ;
while( fabs(k) = e || fabs(sum) 1 ){
sum += flag*k;
k /= ( (m+1)*(m+2) / (x*x) );
m += 2;
flag = -flag;
}
return sum;
}
你的程序其他地方没有问题,printf 不同于 scanf ,会自动对精度进行扩展,所以 printf(“%f”,…); 可以输出 double 。
C语言编程,cosx问题
请注意以下几点:1
,选择合适的数据结构,这将有助于和扩展。
2,算法完善,如果你正在写的困难,然后
尽量选择笨的办法,而不是费力编写复杂的代码
3,切成小代码尽可能的功能,一个功能一般不超过10行
4,变量命名约定不产生混淆
5,从最简单的,逐步的测试完成了测试部分的一部分,
不要等到一堆码,去测试,问题成片的结果,我不知道这个
6,精心挑选的测试情况下,不要随便进入,以防止隐藏的问题测试出
7,如果时间允许,尝试一个简单的评论
8,你可以添加一些测试代码,以确定程序状态
注意这几点,我认为,应该能够快速解决问题
C语言求cos精确值 泰勒公式
C语言程序:
#include stdio.h
#include math.h
int main()
{
double x;
double sum1, sum2, f = 1;
int i, t = 1;
printf(“x:”);
scanf(“%lf”, x);
i = 1;
sum1 = sum2 = 1;
for(i=2; ; i*=2)
{
f *= (i -1);
f *= i;
t *= -1;
sum2 += t * pow(x, i) / f;
if(abs(sum2 – sum1) 1e-6)
{
break;
}
sum1 = sum2;
}
printf(“cos(%lf) = %lf\n”, x, sum2);
return 0;
}
运行测试:
x:2
cos(2.000000) = -0.333333
c语言求cos的问题
double fact(int a){
int i ;
double sum; //返回值类型是double,你这里应该定义成相同的类型才对
sum=1;
for(i=1;i=a;i++)sum=sum*i;
return sum;
}
double funcos(double e, double x){
double dcos,xiang; //cos是math中的一个函数名,不能与之重复
int a,fuhao;
dcos=0,fuhao=1,a=0;
do{
xiang=pow(x,a)/fact(a);
dcos=xiang*fuhao+dcos;
a=a+2;
fuhao=-fuhao;
}while(xiang=e) ; //要这样写才能精确
return dcos;
}
关于c语言函数cos编程题和c语言求cosx的代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。