Verfasst am: 03.08.2015, 12:33
Titel: Randwerte als .m file übergeben
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)
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?
Nun stoppt Matlab, wenn der Fehler auftritt und Du kannst untersuchen, wie die Funktion aufgerufen wird.
Gruß, Jan
LuisA33
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 03.08.2015, 17:31
Titel:
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.
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:
"[]" 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
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
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.