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

Randwerte als .m file übergeben

 

LuisA33

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.08.2015, 12:33     Titel: Randwerte als .m file übergeben
  Antworten mit Zitat      
Hello,

mein Programm zum lösen einer pde bringt mir immer den gleichen Error und ich finde den Fehler einfach nicht. Ich hab schon einiges probiert aber ohne Erfolg -.-
Vielleicht kann mir jemand helfen.
Mein Programm sieht so aus:
Die Matrizen gd, sf, ns hab ich aus der pdetool GUI exportiert und beschreiben die Geometrie meines Problems.
Code:

dl = decsg(gd,sf,ns)
[p,e,t] = initmesh(dl)
   % [qmatrix,gmatrix,hmatrix,rmatrix] = pdebound(p,e) <-- function file
b = @pdebound
u = assempde(b,,p,e,t,1,0,10)
 

Die Funktion pdebound sieht so aus:
Code:

function [qmatrix,gmatrix,hmatrix,rmatrix] = pdebound(p,e)

ne = size(e,2) % number of edges
qmatrix = zeros(1,ne);
gmatrix = qmatrix;
hmatrix = zeros(1,2*ne);
rmatrix = hmatrix;
regler = 6;

for k = 1:ne
    x1 = p(1,e(1,k)); % x at first point in segment
    x2 = p(1,e(2,k)); % x at second point in segment
    xm = (x1 + x2)/2; % x at segment midpoint
    y1 = p(2,e(1,k)); % y at first point in segment
    y2 = p(2,e(2,k)); % y at second point in segment
    ym = (y1 + y2)/2; % y at segment midpoint
    switch e(5,k)
        case {1,2,3,4} % rectangle boundaries
            hmatrix(k) = 1;
            hmatrix(k+ne) = 1;
            rmatrix(k) = regler*(x1-y1);
            rmatrix(k+ne) = regler*(x2-y2);
        otherwise
            qmatrix(k) = 0;
            gmatrix(k) = 0;
    end
end
 

Aber es kommt immer wieder der gleiche Fehler. Ich dachte es liegt an der function file, die mir 4 Matrizen ausgiebt. Aber das Problem müsste doch mit den function handle gelöst sein?
Code:

Error using pdebound
Too many input arguments.

Error in pdeefxpd (line 10)
  [q,g,h,r]=feval(bl,p,e,u,time);

Error in pdeexpd (line 40)
[q,g,h,r]=pdeefxpd(p,e,u,time,bl);

Error in assemb (line 95)
  [q,g,h,r]=pdeexpd(p,e,bl);

Error in assempde (line 185)
  [Q,G,H,R]=assemb(b,p,e);
 


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 03.08.2015, 16:10     Titel: Re: Randwerte als .m file übergeben
  Antworten mit Zitat      
Hallo LuisA33,

Ich habe noch nie PDEs mit Matlab bearbeitet. Ein Blick in die Dokumentation wirkt auf mich so, als müsste pdecount 4 Inputs akzeptieren:
www.mathworks.com/help/pde/ug/bound.....by-writing-functions.html

Zitat:
Ich dachte es liegt an der function file, die mir 4 Matrizen ausgiebt. Aber das Problem müsste doch mit den function handle gelöst sein?

Das verstehe ich nicht.

Code:
Error using pdebound
Too many input arguments.

Meine Theorie würde zu dieser Fehlermeldung passen.

Du kannst den Debugger verwenden:
Code:

Nun stoppt Matlab, wenn der Fehler auftritt und Du kannst untersuchen, wie die Funktion aufgerufen wird.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
LuisA33

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.08.2015, 17:31     Titel:
  Antworten mit Zitat      
Hallo,

ja man kann 4 inputs eingeben. Aber wenn meine Funktion nicht von "u" oder "time" abhängt kann man diese Felder leer lassen und nur 2 inputs eingeben. Daran denke ich wird es nicht liegen.
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 03.08.2015, 22:35     Titel:
  Antworten mit Zitat      
Hallo LuisA33,

Zitat:
ja man kann 4 inputs eingeben. Aber wenn meine Funktion nicht von "u" oder "time" abhängt kann man diese Felder leer lassen und nur 2 inputs eingeben.

Aus welcher Stelle in der Dokumentation schließt Du das?
Ich finde nur:
Zitat:
If your boundary conditions do not depend on u or time, those inputs are [].


Zitat:
Daran denke ich wird es nicht liegen.

Anstatt es du denken, kannst Du es sehr leicht ausprobieren. Füge doch bitte einfach mal testweise diese beiden Input-Argumente an. Denn das Problem würde eindeutig zur Fehlermeldung passen: Die Funktion wird mit mehr Inputs aufgerufen, als sie entgegennimmt. Sämtliche Beispiele, die ich für pdebound finde, haben 4 Inputs und laut Deiner Fehlermeldung wird die Funktion auch mit 4 Inputs aufgerufen:
Zitat:
Code:
[q,g,h,r]=feval(bl,p,e,u,time);


Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
90Bine
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 19.06.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2015, 14:02     Titel: LuisA33
  Antworten mit Zitat      
Hallo,

vielen Dank für deine Hilfe du hattest recht nun funktioniert es Smile
Ich bin davon ausgegangen, dass

Zitat:
If your boundary conditions do not depend on u or time, those inputs are [].


heißt, dass man diese Inputs dann leer lässt. Aber was heißt dann "[]" ?
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 10.08.2015, 20:07     Titel: Re: LuisA33
  Antworten mit Zitat      
Hallo 90Bine,

"[]" heißt, dass die entsprechenden Inputs den Wert [] haben, also die leere Matrix.
Wenn man die entsrpechenden Inputs weglassen könnte, würde in der Dokumentation stehen, dass man sie weglassen kann ;-)

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
.





 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.