|
|
Welche Integralfunktion am besten nutzen? |
|
bluesaturn |

Forum-Anfänger
|
 |
Beiträge: 42
|
 |
|
 |
Anmeldedatum: 06.03.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.07.2014, 21:07
Titel: Welche Integralfunktion am besten nutzen?
|
 |
Hallo Forum,
meine Integranden habe eine Kombination aus Besselfunktionen und exponentiell abfallenden Kurven oder nur Besselfunktion.
Ich denke, es gibt aber eine Singularitaet an der Intervallgrenze. Bisher habe ich quadgk benutzt, aber schafft Matlab das? Ich habe leise Zweifel, dass Matlab richtig integriert. Ich habe ein anderes Programm, nicht Matlab benutzt, welches ein Ergebnis liefert, dass den Messdaten ähnlicher sieht.
Kann da jemand vielleicht eine Empfehlung aussprechen?
VG
blue
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 09.07.2014, 21:34
Titel:
|
 |
Hallo,
quadgk wird salopp gesagt versuchen, innerhalb der vorgegebenen Toleranzen zu bleiben. Klar ist natürlich, dass das nur unter gewissen Annahmen garantiert werden kann. Wenn ein schmaler, hoher Peak z.B. nicht abgetastet wird, kann das das Ergebnis beträchtlich verfälschen.
Es kann z.B. einen Versuch wert sein, die Toleranzen herabzusetzen (über die Parameter 'AbsTol' und 'RelTol').
Alternativ auch andere Integrationsmethoden versuchen, z.B. auch
Bei relativ einfachen Integranden kann auch Symbolisches Integrieren ein Versuch wert sein.
Am besten ansehen kann man sich das wohl anhand eines konkreten Beispiels.
Grüße,
Harald
|
|
|
jac |

Forum-Newbie
|
 |
Beiträge: 7
|
 |
|
 |
Anmeldedatum: 24.06.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.07.2014, 17:22
Titel:
|
 |
Singularitäten sind natürlich generell für (nicht nur numerische) Integration ein Problem, wenn der Betrag gar nicht konvergiert wird es schwierig. quadgk ist im Allgemeinen schon ein sehr leistungsfähiger Algorithmus.
Wenn du die Lage der Singularität allerdings bereits von vornherein auf die Integrationsintervallgrenze eingrenzen kannst, so versuch doch einfach mal manuell die Integrationsgrenze etwas runter zu setzen, so dass bis "kurz vor der Singularität" integriert wird. Das wird ja letzlich sowieso das sein, was du willst, denn in eine Singularität rein zu integrieren sollte mangels Konvergenz wenig Sinn machen oder?
|
|
|
bluesaturn |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 42
|
 |
|
 |
Anmeldedatum: 06.03.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.08.2014, 22:34
Titel:
|
 |
Guten Morgen.
Ich stehe leider immer noch auf dem Schlauch mit der Integration in Matlab.
Ich würde gerne folgendes integrieren:
Die Funktion f beinhaltet eine Besselfunktion, die oszilliert, und eine weitere ekelige Funktion. Analytisch komme ich hier auf keinen Fall voran.
Zuvor hatte ich es schon einmal mit dblquad probiert und das Ergebnis war sehr merkwürdig, da ich, wie ich vermute, nicht die Stützstellen wählen kann.
Wie würdet ihr oben folgendes integrieren in Matlab?
Was nicht funktioniert, ist folgendes:
Zitat: |
f=@(q,alpha)(L*sinc(q.*alpha.*(L./2)./pi).*quadgk(@(rcx)r_e.*nrcx(rcx).*2.*pi.*rcx.*besselj(0,q.*rcx.*sqrt(1-alpha.^2)),a,R0));
f9=@(q,alpha)(f(q,alpha)).^2;
test=@(q)quadgk(@(alpha)f9(q,alpha),0,1,'RelTol',reltol,'AbsTol',abstol)
|
Ich bekomme den Fehler "Matrix dimensions must agree.", aber ich habe wirklich alles mit dem Punkt multipliziert.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 22.08.2014, 23:25
Titel:
|
 |
Guten Abend eher,
versuch doch mal, das ganze zu entschachteln. Man könnte z.B. auch alles in eine .m-Datei schreiben.
Ansonsten bitte den Code reproduzierbar machen, also Beispiele für sämtliche Konstanten angeben.
Wenn du dblquad mit niedrigen Toleranzen aufrufst, sollte das Ergebnis nicht "merkwürdig" sein.
Grüße,
Harald
|
|
|
bluesaturn |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 42
|
 |
|
 |
Anmeldedatum: 06.03.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.08.2014, 23:40
Titel:
|
 |
Guten Abend, Harald.
Entschuldigung, ich bin gerade in einer anderen Zeitzone unterwegs.
Alles ist in einer .m-Datei geschrieben.
Gut, ich bastle mal einen Beispielcode, der durchlaeuft. Kann ich die Konstanten einfach als Nummern angeben? Sie kommen eigentlich alle aus anderen Berechnungen, die aber den Code wieder aufblähen.
Was sind denn bitte niedrige Toleranzen? Welchen Wertebereich würdest du empfehlen?
Re "merkwuerdig":
Mein Kollege empfahl mir damals eigentlich auf dblquad zu verzichten. Er ist der Meinung, da unsere Funktionen alle oszillieren aufgrund der Besselfunktion und der Tatsache, dass man die Stützstellen nicht wählen kann bei Matlab, besser "geschachtelt" zu integrieren. Sprich für alle q und alle alpha diese Integrale auszuwerten. Allerdings bin ich mir nicht sicher, wie das dann mit der Normalisierung klappt.
Aber gut, ich bastle mal ein lauffähiges Minimalbeispiel.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 23.08.2014, 00:04
Titel:
|
 |
Hallo,
z.B. reltol = 1e-12 sollte MATLAB dazu zwingen, mit ausreichend feiner Abtastung zu arbeiten. Es kann zwar sein, dass dblquad da nicht gerade effizient ist, aber die Ergebnisse sollten ausreichend genau sein.
Grüße,
Harald
|
|
|
bluesaturn |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 42
|
 |
|
 |
Anmeldedatum: 06.03.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.08.2014, 00:08
Titel:
|
 |
Guten Morgen
Haettest du auch einen Wert für abstob vielleicht, bitte?
VG
b
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 23.08.2014, 00:19
Titel:
|
 |
Hallo,
ebenso 1e-12.
Grüße,
Harald
|
|
|
|
|
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 - 2025
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.
|
|