cos(29º)e的近似值值

当前位置: >
> 一道C语言题目求助输入精度e和实数x,用下列公式求cosx的近似值,精确到最后一项的绝对值小于e要
一道C语言题目求助输入精度e和实数x,用下列公式求cosx的近似值,精确到最后一项的绝对值小于e要
imzhanglei & at
一道C语言题目求助输入精度e&和实数x,用下列公式求cos&x&的近似值,精确到最后一项的绝对值小于e 要求定义和调用函数funcos(e,x)求余弦函数的近似值
然后我是这么做的没有错误但是不能算出要求的东西
#include&stdio.h&
#include&math.h&
int&main(void)
double&e,result,x;
double&funcos(double&e,double&x);
printf("输入精度:");
scanf("%lf",&e);
printf("x=");
scanf("%lf",&x);
result=funcos(e,x);
printf("cos&%f&=&%f",x,result);
double&funcos(double&e,double&x)
int&flag,digit,i;
double&denominator,sum,item,
denominator=1.0;
&&&&numerator=1.0;
while(fabs(item)&=e)
item=flag*numerator/
numerator=numerator*x*x;
digit=digit+2;
denominator=1.0;
for(i=i&=1;digit--)
denominator=denominator*i;
求指导哪里错误了
  #include&stdio.h$>$&&
&&&&#include&math.h$>$&&
&&&&double&funcos(double&e,double&x);&&&
&&&&double&fact(int&x);&&&
&&&&int&main(void)&&&
&&&&&&&&double&e,x,y;&&&
&&&&&&&&printf("Input&e:");&&&
&&&&&&&&scanf("%lf",&e);&&&
&&&&&&&&printf("Input&x:");&&&
&&&&&&&&scanf("%lf",&x);&&&
&&&&&&&&y=funcos(e,x);&&&
&&&&&&&&printf("cos%lf=%.2lf\n",x,y);&&&
&&&&&&&&return&0;&&&
&&&&double&funcos(double&e,double&x)&&&
&&&&&&&&int&n,p;&&&
&&&&&&&&double&z,m;&&&
&&&&&&&&z=p=0;&&&
&&&&&&&&n=1;&&&
&&&&&&&&while(1)&&&
&&&&&&&&{&&&
&&&&&&&&&&&&m=pow(x,p)/fact(p);&&&
&&&&&&&&&&&&if(m&e)&&&
&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&z=z+n*m;&&&
&&&&&&&&&&&&n=-n;&&&
&&&&&&&&&&&&p=p+2;&&&
&&&&&&&&}&&&
&&&&&&&&return&z;&&&
&&&&}&&&in8491 & &
& & (1)(0)
本问题标题:
本问题地址:
温馨提示:本问题已经关闭,不能解答。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-c语言求sin函数近似值精度问题!_百度知道
c语言求sin函数近似值精度问题!
想要实现输入弧度和误差范围,用泰勒算出范围内的值。但是一下程序精度只能达到0.5左右,再小就会出现-1#INDOO,要怎么该,我已经把所有变量都弄到最大了.......#include&stdio.h&#include&math.h&int main(){double x,u,t;long int i,b=1,k=1,a=1;double c=1,s=0;scanf(&%lf %lf&,&x,&u);do{for(i=1;i&=k+1;i++){a = (-1)*a;}for(i=1;i&=2*k-1;i++){b = b*i;c = c*x;}s = s+a*c/b;t = fabs(s-sin(x));k++;}while(t&u);printf(&%lf\n&,s);return 0;}
提问者采纳
你这个程序的设计思路有问题x-x^3/3!+x^5/5!.......是这个公式吧s=x;t=1.0;int flag=1;for(i=1;t&u;i+=2){
//这个是正负号变化常用的方式
t/=i*(i+1);
s+=flag*c*t;}这样特别是分母的处理方式,就不需要long型的变量了
提问者评价
原来是这样,感谢!
其他类似问题
按默认排序
其他1条回答
用matlab求吧,c语言精度不高
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁第13周报告2&&计算sin和cos的近似值
实验目的:学会使用自定义函数解决实际问题
实验内容:定义自定义函数,计算sin和cos的近似值
* 程序头部注释开始(为避免提交博文中遇到的问题,将用于表明注释的斜杠删除了)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
文件名称:计算sin和cos的近似值&&&&&&&&&&&&&&&&&&&&&&&&&&&&
者:薛广晨&&&&&&&&&&&&&&&&&&&&&&&&&&&&
* 完成日期:
2011&&&&&&&
* 版 本 号:
x1.0&&&&&&&&
* 对任务及求解方法的描述部分
* 输入描述:无
问题描述:自定义函数,用泰勒公式实现计算sin和cos的近似值,要求:(1)求sin、cos时,不能用数学库函数(即不得用#include&Cmath&),而是自己编函数实现,为区别,可以分别起名为mysin和mycos;(2)自定义函数要写在main函数之后;(3)自定义函数的效率问题必须考虑;(4)关于精度:当最后一项的绝对值小于0.00001时,累加结束。
程序输出:sin(π/2)、cos(87°)的值(提示:用泰勒公式在π/2附近误差较大,输出分别为0.911557和-0.26322,而真值分别为1和0.052336,当度数较小时,效果要好一些,请自行对比。)
* 问题分析:……
* 算法设计:使用泰勒公式
* 程序头部的注释结束(此处也删除了斜杠)
&iostream&&&
#include&Cmath&&
//为便于对比结果,main函数中调用了Cmath中的库函数sin和cos
const double pi=3.1415926;
double mysin(double);
double mycos(double);
double myabs(double);&&
//程序中需要求精度的绝对值,也用自定义函数完成吧
int main( )
&cout&&"sin(π/2)的值为"&&mysin(pi/2)&&
&cout&&"cos(87°)的值为"&&mycos((87.0/180)*pi)&&
&cout&&"sin(π/2)的更精确的值为"&&sin(pi/2)&&&
//库函数提供的值
&cout&&"cos(87°)的更精确的值为"&&cos((87.0/180)*pi)&&
&return 0;
//下面定义mysin函数
double mysin(double x)
&double s=x,a=x;
&&s=s*(x/i)*(x/(i+1))*(-1);
&}while(myabs(s)&0.00001);
&return(a);
//下面定义mycos函数
double mycos(double x)
&double s=1,a=1;
&&s=s*(x/i)*(x/(i+1))*(-1);
&}while(myabs(s)&0.00001);
&return(a);
//下面定义myabs函数
double myabs(double x)
&return(x);
运行结果:
经验积累:
1. 做科学计算时,需要对所用方法的数学性质有所了解,计算误差要引起注意
2. 要认真,好好的做
3. 注意每一个细节
上机感言:有点难啊,一个程序花很长时间,真是太累人了啊。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。输入精度 e 和 x,用下列公式求cos(x)的近似值_百度知道
输入精度 e 和 x,用下列公式求cos(x)的近似值
程序填空,不要改变与输入输出有关的语句。输入一个正整数 repeat (0&repeat&10),做 repeat 次下列运算:输入精度 e 和 x,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e。cos(x) = x^0/0!-x^2/2!+x^4/4!-x^6/6!+……要求定义并调用函数 funcos(e,x)计算 cos(x) 的值,函数形参e和x的类型均为double,函数类型是double。输入输出示例:括号内是说明输入:2
(repeat=2)0.001
(e=0.001, x=0)0. (e=0.0001, x=-3.14)输出:sum = 1.000000sum = -0.999999我的程序是这样的,练习系统说错了,求大神指点:#include &stdio.h&#include &math.h&double funcos(double e, double x);int main(void){
int repeat,
double e, sum,
scanf(&%d&, &repeat);
for(ri = 1; ri &= ri++){
scanf(&%le%le&, &e, &x);
sum=funcos(e,x);
printf(&sum = %f\n&, sum);
} return 0;}double funcos(double e,double x){ int i,
double sum,
double fact(int i);
while(fabs(item)&=e){
item=flag*pow(x,i)/fact(i);
i=i+2; }}double fact(int i){
return 1; else s=1; for(k=1;k&=i;k++){
提问者采纳
funcos 函数开始, 给初值
item = 99; 或给 item =否则
while(fabs(item)&=e){}
这个循环 无法开始运行。
提问者评价
Thank you!
其他类似问题
cos的相关知识
按默认排序
其他1条回答
给你提供个funcos函数,你写得太复杂啰嗦了,时间也不会短……double funcos(double e,double x){
double tmp,
for(sum=0,tmp=1,i=2;tmp&=e;i+=2){
(tmp*=x*x)/=(i*i-i);
(i&&1)&1 ? sum-=tmp : sum+=
return 1+}
不明觉厉啊,能不能解释一下?菜鸟要好好学习一下。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁C语言 用泰勒公式求sin(x)的近似值_百度知道
C语言 用泰勒公式求sin(x)的近似值
编写程序,用下面公式计算并输出sin(x)的近似值,直到最后一项的绝对值小于10-n(输出结果精确到小数点后n位)。Input有多组输入数据,每组占一行。每行是2个数,x和n,中间一个空格分隔。x是任意实数(最大不超过double能表示的范围),0 & n & 10Output为每组测试数据输出一行结果:sin(x)的近似结果。Sample Input9.21 50 6Sample Output0.213130.000000这是我的程序:#include &stdio.h&#include &math.h&int main(){
double jiechen(int b);
int i,a,b,n;
while(scanf(&%lf%d&,&x,&n)!=EOF)
sum=0;a=1,i=1;
sum=sum+(a*pow(x,b))/jiechen(b);
}while(((pow(x,b))/jiechen(b))&=pow(10,-n));
printf(&%.*lf\n&,n,sum);
}return 0;}double jiechen(int b){
for(n=1;n&=b;n++)
result=result*n;}提交就说我错..哪里不对?拜托了
我有更好的答案
按默认排序
在头文件上应该还要加上一个 头文件,#include &stdafx.h&就可以了
stdafx.h: No such file or directory
你是用的什么编译器?因为你用了scanf和printf这两个函数,看你编译器支持#include &stdio.h&库不,不支持的话就另外包含头文件。你用一下包含iostream.h或,stdio.h,cstdio.h
还是不行啊..运行出来答案是对的ACM上面说我错了
其他类似问题
泰勒公式的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 计算 的近似值 的文章

 

随机推荐