WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Differentialgleichungssystem

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2013, 17:09     Titel:
  Antworten mit Zitat      
Achja,
und bzgl. des direkten Ausrechnens der Summe.
Wir sollten, das ja gerade per fft machen.


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.05.2013, 17:33     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Kann es sein, dass Matlab von diesem Vektor bei der fft ausgeht?

Die Frage verstehe ich nicht. MATLAB geht nicht von irgendetwas aus, sondern berechnet schlicht und einfach die FFT des Arguments.
Zitat:

Achja, und bzgl. des direkten Ausrechnens der Summe.
Wir sollten, das ja gerade per fft machen.

Schön und gut. Deswegen kann man ja trotzdem temporär mit Summen statt FFT arbeiten um zu sehen, ob es tatsächlich daran liegt?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2013, 18:24     Titel:
  Antworten mit Zitat      
Ich hab jetzt:
Code:

v=0.1;
N=100;
NT=100;
NX=200;
m=ones(N+1,1);
k=(-N/2:N/2)';
x=linspace(0,2*pi,NX);
AB=quadv(@(y)BurgerABalt(y,k,m),0,2*pi);
[t,ak]=ode45(@(t,ak)Burger1alt(t,ak,k,v,N),linspace(0,2*pi,NT),AB);
 


Code:

function dakdt = Burger1alt(t,ak,k,v,N)
dakdt=zeros(N+1,1);
dakdt=0*t-v*(k.^2).*ak-conv(1i*k.*ak,ak);
 


Code:

function u0psi0=BurgerABalt(y,k,m)
u0psi0=(m*sin(y)).*exp(-1i*k*y)/(2*pi);
 


und es scheitert schon daran, dass der mir sagt:
Error using -
Matrix dimensions must agree.

Error in Burger1alt (line 3)
dakdt=0*t-v*(k.^2).*ak-conv(1i*k.*ak,ak);

der Fehler liegt genau an dem conv Term.
Das kann aber schon nicht sein, da ak ja ein N+1 komponentiger Vektor ist.
und k ebenfalls.
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2013, 18:32     Titel:
  Antworten mit Zitat      
Sry mein Fehler conv is größer als der input Vektor
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2013, 18:51     Titel:
  Antworten mit Zitat      
Code:

v=0.005;
N=100;
NT=100;
NX=200;
k=(-N/2:N/2)';
x=linspace(0,2*pi,NX);
AB=quadv(@(y)BurgerABalt(y,k),0,2*pi);
[t,ak]=ode15s(@(t,ak)Burger1alt(t,ak,k,v,N),linspace(0,2*pi,NT),AB);
B=exp(1i*k*x);
C=real(ak*B);
set(figure,'Renderer','zbuffer')
set(gca,'nextplot','replacechildren')
mov(NT)=struct('cdata',[],'colormap',[]);
 for J=1:NT
     plot(x,C(J,:))
     axis([0 2*pi -1.2 1.2])
     mov(1,J)=getframe;
 end


Code:

function dakdt = Burger1alt(t,ak,k,v,N)
dakdt=zeros(N+1,1);
dakdt=0*t-v*(k.^2).*ak-conv(1i*k.*ak,ak,'same');
 



Code:

function u0psi0=BurgerABalt(y,k)
u0psi0=(sin(y)).*exp(-1i*k*y)/(2*pi);
 


Jetzt läufts. Wie vermutet liegt es an der fft.
Wie man das löst weiß ich aber auch noch nicht.
Zudem für v gegen 0 is der ode15s solver aber genauso schlecht wie der ode45er
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.05.2013, 19:12     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Zudem für v gegen 0 is der ode15s solver aber genauso schlecht wie der ode45er

Wieso schlecht? Liefern sie nicht die gewünschten Ergebnisse?
Gegebenenfalls kannst du z.B. die Toleranzen ändern.

Ein Problem könnte zudem sein, dass du ja bereits mit der Aufspaltung in die ak eine Diskretisierung und somit eine Annäherung vornimmst, die aber nicht in den Toleranzen der Solver berücksichtigt wird - wie auch.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2013, 19:21     Titel:
  Antworten mit Zitat      
Zugegeben
Schlecht ist ein wenig übertrieben.
Ich kann auch einfach N erhöhen.
Welche Toleranzen meinst du genau?
Dachte die solver sind schon dynamisch?
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2013, 19:27     Titel:
  Antworten mit Zitat      
Ach du meinst RelTol und AbsTol
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.05.2013, 19:32     Titel:
  Antworten mit Zitat      
Hallo,

genau, ich meinte RelTol und AbsTol.

Zitat:
Dachte die solver sind schon dynamisch?

Was meinst du damit?

Der Klarheit halber: es gibt hier zwei Arten von Diskretisierung, eine Ortsdiskretisierung, die du vornimmst und von der der Löser nichts "weiß" und eine zeitliche Diskretisierung, die der Löser überwacht. Es kann aber durchaus sein, dass die Überwachung der zeitlichen Diskretisierung nichts bringt, wenn die Ortsdiskretisierung nicht gut genug ist.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2013, 19:46     Titel:
  Antworten mit Zitat      
Dynamisch im Sinne von der Schrittweite bzw. der Überprüfung von der du sprichst.
Intern läuft ja ein Runge-Kutta 4. Ordnung das durch Runge-Kutta 5 überwacht wird. Weichen die Werte zu stark im Rahmen der angegebenen Fehler voneinander ab, so verringert der ja die Schritt Weite.
Mehr meinte ich nicht.
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.05.2013, 20:07     Titel:
  Antworten mit Zitat      
Ich Danke dir aber erstmal vielmals.
Wegen der fft muss ich dann nochmal gucken.
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button 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.