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

MATLAB Script ausführen

 

Fragender
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 13.03.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2018, 21:45     Titel: MATLAB Script ausführen
  Antworten mit Zitat      
Hallo Forum,

ich möchte gerne die Lösung der Wärmeleitungsgleichung visualisieren.
Hierzu habe ich,
unter folgender Quelle (ab Seite 32): https://www.mathematik.uni-wuerzburg.de/~borzi/proj_parabolic.pdf,
einige fertige Scripte gefunden.
Leider war es mir aber bisher nicht möglich diese fehlerfrei Auszuführen
oder herauszufinden wie sie auszuführen sind, ohne Fehlermeldungen zu provozieren.
Insbesondere die Parameter konnte ich nicht übergeben.

Weil ich wahrscheinlich - mangels Matlap Fähigkeiten - einige elementare Fehler gemacht habe,
verzichte ich darauf hier das hereinzustellen, was ich bisher gemacht habe.

Kann mir jemand an dem Script unter 4.2 (Seite 33) erklären,
wie man beispielhaft damit umgeht?
Mit geht es weniger um ein Verständnis des Scripts,
als darum, die Möglichkeit zu haben
die Lösung der Differentialgleichung mit verschiedenen Parameter, beispielhaft zu visualisieren.

Ich bin Schüler und brauche die Visualisierung für meine Facharbeit.
Mangels Zeit bis zum Abgabezeitpunkt kann ich mich leider nicht umfassend in Matlab einarbeiten.

Hier die Scripte die ich ausführen möchte:

Code:
function [time]=explizit(u,f,lam,c,T,paus,anz)
%
% Eingabeparameater:
% u.......Anfangsbedingung
% f.......Heizung, beziehungsweise Kuehlung
% lam.....Verhaeltnis von delta_t zu delta_x2^2
% c.......Waermeleitkonstante
% T.......Zeit, bis zu der iteriert wird
% paus....Zeit, die ein plot mindestens angezeigt werden soll
% anz.....Anzahl der Iterationen, die zwischen zwei Plots gemacht werden
%
% Ausgabeparamter:
% time..benoetigte CPU-time
paus=0; figure(1) time=cputime; t=0; [N uy]=size(u); [fx
fy]=size(f);
h=1/(N-1); % r\"aumliche Schrittweite
k=lam*h^2; % zeiltliche Schrittweite
gitter=0:h:1; % Gitterpunkte
plot(gitter,u); title(t); pause(paus); iter=0; while t<T
u(2:end-1)=u(2:end-1)+c*lam*(u(1:end-2)-2*u(2:end-1)+u(3:end))+k*f;
iter=iter+1;
t=t+k;
if iter==anz
plot(gitter,u);
title(t);
pause(paus);
iter=0;
end
end time=cputime-time;
 


Hilfreich wäre es auch zu wissen wie man den Code unter 4.5 (Seite 39) ausführt.

Code:
function [time]=adi(U,f,mu,T,c,paus,anz)
% berechnet mit einem expliziten Verfahren
% die Loesung der Waermeleitungsgleichung
% du/dt-c*Laplace(U)=f auf dem Raumbereich [0,1]x[0,1] fr den Zeitraum
% [0,T]. Als Randbedingung wird der Rand der Eingabematrix U verwendet
% Eingabewerte
% U.....quadratische Matrix, Anfangswertmatrix
% f.....quadratische Matrix mit einer um 2 kleineren Dimension wie U,
% die Heizung oder Kuehlung
% mu..Verhaeltnis von Zeit zu Raumdiskretisierung: lam=c*delta_t/(delta_x)^2
% T.....Zeitpunkt, bis zu dem gerechnet wird
% c.....Waermeleitungskonstante
% paus..Pause zwischen den Plots
% anz...Anzahl der Iterationen zwischen zwei plots
% Ausgabewert
% time..zum rechnen bentigte cputime
[N,yU]=size(U); [xf,yf]=size(f);


Code:
if (N~=yU) | (N-xf~=2) | (N-yf~=2)
error(’error’)
end dx=1/(N-1); dt=mu*dx^2/c; haupt=2*ones(N-2,1);
neben=-ones(N-3,1) factor=0.5*mu;
A=diag(haupt)+diag(neben,-1)+diag(neben,1); alpha=2/mu;
B=(alpha*eye(N-2)+A); figure(1) t=0; mesh(U); title(t);
pause(paus); V=zeros(N,N); time=0; iter=0; while t<=T
timestart=cputime;
V(2:end-1,2:end-1)=B\((alpha-2)*U(2:end-1,2:end-1)+U(2:end-1,3:end)+...
...U(2:end-1,1:end-2)+2*dx^2/c*f);
dummy=B\(((alpha-2)*V(2:end-1,2:end-1)+V(3:end,2:end-1)+...
...V(1:end-2,2:end-1)+2*dx^2/c*f)’);
U(2:end-1,2:end-1)=dummy’;
time=time+cputime-timestart;
t=t+dt;
iter=iter+1;
if iter==anz
mesh(U);
title(t);
pause(paus);
iter=0;
end
end


Code:
U=zeros(50);
>> F=zeros(48);
>> F(30:33,30:33)=-10;
>> F(10:13,10:13)=10;
>> [time]=adi(U,F,6,0.5,5,0.05,1);
 


Code:
[time]=heat2d(U,F,6,0.5,5,0.05,1);


Ihr würdet mir wirklich sehr weiterhelfen.
Vielen Dank für eure Mühe.

Euer Fragender

proj_parabolic.pdf
 Beschreibung:
Quelle: https://www.mathematik.uni-wuerzburg.de/~borzi/proj_parabolic.pdf

Download
 Dateiname:  proj_parabolic.pdf
 Dateigröße:  594.92 KB
 Heruntergeladen:  773 mal
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 - 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.