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:
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!
(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; }