0 Daumen
610 Aufrufe

ich muss gerade einen Regelungsmechanismus für eine Heizungsanlage auf einem relativ leistungsschwachen Chip programmieren. Dafür muss ich u.a. den natürlichen Logarithmus als Funktion nachbauen. Dazu habe ich folgende Reihendarstellung gefunden:$$\ln(1+x)=x-\frac{x^2}{2}+\frac{x^3}{3}-\frac{x^4}{4}\pm\cdots$$Mein Problem ist jetzt, dass diese Reihendarstellung nur funktioniert, falls |x|<1 ist.

Was mache ich aber, wenn \(x>1\) ist?

Meine Idee:

Ich dividiere \(x\) so lange durch \(e\), bis ich einen Werte kleiner als \(e\) erhalte und zähle die Anzahl der Divisionen mit, auf den Rest wende ich dann die Formel von oben an. Ich mach am besten mal als Beispiel den natürlichen Logarithmus von 10:

10/e = 3,67879... ist noch größer als e, also wieder durch e dividieren

3,67879/e =1,35335... das ist jetzt kleiner als e

Nun wende ich die Formel von oben an: ln(1,35335)=ln(1+0,35535)=0,30258.

2-mal durch e dividiert und dann noch 0,30258 dazu gibt: ln(10)=2,30258

Daraus ergeben sich nun 2 Fragen:

a) Ist meine Vorgehensweise korrekt?

b) Habt ihr eine Idee, einen Trick, einen mathematischen Zusammenhang, wie ich den Logarithmus von großen Zahlen schneller berechnen kann?

..

Avatar von

2 Antworten

0 Daumen
 
Beste Antwort

Aloha :)

Als erstes, ja, deine Vorgehensweise führt zum richtigen Ergebnis für den Logarithmus. Aber du musst bei sehr großen \(x\)-Werten sehr oft durch e dividieren. Da wäre es besser, du würdest einmal \(\frac{1}{e}\) berechnen und dir das Ergebnis speichern. Dann kannst du anstatt der teuren Divisionen die schnelleren Multiplikationen verwenden.

Ich möchte dir noch eine mathematische Lösung vorschlagen, für den Fall, dass \(x>1\) ist:

$$\ln(1+x)=-\ln\left(\frac{1}{1+x}\right)=-\ln\left(\frac{1+x-x}{1+x}\right)=-\ln\left(1-\frac{x}{1+x}\right)$$Um die Berechnung der Potenzreihe kommst du nicht drumrum, aber du brauchst mit dieser Formel zumindest keine Divisionen durch \(e\).

Avatar von 148 k 🚀

Wow, !! Genau so was in der Art hatte ich gesucht...

0 Daumen

Hallo

 wenn man vorher weiss in welchem Bereich x von ln(x) liegt, gibt man dem Chip ne Tabelle und interpoliert.

Sonst ist deine Methode richtig und gut.

Gruß lul

Avatar von 106 k 🚀

Danke für den Tipp und das Lob :)

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community