|
|
unzureichende Genauigkeit bei Berechnung |
|
MatthiasJ |
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 24.08.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 24.08.2020, 18:23
Titel: unzureichende Genauigkeit bei Berechnung
|
|
Hallo, mein Script gibt mir nicht die erwarteten Ergebnisse. Ich glaube das liegt an Berechnungsungenauigkeiten. Ich berechne mir mit Hilfe von solve ein Vektor(siehe Anhang) der dann folgende Formeln berechnet:
Nun gibt er mir für r an manchen Stellen 36.250000000000010 aus und an anderen 36.250000000000000. Eigentlich müssten die Werte im Vektor r von oben nach unten immer größer werden (auch wenn nur sehr gering). Mit dem Befehl digits(...) die Genauigkeit zu erhöhen hat nix gebracht. Gibt es noch andere Möglichkeiten um die Genauigkeit zu erhöhen? Funktioniert digits(...) eventuell nicht mit dem solve Befehl?
Beschreibung: |
|
Download |
Dateiname: |
alpha_fraeser_stirnschnitt.mat |
Dateigröße: |
263 Bytes |
Heruntergeladen: |
304 mal |
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 26.08.2020, 09:00
Titel:
|
|
Hallo,
spätestens wenn du auf Double wechselst gibt es nicht mehr als 16 Stellen relative Genauigkeit.
solve
liefert an sich exakte Ergebnisse als symbolische Variablen. Wenn du exakte Ergebnisse willst, solltest du auch mit den symbolischen Variablen weiter rechnen.
Das Problem scheint mir weniger bei der Verwendung der Lösung zu liegen sondern schon bei ihrer Ermittlung. Du müsstest also den Code posten, wie du alpha_fraeser_stirnschnitt berechnest.
Da alpha_fraeser_stirnschnitt nicht monoton ist, würde ich auch nicht erwarten, dass r monoton ist.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
MatthiasJ |
Themenstarter
Forum-Newbie
|
|
Beiträge: 2
|
|
|
|
Anmeldedatum: 24.08.20
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 26.08.2020, 13:47
Titel:
|
|
Hallo,
schon mal danke für die Antwort. Beim nachschauen ist mir aufgefallen, dass ich nicht mit solve, sondern mit vpasolve rechne, um die Berechnungsdauer zusenken. Durch vpasolve erhalte ich eine Variable u, die dann später zur Ermittlung von alpha_fraeser_stirnschnitt beiträgt. Die Variable u konvertiere ich auch direkt nach dem vpasolve mit double() um. Ich darf also nicht auf double wechseln und muss die symbolischen Variablen komplett durch ziehen?
Hier mein Code:
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 26.08.2020, 16:35
Titel:
|
|
Hallo,
Zitat: |
Ich darf also nicht auf double wechseln und muss die symbolischen Variablen komplett durch ziehen? |
Wenn du die volle Genauigkeit, die du über digits eingestellt hast, behalten möchtest, dann ganz genau. Wie gesagt, Double kann nur eine begrenzte Stellenanzahl. Hier sieht man das schön:
Mit solve muss man eine Gleichung normal nur einmal lösen und kann dann verschiedene Zahlen einsetzen. solve löst halt exakt, während vpasolve zwar eine beliebig gute Annäherung gibt, aber eben immer noch eine Annäherung.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
|
|
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.
|
|