我正在为我们学校做一个项目,我们需要创建一个程序来计算 sin x 和 cos x 的泰勒展开级数的近似值,只使用 *stdio.h 并且没有用户定义的函数 *other than int main(),从 -180 到 180 的所有角度,增量为 +5。以下是我的代码:
#include <stdio.h>
#define PI 3.141592653589
#define NUMBER_OF_TERMS 10
int
main()
{
int cosctr, sinctr;
double ctr, radi;
double cosaccu, costerm, sinaccu, sinterm;
for (ctr = -180; ctr < 185; ctr = ctr + 5) {
radi = ctr * PI/180.0;
cosctr = 1;
cosaccu = 1;
costerm = 1;
sinctr = 2;
sinaccu = radi;
sinterm = radi;
while (cosctr <= 2*NUMBER_OF_TERMS) {
costerm = costerm*(-1)*(radi*radi)/(cosctr*(cosctr + 1));
cosaccu = cosaccu + costerm;
cosctr+=2;
} do {
sinterm = sinterm*(-1)*(radi*radi)/(sinctr*(sinctr + 1));
sinaccu = sinaccu + sinterm;
sinctr+=2;
} while (sinctr <= 2*NUMBER_OF_TERMS);
printf("%.2lf %.12lf %.12lf %.12lf\n", ctr, radi, cosaccu, sinaccu);
} return 0;
}
上面的代码对于 15 项扩展近似是准确的。但是,如果我将 NUMBER_OF_TERMS 更改为例如 5 或 10,则近似值有缺陷。
有什么建议么?
*编辑:让我澄清一下。我需要获得 5 项、10 项和 15 项的近似值。我不能使用 stdio.h 之外的任何其他库(我之前在发这篇文章时不知道使用 '<' '>' 会省略文本)。我不能使用 int main() 之外的任何其他函数(对于我之前的解释含糊不清,我深表歉意)。