www.matheraum.de
Das Matheforum.
Das Matheforum des MatheRaum.

Für Schüler, Studenten, Lehrer, Mathematik-Interessierte.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Mathe
  Status Schulmathe
    Status Primarstufe
    Status Mathe Klassen 5-7
    Status Mathe Klassen 8-10
    Status Oberstufenmathe
    Status Mathe-Wettbewerbe
    Status Sonstiges
  Status Hochschulmathe
    Status Uni-Analysis
    Status Uni-Lin. Algebra
    Status Algebra+Zahlentheo.
    Status Diskrete Mathematik
    Status Fachdidaktik
    Status Finanz+Versicherung
    Status Logik+Mengenlehre
    Status Numerik
    Status Uni-Stochastik
    Status Topologie+Geometrie
    Status Uni-Sonstiges
  Status Mathe-Vorkurse
    Status Organisatorisches
    Status Schule
    Status Universität
  Status Mathe-Software
    Status Derive
    Status DynaGeo
    Status FunkyPlot
    Status GeoGebra
    Status LaTeX
    Status Maple
    Status MathCad
    Status Mathematica
    Status Matlab
    Status Maxima
    Status MuPad
    Status Taschenrechner

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Mathe-Seiten:Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
StartseiteMatheForenUni-NumerikImplementation von ln(x) in C
Foren für weitere Schulfächer findest Du auf www.vorhilfe.de z.B. Geschichte • Erdkunde • Sozialwissenschaften • Politik/Wirtschaft
Forum "Uni-Numerik" - Implementation von ln(x) in C
Implementation von ln(x) in C < Numerik < Hochschule < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Uni-Numerik"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Implementation von ln(x) in C: Frage
Status: (Frage) reagiert/warte auf Reaktion Status 
Datum: 00:40 Mi 01.12.2004
Autor: hochl

Hallo,

Ich will einige der bekannteren und haeufig benoetigten Mathefunktionen in C implementieren. Bei $ [mm] e^x [/mm] $, $ sin(x) $ und $ cos(x) $ habe ich mit der Taylorentwicklung ganz gute Ergebnisse bekommen. [mm] \wurzel[n]{x} [/mm] ist mit Newton auch einfach loesbar. Leider fehlt mir fuer den natuerlichen Logarithmus noch ein gutes Berechnungsschema. Deshalb meine Frage: Hat jemand einen Link wo fuer verschiedene Funktionen gute Berechnungsverfahren vorgestellt werden, am besten mit Fehlerabschaetzung damit man weiss bis wieviele Iterationen man rechnen muss um unterhalb einer gewissen Fehlerschranke zu bleiben? Das waere sehr hilfreich! :) Danke bereits im vorraus!

Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

        
Bezug
Implementation von ln(x) in C: Antwort
Status: (Antwort) fertig Status 
Datum: 03:53 Do 02.12.2004
Autor: Marc

Hallo hochl,

> Ich will einige der bekannteren und haeufig benoetigten
> Mathefunktionen in C implementieren. Bei [mm]e^x [/mm], [mm]sin(x)[/mm] und
> [mm]cos(x)[/mm] habe ich mit der Taylorentwicklung ganz gute
> Ergebnisse bekommen. [mm]\wurzel[n]{x}[/mm] ist mit Newton auch
> einfach loesbar. Leider fehlt mir fuer den natuerlichen
> Logarithmus noch ein gutes Berechnungsschema.

In meiner (Schul-) Formelsammlung steht die Reihe:

[mm] $\ln x=2*\summe_{k=0}^{\infty}\left(\bruch{x-1}{x+1}\right)^{2k+1}$ [/mm]

Ich denke mal, dass sich das aus der Taylorentwicklung herleiten läßt, ich hoffe, mit Fehlerabschätzung.

> Deshalb meine
> Frage: Hat jemand einen Link wo fuer verschiedene
> Funktionen gute Berechnungsverfahren vorgestellt werden, am
> besten mit Fehlerabschaetzung damit man weiss bis wieviele
> Iterationen man rechnen muss um unterhalb einer gewissen
> Fehlerschranke zu bleiben? Das waere sehr hilfreich! :)
> Danke bereits im vorraus!

Im Internet gesucht haben wirst du ja wahrscheinlich selbst.

In den Unibibliotheken gibt es bestimmt für alle möglichen numerische Verfahren Programmierbeispiele, jedenfalls habe ich mal so etwas von einer Professorin aus Berlin in PASCAL in der Hand gehalten.

Ansonsten könntest du dir auch die entsprechenden Quelltexte von einer math-library besorgen, im Linux-Kernel habe ich entsprechendes für den logarithmus zur Basis 2 gefunden.

Viele Grüße,
Marc

Bezug
                
Bezug
Implementation von ln(x) in C: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 00:25 Mo 06.12.2004
Autor: hochl

Nein, ich habe mit Taylor diese hergeleitet (und nochmal auf mathworld nachgeblaettert):

[mm] ln(x+1)=x-1/2*x^2+1/3*x^3-1/4*x^4+... [/mm]

Leider ist die Reihe nicht sonderlich gut geeignet zum ausrechnen, sie konvergiert nicht so schoen und schnell wie die z.B. fuer [mm] e^x. [/mm] In den Quellen der Libmath habe ich nachgeschaut, leider ist der Code ziemlich unuebersichtlich und es ist irgendwie nicht klar wie der Author auf seinen Loesungsweg kommt.

Es gibt doch sicher irgendwie Literatur zu dem Thema, ich habe etwas gesucht aber einfach nichts gefunden, ich bin mir aber sicher dass es da bestimmt was gibt und ich es nur nicht finden konnte bis jetzt. Trotzdem danke fuer die Antwort :)

Hat noch jemand ne Idee?

Bezug
                        
Bezug
Implementation von ln(x) in C: ln als Umkehrfunktion von exp
Status: (Antwort) fertig Status 
Datum: 13:06 Mi 15.12.2004
Autor: Hugo_Sanchez-Vicario

Hallo hochl,

ich hätte auch zunächst die ln(1+x)-Reihe vorgeschlagen, aber die konvergiert echt sehr schlecht.

Was hältst du davon, wenn du statt y=ln(x) zu berechnen, die Gleichung
exp(y)=x mit dem Newton-Verfahren löst. Da die Ableitung ja auch exp(x) ist, muss du diese Berechnung ja einmal pro Schritt durchführen. Und exp(x) ist linksgekrümmt ohne Extrema, so dass das Verfahren garantiert konvergiert.

Hugo

Bezug
                                
Bezug
Implementation von ln(x) in C: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 23:33 Mi 15.12.2004
Autor: hochl

Man kann das Argument durch Division mit e nach [-1/2, 1.2] skalieren, da konvergiert sie einigermassen. Aber so besonders schoen finde ich das nicht.

Bezug
                                        
Bezug
Implementation von ln(x) in C: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 11:25 Do 16.12.2004
Autor: Hugo_Sanchez-Vicario

Hallo hochl, du sprichst doch jetzt von der Taylor-Reihe von ln(1+x), oder?

Hast du mal meinen Vorschlag ausprobiert, und die Nullstelle von f(x)=exp(x)-ARG gesucht? Das ist ja das gleiche Nullstelle wie von x-ln(ARG), nur leichter berechenbar.

(Wenn du x=ln(ARG) berechnen möchtest.)

Hugo

Bezug
                                                
Bezug
Implementation von ln(x) in C: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 13:32 Do 16.12.2004
Autor: hochl

Ja, was besseres als Taylor hab ich noch nicht gefunden, leider. Ok man koennte es mit nem Spline annaehern, aber so richtig gluecklich macht mich das jetzt auch nicht. Das mit Newton und exp(x)-ARG ist leider nicht so gut, weil man ja fuer jede Iteration dann die Exponentialreihe ausrechnen muss, das will ich eigentlich vermeiden weil's extrem lahm wird. Aber klar, das waere schonmal ne Notloesung und muesste gehn (f'(x) und f''(x) beide > 0). Was mir noch in den Sinn kam: Gibt's vielleicht ne geschickte Moeglichkeit wasm it nem Wavelet zu machen? Damit habe ich noch nie was gemacht, aber das kann man doch auch nehmen wenn man ein paar Punkte kennt und damit die Funktion annaehern will.

Bezug
                                                        
Bezug
Implementation von ln(x) in C: weiss leider auch nicht
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 21:49 Do 16.12.2004
Autor: Hugo_Sanchez-Vicario

Ich fürchte, ich kann dir bei deinem Problem auch nicht richtig weiterhelfen... schade. Allerdings rate ich dir von allzu komplizierten Kostruktionen ab, das ist dann sicher auch zu rechenintensiv.

Hugo

Bezug
                                                        
Bezug
Implementation von ln(x) in C: weitere Ideen
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 22:34 Do 16.12.2004
Autor: mathemaduenn

Hallo hochl,
Zunächst: Hier kann ich auch nur Ansätze liefern. Durch e teilen bedeutet ja im bildbereich der Funktion minus eins abziehen also teile solange durch e(bzw. [mm] \wurzel{e} [/mm] ...) bis du in einem Bereich schöner Konvergenz deiner Reihe landest. Falls es nichts macht einige Funktionswerte parat(gespeichert) zu haben kannst Du natürlich auch Splines nehmen. Aufgrund der hohen Glattheit(x>1) der ln funktion sollten diese ausreichend sein Wavelets braucht man wohl für was anderes (z.B. Bildverarbeitung oder DGL)
gruß
mathemaduenn

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Uni-Numerik"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.matheforum.net
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]