python计算sinx的近似值_RUC_JudgeOnline 1003 计算cosx和sinx的近似值

计算cosx和sinx的近似值

Description

遍一个程序计算sinx和cosx的近似值,使用如下的台劳级数:

舍去的绝对值应小于ε

Input

输入文件包括2个实数x,ε,两个数间有一空格。

Output

输出文件共两行

第一行输出sinx的近似值

第二行输出cosx的近似值

Sample Input

5 0.001

Sample Output

-0.958776 0.284221

Source

习题06-01

问题分析:

这个题目是对公式的理解和实现。通过观察,发现一下的规律。

1.每一项的组成形式是X^K/K!;

2.每一项的符号与K有关。Kmod4为1,4的是正的,Kmod4为2,3的是负的;

3.sin是K为奇数时候的累加,cos是K为偶数时候的累加;

4.对于X的初值的处理,需要将这个数字转换成2*pi以内的数。

解决方案:

用一个while循环控制程序。维护里面的条件是单项的值小于给出的初值。对if进行一个奇数偶数的判断,可以在一个循环中完成对sinx和cosx的叠加分配。我使用了一个子函数item专门来计算每一项的值。在计算的时候使用一个大小为K的循环,来计算X^K/K!。具体的可以见参考程序。

参考程序:

#include

#include

const double pi=3.1415926; //define pi

double item(int n);

double x;

int main()

{

scanf("%lf",&x);

double e;

scanf("%lf",&e);

x=x-(floor(x/(2*pi)))*(2*pi); //change x to 0~2*pi

double sinx=0.0;

double cosx=0.0;

int n=0;

double now=item(n); //here we can change to do……while

while(fabs(now)>e)

{

if(n%2==0) { // if n%2==0 cosx+ else sinx+

cosx=cosx+now;

}

else{

sinx=sinx+now;

}

n++;

now=item(n);

}

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

printf("%lf\n",cosx);

return 0;

}

double item(int k)

{

double ans=1.0;

int i;

for(i=1;i<=k;i++) { //here to cal X^K/K!

ans*=x;

ans/=i;

}

if(k%4==2||k%4==3)

{

ans=-ans;

}

return ans;

}

分享到:

2010-12-14 01:39

浏览 2334

评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值