1

我正在为我们学校做一个项目,我们需要创建一个程序来计算 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() 之外的任何其他函数(对于我之前的解释含糊不清,我深表歉意)。

4

0 回答 0