|
|
Fehler im Code zur berechnung eines Cosinuswertes |
|
Dippuff |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.06.2014, 12:34
Titel: Fehler im Code zur berechnung eines Cosinuswertes
|
|
Hallo ihr Matlab-Profis,
ich schreibe grade eine Funktion zur Berechnung eines Cosinuswertes, mit Hilfe der Taylorreihe:
Die Eingabeparameter der Funktion sind "eps" und "x".
"x" ist dabei der X-Wert, von dem der Y-Wert berechnet werden soll.
"eps" ist eine Zahl zwischen Null und Eins, die angibt, bis zu welcher Genauigkeit der Y-Wert berechnet werden soll.
Der Ausgabeparameter "Summe" soll den berechneten Y-Wert enthalten.
Mein Problem ist nun, dass der berechnete Y-Wert nicht richtig ist, und ich habe keine Ahnung warum. Ich hoffe ihr könnt mir weiterhelfen.
|
|
|
|
|
Dippuff |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.06.2014, 17:14
Titel:
|
|
Aha ich konnte das Problem lösen.
Wenn die äußere Schleife mehr als ein Mal durchlaufen wurde, hat die Variable "Nenner" immernoch der Wert vom letzten durchlauf.
Ich habe nun eine Zeile [18] eingefügt, in der der Wert zurückgesetzt wird.
|
|
|
Dippuff |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.06.2014, 17:23
Titel:
|
|
Bei der Überprüfung der Funktion habe ich nun einen Fehler festgestellt:
Die Funktionswerte stimmen nur bis zu einem X-Wert von etwa 30. Danach werden die Funktionswerte extrem groß.
Ich habe keine Ahnung woran das liegen könnte. Hat jemand eine Idee?
|
|
|
Dippuff |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.06.2014, 13:54
Titel:
|
|
Kann mir hier niemand weiterhelfen ?!
|
|
|
Thomas84 |
Forum-Meister
|
|
Beiträge: 546
|
|
|
|
Anmeldedatum: 10.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.06.2014, 06:45
Titel:
|
|
Schau dir doch mal die einzelnen Summanden der Taylor-Reihe an. Mit steigendem x werden die sehr groß. Durch das (-1)^n haben sie zudem ein alternierendes Vorzeichen. Wenn man große Zahlen voneinander abzieht kommt es zu numerischen Ungenauigkeiten.
Beispiel:
viele Grüße
Thomas
|
|
|
Dippuff |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.06.2014, 16:17
Titel:
|
|
Vielen Dank für die Antwort Thomas.
Bedeutet das, dass die Taylorreihe einfach nicht für große X-Werte geeignet ist?
|
|
|
Thomas84 |
Forum-Meister
|
|
Beiträge: 546
|
|
|
|
Anmeldedatum: 10.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.06.2014, 06:20
Titel:
|
|
Ja. Aber du kannst ja die Periodizität ausnutzen und vor die restlichen Berechnungen
schreiben. Dann tritt das Problem nicht mehr auf.
viele Grüße
Thomas
|
|
|
Dippuff |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.06.2014, 10:56
Titel:
|
|
Ich versteh nicht so genau wie du das meinst Thomas.
Kannst du das vielleicht kurz erklären, bin noch Anfänger
|
|
|
Jan S |
Moderator
|
|
Beiträge: 11.057
|
|
|
|
Anmeldedatum: 08.07.10
|
|
|
|
Wohnort: Heidelberg
|
|
|
|
Version: 2009a, 2016b
|
|
|
|
|
|
Verfasst am: 09.06.2014, 20:52
Titel:
|
|
Hallo Dippuff,
Die Taylor-Entwicklung ergibt eine Näherungs-Formel um einen bestimmten Punkt herum. Eine Taylorreihe für den X-Wert 0 ist nicht akkurat für die Berechnung beim X-Wert 30.
Nun kannst Du die Periodizität des Cosinus ausnutzen: Statt cos(30) auszurechnen, ist cos(rem(30,2*pi)) besser geeignet, wenn Du eine Taylor-Entwicklung um 0 verwendest.
Gruß, Jan
|
|
|
Dippuffer |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 10.06.2014, 17:24
Titel:
|
|
Ah okay. Oh man, ich habs gecheckt
Danke Jungs
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|