目录
一、问题描述
二、问题分析
三、程序设计描述
四、程序实现
一、问题描述
对给定的x计算出相应的的值
二、问题分析
用Taylor公式将 展开,其形式如下:
设
那么,并且有如下关系:
根据上面各项的关系,可以看出,前一项的运算结果可以参与下一项的运算(条件的递归化处理),从而减少计算的次数,提高效率。由于sinx是周期函数,故可将化为来处理,即使用弧度作为运算的度量。
三、程序设计描述
设置三个变量dSin、dDegree和dTemp,
分别存放sinx的值、用户输入的角度和泰勒展开式中一个项的值。
运算时,由于程序不能做无限制运算,因此,需要考虑展开多少项才能够满足计算的需求。为此,设置变量dMin来控制运算的精度,当展开式的某项值小于它的时候,结束展开式的运算。
算法:
根据相邻两项的关系,以迭代的方式,可以计算出泰勒公式中的每一项的值,经过累加就可以得出sinx的值。
四、程序实现
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<conio.h>
void main()
{
double dSin = 0.0, dTemp = 1.0, dArc = 0.0;
double pi = 3.1415926, dMin = 0.000001, dDegree = 0.0;
int k = 1;
printf("请输入角度:");
scanf("%lf", &dDegree);
dArc = dDegree * pi / 180;//角度转化为弧度进行计算
dTemp = dArc;
while (fabs(dTemp) > dMin)
{
dSin += dTemp;
k += 2;//提高效率
dTemp = (-1) * dTemp * dArc * dArc / (k*(k-1));
}
printf("sin(%f)= %.2lf", dDegree, dSin);
getchar();//让程序暂停,查看结果
}
更多推荐
C语言实现sin函数的程序设计
发布评论