3d Plot für Wellengleichung < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) überfällig | Datum: | 14:51 So 21.06.2009 | Autor: | uniklu |
Aufgabe | Plotten Sie einen 3 dimensionalen Graphen mit den folgenden Daten:
u(x,t) - z-Werte
t ... Zeit
x ... Position |
Hallo!
Das ist eine imaginäre Fragestelltung. Ich habe die Wellengleichung numerisch durch die finite differenzen methode gelöst und möchte nun meine daten graphisch repräsentieren. Jedoch weiß ich nicht wie das funktioniert. der Befehl "surf" liefert mir immer einen Fehler:
Error using ==> graph3d.surfaceplot.surfaceplot
Invalid input arguments
Error in ==> surf at 81
hh = double(graph3d.surfaceplot(args{:},'parent',cax));
Error in ==> wave_equation at 73
surf(x,t,u);
Ich habe "#" an den stellen geschrieben, an denen man daten erhält.
ich hoffe jemand kann mir hierbei helfen.
Der code sieht folgendermaßen aus:
function wave_equation
%**********************************************************************
%*
%* Loesung der eindimensionalen Wellengleichung
%*
%* [mm] (d/dt)^2 [/mm] u(x,t) = [mm] c^2 (d/dx)^2 [/mm] u(x,t)
%*
%* auf dem Intervall [0,L] mit einem expliziten Verfahren 2. Ordung
%* fuer den Spezialfall c=1, L=1 und die Anfangs- und Randbedingungen
%*
%* u(x,0) = f(x)
%* d/dt u(x,0) = g(x)
%*
%* u(0,t) = u(L,t) = 0
%*
%* (Die Anzahl der raeumlichen Teilintervalle ist mit n=100 fixiert.)
%*
%* Eingabe
%*
%* tmax...Integration von t=0 bis t=tmax
%* dtpr...Zeitintervall zwischen Ausgaben in File
%*
%* Ausgabe
%*
%**********************************************************************/
clc
n = 100;
c = 1.0; % mein a
e = 2.718281828459;
tmax = 0.0;
dtpr = 0.0;
dx = 1.0/n; % mein h
dt = dx/c; % mein k
alpha = c * dt/dx;
alpha2 = alpha * alpha;
itmax = (tmax/dt + 0.5);
itpr = (dtpr/dt + 0.5);
x{1} = 0.0;
u{1} = 0.0;
for j=2:n
x{j} = j * dx;
% Anfangsbedingung u(x,0) = f(x);
u{j} = e^(-100*(x{j}-0.5)*(x{j}-0.5));
end;
x{n+1} = 1.0;
u{n+1} = 0.0;
uold{1} = 0.0;
for j=2:n
% Anfangsbe
% dingung
% d/dt
% u(x,0) =
% g(x)
uold{j}=(1.0-alpha2)*u{j}+0.5*alpha2*(u{j+1}+u{j-1})-dt * (-200*c*(x{j}-0.5)*e^(-100.0*(x{j}-0.5)*(x{j}-0.5)));
end;
uold{n+1}=0.0;
t = 0.0;
for it=2:n+1
%ausgabe x[j],t,u[j]
###################################
###################################
end;
for it=2:itmax+1
unew{1} = 0.0;
for j=2:n
unew{j}=2.0*(1-alpha2)*u{j}+alpha2(u{j+1}+u{j-1})-uold{j};
end;
unew{1} = 0.0;
t = it * dt;
for j=1:n+1
uold{j} = u{j};
u{j} = unew{j};
end;
if mod(it,itpr) == 0
for j=1:n+1
%Ausgabe x[j],t,u[j]
###################################
###################################
end
end
end;
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:20 Di 23.06.2009 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|