wzór eulera

0

chce obliczyc liczbe e ze wzoru :
user image
nie mam pojecia jak zapisac kod , prosze o pomoc.

0
double silnia(int silnia){
  double tmp = 1;
  if(silnia == 1 || silnia == 0)return 1;
  for(int i=2;i<=silnia;i++)
    tmp *= i;
  return tmp;
}
double pow(int base,int exp){
    double tmp=base;
    if(base == 0)return 1;
    if(base == 1)return base;
    for(int i=0;i<exp;i++)
      tmp*=base;
    return tmp;
}
double euler(int x){
  double tmp=0;
  for(int i=0;i<=x;i++)
    tmp += pow(x,i)/silnia(i);
  return tmp;
}
0

Funkcji "pow" nie trzeba implementować samodzielnie - można skorzystać z dobrodziejstwa podstawowych bibliotek i wykorzystać funkcję "pow" z biblioteki "cmath" ;-)

A tak poza tym to dlaczego zabijasz jego myślenie dając mu gotowe rozwiązanie? :> :-P

0

Kod podany przez @khadgara jest niedobry.

  1. Dlaczego przy liczeniu ex należy zsumować akurat x+1 składników?
  2. Jeżeli mamy już wyliczony składnik s_n=\frac{x^n}{n!}, to kolejny należy liczyć tak s_{n+1}=\frac{s_n*x}{n+1}. Użycie funkcji silnia() i pow() jest niewłaściwe.
0
bogdans_niezalogowany napisał(a)

Kod podany przez @khadgara jest niedobry.

  1. Dlaczego przy liczeniu ex należy zsumować akurat x+1 składników?
  2. Jeżeli mamy już wyliczony składnik s_n=\frac{x^n}{n!}, to kolejny należy liczyć tak s_{n+1}=\frac{s_n*x}{n+1}. Użycie funkcji silnia() i pow() jest niewłaściwe.

Dodam jeszcze:
3. A gdyby ktoś chciał policzyć user image

Ad 1. Wyrazy podanego ciągu należy sumować aż do osiągnięcia założonej dokładności.

0

Można dużo optymalniej.
Zamiast liczyć dla każdego wyrazu ciągu silnia i potęga, można akumulować wynik. Ewentualnie spamiętywać poprzednie wyniki.

0

@up, nie wymyślasz przypadkiem koła i prochu na nowo?

0

Nie rozumiem gdzie tu wymyślanie koła na nowo, może mnie źle zrozumiałeś.
Taki kod:

float nominator = x;
float denominator = 1;
float sum = 1;
for(int i = 1 i < n; ++i) {
   sum += nominator/denominator;
   nominator *= x;
   denominator *= denominator+1;
}

Jest krótszy i wydajniejszy (nie będe się wgłebiał ile ma n wynosić ;P)

0

W tym widzę wymyślanie koła, że ja to napisałem wcześniej.

0

... to kolejny należy liczyć tak s_{n+1}=\frac{s_n*x}{n+1}. Użycie funkcji silnia() i pow() jest niewłaściwe.

0

Tzn uważasz się za wynalzcę koła? :-D ;-)

0

Za wynalazcę to nie, ale za pierwszego, który przypomniał, że lepiej jeździć na kołach niż na elipsach czy innych trójkątach. ;-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1