發問時間: 電腦與網際網路程式設計 · 2 0 年前

C的程式幫我解查跟解答^^3Q

#include <stdio.h>

#include <math.h>

double f(double x) {return (1.0-cos(x))/(x*x);}

double g(double x) {return (sin(x)*sin(x))/(x*x)*(1.0+cos(x));}

void main(void)

{

int i;

for(i=1;i<=9;i++)

{

double x=1.0/pow(10,i);

printf("%12.10f \n",f(x));

printf("%12.10f \n",g(x));

}

}

各位高手大大

請幫我一個小忙

幫我看看這個程式有沒有錯誤

還有未什麼f(x)和g(x)的值會差那麼多??

請各位大大幫個忙

已更新項目:

這個程式是想比較f(x)和g(x)當x=0.1~x=0.000000001時

f(x)和g(x)的值各是多少??

1 個解答

評分
  • Lv 7
    2 0 年前
    最佳解答

    你的f(x)沒錯,不過你的g(x)錯了.因該是

    double g(double x) {return (sin(x)*sin(x))/((x*x)*(1.0+cos(x)));}

    因為

    (1.0-cos(x))/x^2 = (1.0-cos(x))*(1.0+cos(x))/((x^2)*(1.0+cos(x))) =

    (1-cos(x)*cos(x))/((x^2)*(1.0+cos(x))) = (sin(x)*sin(x))/((x^2)*(1.0+cos(x)))

    參考資料: Myself
還有問題?馬上發問,尋求解答。