Hirdetés

Új hozzászólás Aktív témák

  • Dirty_Pio

    csendes tag

    válasz Jester01 #943 üzenetére

    Szoval ha ki szeretned szamitani az Euler-fele szam egyik x-ik hatvanyat( e^x -t ), akkor az a dolgod, hogy veszed a Taylor fele felbontasat a szamnak, ami lenyegebe a megoldas: e^x=1+e^1/1!+e^2/2!+e^3/3!+... egeszen egy megfeleloen nagy szamig. Es magyarazas kozbe ra is jottem mi is a problema, azaz en nem valasztottam eleg nagy szamot azaz enm eleg pontos az osszegem, mivel az elso x db szamot vettem igy ha mondjuk az e^4-t szeretnem kiszamolni csak az osszeg elso 4 tagjat veszem, es a kovetkezo szamok nem eleg kicsik ahhoz, hogy lehanyagolhato legyen. A kodban a kovetkezo javitasokat eszkozoltem :

    #include <stdio.h>

    int ex(int n, int x)
    {
    if (n>0) return x*ex(n-1,x);
    else return 1;
    }
    int fact(int n)
    {
    if (n>0) return n*fact(n-1);
    else return 1;
    }
    float xex(int n, int x)
    {
    float q;
    if (n>0) {q=(float)ex(n,x)/fact(n);
    // printf("%f \n",q);
    return q+xex(n-1,x);
    }
    -->>else return 0;<<-- mivel igy ketszer szamolna a 0 faktorialist h
    }
    int main(void)
    {
    int x,n;
    scanf("%d",&x);
    ->>printf("%f",xex(32,x)); <<- ennyit bit meg a float vagy a memoria... ha nagyobb pontossaggal probalkozok akkor errort kapok. Mondjuk igy sem olyan pontos a szamitas, mint amilyent a google mutat, de azt hiszem nincs mar mas hiba. Ha ti talaltok szoljatok!
    system("pause");
    return 0;
    }

Új hozzászólás Aktív témák