Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Funktion lnx berechnen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.12.2002, 14:35 Uhr
~Rini
Gast


Die Aufgabe lautet:
Entwerfen und implementieren Sie ein C++ Programm, welches Funktionswerte der
logarithmischen Funktion y= f(x) = lnx berechnet.
Verwenden Sie dazu folgende Summenformel:

2[ (x-1/x+1) + (x-1)^3 / 3*(x+1)^3 + (x-1)^2n+1 / (2n+1)*(x+1)^2n+1 + ....]
für x>0

Die Berchnung soll abbrechen, wenn der Betrag der Differenz zweier aufeinanderfolgender
Glieder Z2n-1 und Z2n+1 kleiner als ein zu definierender Abbruchwert epsilon wird.
epsilon soll entweder entweder vom Programmierer oder vom Nutzer festgelegt werden und
ist ein sehr kleiner reeller Zahlenwert (z.Bsp. 0. 00000000001). Geben sie zur Kontrolle
den Funktionswert aus den die Funktion log(double x) (definiert in math.h) liefert.


Kann mir jemand dabei helfen? Wenigstens ein Ansatz? Bitte!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.12.2002, 15:05 Uhr
~0xdeadbeef
Gast


(x-1)^(2n+1) / ((2n+1)*(x+1)^(2n+1)) kannst du umformen zu 1/(2n+1) * ((x-1)/(x+1))^(2n+1). Potenzieren mit ganzzahligen Exponenten ist simpel, und der Rest ist ne einfache Iteration. Ich habs jetzt nicht getestet, aber ich würd es so anfangen:

C++:
#define EPSILON (0.0000001)

double potenz(double basis, int exponent) {
  double ret = 1.0;
  while(exponent--) ret *= basis;
  return ret;
}

double ln(double x) {
  double zwischensumme = 0.0, summand;
  for(int n = 1; (summand = (1.0/(2*n+1)) * potenz((x-1)/(x+1),2*n+1)) > EPSILON; ++n) zwischensumme += summand;
  return 2 * zwischensumme;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: