目录

一、问题描述

二、问题分析

三、程序设计描述

四、程序实现 


 

一、问题描述

对给定的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函数的程序设计