Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Fachkräfte:
Softwareentwickler (m/w) für automatische Codegenerierung
Softwareentwicklung mit MATLAB/Simulink und dSPACE TargetLink im Bereich Fahrwerkregelsysteme
Elektronische Fahrwerksysteme GmbH - Ingolstadt

Entwicklungsingenieur (m/w) für modellbasierte Softwareentwicklung
Modellbasierte Softwareentwicklung mit MATLAB/Simulink und dSPACE TargetLink
Elektronische Fahrwerksysteme GmbH - Ingolstadt

Softwareentwickler Automotive Getriebesteuerungen (m/w)
Umsetzung der Softwarefunktionalität modellbasiert nach Spezifikation
MBtech Group GmbH & Co. KGaA - Sindelfingen

Software-Entwicklungsingenieur (m/w) Referenzierungsmethoden autonomes Fahren
Automatisierung von Bewertungsmethoden und Kalibrierverfahren nach Kundenanforderungen
Elektronische Fahrwerksysteme GmbH - Ingolstadt

Senior Modellierer (w/m) für Hochvolt-Ladefunktionen
Modellbasierte Softwareentwicklung für elektrische Energiesysteme
Carmeq GmbH - Berlin

weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Matlab nachkommastellenzahl erweitern

 

Mathe123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2017, 08:31     Titel: Matlab nachkommastellenzahl erweitern
  Antworten mit Zitat      
Hallo
ich hab schon verschiedene beiträge gelesen und ausprobiert aber nichts funktioniert Sad
ich würde gerne eine rechengenauigkeit von 10^-40 haben. wie bekomme ich das hin?
die funktion soll in einer schleife mit verschiedenen werten berechnet werden

sqrt(pi/2)*erf(((y(i)-sigmawb(i))/sigma)/sqrt(2))+sqrt(pi/2)


Mathe123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2017, 08:33     Titel:
  Antworten mit Zitat      
was ich unter anderem schon ausprobiert habe :
format long, mit vpa also symbolischen variablen, format e und diesen befehl str_e = sprintf('%0.5E',q1) leider hat nichts funktioniert
 
Jan S
Moderator

Moderator


Beiträge: 10.481
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 27.03.2017, 15:57     Titel:
  Antworten mit Zitat      
Hallo Mathe123,

Das Standard-Format double verwendet etwa 15 signifikante Stellen. So lange die Werte klein sind, ist eine absolute Genauigkeit von 10^-40 kein Problem damit, eine relative Genauigkeit aber nicht.

"format long, format e und sprintf" ändern daran gar nichts. VPA aber schon, denn das ist das Mittel der Wahl. Bitte erkläre, warum das für Dich nicht funktioniert.

Gruß, Jan

Zuletzt bearbeitet von Jan S am 31.03.2017, 09:30, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
mathe123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.03.2017, 07:21     Titel:
  Antworten mit Zitat      
Naja es gibt halt nicht die zahl aus die ich ausrechne wenn ich es zum Beispiel bei Wolfram Alpha eingebe :/
es ändert leider gar nichts an der ausgabe
 
mathe123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.03.2017, 08:15     Titel:
  Antworten mit Zitat      
Ich habe als Beispiel die funktion integriert und die werte direkt eingesetzt
test=vpa(sqrt((pi/2))*erf((-106.45)/sqrt(2)) - sqrt((pi/2))*erf((-inf)/sqrt(2)))
hier kommt null raus und bei wolfram alpha kommt 2.22 mal 10 ^-16 raus
eigentlich lasse ich das ganze ja über eine funktion mit symbolischen variablen laufen. bei dem test hier ist vpa vermutlich nutzlos aber dennoch kommt auch über die funktion nichts anderes heraus also die null

hier der funktioonsaufruf
wert=vpa(eval(int(funktion1, -inf,-106.45)))
 
Jan S
Moderator

Moderator


Beiträge: 10.481
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 31.03.2017, 09:35     Titel:
  Antworten mit Zitat      
Hallo mathe123

Code:
test=vpa(sqrt((pi/2))*erf((-106.45)/sqrt(2)) - sqrt((pi/2))*erf((-inf)/sqrt(2)))
 

Hier werden die Werte zunächst im DOUBLE-Format berechnet und danch per VPA mit mehr Stellen angezeigt. Sinnvoll wäre, die Berechnungen gleich mit symbolischen Variablen durchzuführen, denn das Problem liegt ja nicht in der Anzeige des Wertes, sondern in der Berechnung. Schaue Dir die Beispiele zum vpa Befehl an.

Bei Wolfram bekommst Du 2.22e-16? Interessant. Das ist genau die kleinste Zahl, die man zu double(1.0) addieren kann, ohne dass die begrenzte Genauigkeit das Ergebnis unverändert lässt. Siehe eps . Vermutlich handelt es sich also bei der Ausgabe in Wolfram Alpha lediglich um einen Rundungsfehler.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2017 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.