|
elchico |
Forum-Fortgeschrittener
|
|
Beiträge: 87
|
|
|
|
Anmeldedatum: 04.05.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.08.2020, 14:35
Titel: besseli berechnet Inf
|
|
Hallo zusammen,
ich nutze folgenden Code:
Bei einem besselArg von ca. 7e+02 + 6e+02i passt noch alles, bei einem Wert größer 700 für den Realteil (zB 800 + 1i) wird für beide Ergebnisse nur Inf + 0e+00i berechnet. Leider brauche ich für meine Berechnungen einen Realteil größer 700.
Jetzt bin ich echt kein bessel-Profi, das habe ich so aus dem Modell entnommen, welches zu berechnen ist.
Meine Frage: Wie kann ich in besseli größere Werte als 700 + xxx*i eingeben? Oder ist das aus irgendeinem mathematischen (mir unbekannten) Grund Schwachsinn und führt deswegen bei Matlab zu Inf?
Vielen Dank zusammen.
LG
Michi
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.484
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 27.08.2020, 19:10
Titel:
|
|
Hallo,
die Zahlen, die mit Datentyp double darstellbar sind, sind begrenzt:
>> realmax("double")
ans =
1.7977e+308
Wenn das Ergebnis einer Berechnung größer wird, wird also inf angezeigt.
Ein Ausweg sind symbolische Berechnungen:
Allerdings musst du dann mit zunächst mit symbolischen Variablen weiterarbeiten.
Du kannst höchstens die Mantisse und den Exponenten trennen:
Sind das Endergebnis denn tatsächlich so riesige Zahlen und werden beispielsweise zwei diesen großen Zahlen dividiert?
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 ;)
|
|
|
elchico |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 87
|
|
|
|
Anmeldedatum: 04.05.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 27.08.2020, 19:32
Titel:
|
|
Hallo Harald,
mal wieder: Vielen Dank, dass Du Dich meines kleinen Problems annimmst.
Siehe unten:
Leider ist x tatsächlich bis 150 groß. Das heißt, ich werde mich mal in die symbolischen Berechnungen einlesen. Habe zwar schon mal davon gehört, allerdings ist das noch Neuland für mich.
Das Problem ist die Summe von a4+a5, weswegen ich selbst mit ge"scale"ter besseli Funktion (Scaling mit 1) die ganze Sache nicht ge"rescale"d bekomme.
Danke!
LG
Michi
PS: Falls Du doch einen einfacheren Ausweg siehst als symbolische Berechnungen, bin ich natürlich offen dafür
Beispielcode (ich hoffe, ich habe jetzt keine Fehler reingemacht):
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.484
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 27.08.2020, 20:42
Titel:
|
|
Hallo,
gerne doch.
Hier brauchst du bloß an den richtigen Stellen hin- und zurückzuwandeln:
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 ;)
|
|
|
elchico |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 87
|
|
|
|
Anmeldedatum: 04.05.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.08.2020, 17:14
Titel:
|
|
Guten Morgen,
jo, ich wandle zwar an anderer Stelle um, aber es funktioniert jetzt echt gut. Lediglich die Performance ist miserabel (das kostet wohl viel Rechenpower), aber für die 5 % der Fälle, wo das der Fall ist, kann ich damit leben
Vielen Dank.
LG
Michi
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.484
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 28.08.2020, 17:48
Titel:
|
|
Hallo,
symbolisch ist in der Tat (deutlich) langsamer als numerisch.
Du kannst ja numerische Berechnungen und über eine if-Abfrage überprüfen, ob da inf oder NaN herauskommt. Falls ja, symbolisch "nachrechnen".
Vielleicht gibt es auch Gesetze über Quotienten von Bessel-Funktionen, da müsste man mal suchen.
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 ;)
|
|
|
elchico |
Themenstarter
Forum-Fortgeschrittener
|
|
Beiträge: 87
|
|
|
|
Anmeldedatum: 04.05.17
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.08.2020, 23:40
Titel:
|
|
So habe ich es auch umgesetzt, jop. Und bei den 5 % der Fälle nehme ich die Performance-Einbußen gerne hin.
Danke Dir nochmal.
LG
Michi
|
|
|
|
|
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.
|
|