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

Wellengleichung mit Matlab

 

medizintechnik
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 06.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2009, 11:50     Titel: Wellengleichung mit Matlab
  Antworten mit Zitat      
Hallo kann mir jemand vlt. bei dieser Aufgabe mal helfen?
es geht um Wellengleichung in 1D. Das soll irgendwie mit numerischer Ableitung gehen!!!

Danke

1. Erstellen Sie ein Matlab Skript, mit dem Sie die Wellengleichung in einer Dimension
numerisch lösen können. Dabei soll die Amplitude der Welle an 800 unterschiedlichen
Punkten/Orten (die, um es einfach zu machen, einen "virtuellen" Abstand vonjeweils
1 Meter zumjeweiligen Nachbarn aufweisensollen) iterativ für aufeinanderfolgende
Zeitschritte simuliert und grafisch angezeigt werden. Auch hier wollen wir der
Konvention folgen, dass der Abstand zwischen zwei Zeitschritten genau eine Sekunde
repräsentieren soll.
Die Wellenlänge soll dabei 100 Meter und die Periodendauer 50s betragen-
Die Welle soll von einem schwingenden Dipol erzeugt werden, der sich in der Mitte
(d.h. bei x=400Meter) befindet und der ein elektrisches Feld der Stärke E(t) =
sin((2*pi/T)*t +PHIo) erzeugt.

Hinweis zur Implementierung in Matlab:
Wenn der Vektor E=zeros(1,800); den Vektor der elektrischen Feldstärke am Ort x
repräsentiert, so können Sie diesen Vektor während jedem Zeit(Iterations)schritt mit
dem Befehl plot(E); darstellen. Sie können dann sehr einfach einen "Film" erzeugen,
der die zeitliche Entwicklung der Wellenamplitude zeigt, indem Sie direkt nach dem
plot Befehl noch M(t)=getframe; anfügen.Nach Durchlauf Ihres Skriptes können Sie
den Film mit movie(M;30); anschauen

Code:
%

clear all
T=50;
sw=1;

E=zeros(1,800);
LapE=zeros(1,800);
%detE=zeros(1,800);
for t=1:1200;
E(400)=sin(((2*pi)/T)*t);
     
plot (E)
M(t)=getframe;
end
Private Nachricht senden Benutzer-Profile anzeigen


Thomas84

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2009, 13:18     Titel:
  Antworten mit Zitat      
Zuerst einmal benötigt man die Wellengleichung

E(x,t) = sin(wt - kx + phi0) wobei k = w/c x > 0
E(x,t) = sin(wt - kx + phi0) wobei k = -w/c x < 0

Dann geeignet diskretisieren:
x = -400:400;
t = 0:100;

Dann musst du dir noch ne Schleife basteln in der die Feldstärke zu verschiedenen Zeiten geplotet wird.
 
medizintechnik
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 06.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2009, 15:20     Titel:
  Antworten mit Zitat      
hallo,
erst mal danke für die Antwort. Wie soll denn das gehen mit der for-Loop zum polen!?!? bin neu eingestiegen !!
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas84

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2009, 08:17     Titel:
  Antworten mit Zitat      
hab kein Matlab hier, aber ich denke ungefähr so:

Code:


x = -400:400;
t = 0:100;

lambda = 100;
T = 50;
w = 2*Pi/T;
k = 2*Pi/lambda;
c = lambda/T;
phi0 = 0;

for l = 1:length(t)
    E(1:400) = sin(w*t(l) - k*x + phi0);
    E(401:800) = sin(w*t(l) + k*x + phi0);
    plot(x,E);
    pause(1);
end

 
 
medizintechnik
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 06.11.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.11.2009, 13:51     Titel:
  Antworten mit Zitat      
Danke sehr nett! Die Sache ist ich muss numerische Ableitung anwenden (erste und zweite), also zeros- und Lap-Vektoren soll drin bleiben (laplace) , genau so wie im ersten Code das ich geschrieben habe.
Nur wie gesagt die Ableitung müssen noch dabei eventuell in die for-loop. Der plot soll so aussehen als ob man zum beispiel ein Antenne auf X=400 m z.b. gestellt hätte!!
und der Vektor soll von 1 bis 799 gehen! weil man bei der numerischen Ableitung immer den rechten und den linken nachbarn braucht um ableiten zu können. z.b. Element 799 hat 798 und 800 als nachbarn, aber 800 hat nur den linken also 799!!
ne Idee ungefähr wie das geht!

Danke vielmals.
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.