簡體   English   中英

用於計算正弦的C程序給出了不准確的結果

[英]C program to calculate sine is giving an inaccurate results

我只能用#include<stdio.h>編寫這個程序。

我必須從用戶那里讀到'n'系列的最高功率。

x=45 and n=9 ,程序給出0.7068251967 但是當我使用我的計算器時,我得到0.7068251828

我還必須使用遞歸。

#include<stdio.h>

float pow(float n, int p)
{
if(p == 0)
    return 1;
else
    return n * pow(n, p-1);
}

int fact(int n)
{
if(n == 0)
    return 1;
else
    return n * fact(n-1);
}

int main()
{
int n, x, i, sign = 1;
float sum, r;


printf("Enter the angle in degrees.\n");
scanf("%d", &x);

r = 3.14 * x / 180.0;

printf("Enter the odd number till which you want the series.\n");
scanf("%d", &n);

if(n % 2 == 0)
    printf("The number needs to be an odd number.\n");
else
{


for(i = 1, sum = 0; i <= n; i += 2, sign *= -1)
{
    sum += (sign * pow(r, i)) /  fact(i);
}

printf("The sum of the series is %.10f.\n", sum);
}


return 0;
}

我認為一個原因是你將pi估計為3.14。 也許你的計算器會考慮pi的更多數字。 嘗試使用更多數字進行近似pi。

@Mat是對的,使用M_PI而不是你的'窮人'3.14。 此外,並不總是將x取冪為冪n或階乘。 請注意,和的下一項:a_ {k + 2} = - a_ {k} x ^ 2 /(k(k-1)),(偶數項為零)使用類似的東西

double s=x,a=x,x2=-x*x;
int i;
for (i=3;i<=n;i+=2)
{
   a*=x2/i/(i-1);
   s+=a;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM