www.vorkurse.de
Ein Projekt von vorhilfe.de
Die Online-Kurse der Vorhilfe

E-Learning leicht gemacht.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Teams · Forum · Wissen · Kurse · Impressum
Forenbaum
^ Forenbaum
Status Mathe-Vorkurse
  Status Organisatorisches
  Status Schule
    Status Wiederholung Algebra
    Status Einführung Analysis
    Status Einführung Analytisc
    Status VK 21: Mathematik 6.
    Status VK 37: Kurvendiskussionen
    Status VK Abivorbereitungen
  Status Universität
    Status Lerngruppe LinAlg
    Status VK 13 Analysis I FH
    Status Algebra 2006
    Status VK 22: Algebra 2007
    Status GruMiHH 06
    Status VK 58: Algebra 1
    Status VK 59: Lineare Algebra
    Status VK 60: Analysis
    Status Wahrscheinlichkeitst

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Matlab" - Differentialgleichungen
Differentialgleichungen < Matlab < Mathe-Software < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Differentialgleichungen: DGL mit Schleife lösen
Status: (Frage) überfällig Status 
Datum: 14:24 Sa 12.05.2007
Autor: cleophus

Aufgabe
[mm] \phi ''=(4/(f^2*B^2))*((v/r*cos(\beta) [/mm] - [mm] a*sin(\beta))*(KG-T/2)*cos(\phi) [/mm] - [mm] g*GZ(\phi)); [/mm]
soll mit MatLab gelöst werden. Ziel ist, [mm] \phi [/mm] gegen die Zeit (t=0:1:500s) zu plotten
Anfangsbedingungen sind t=0; [mm] \phi=0; \phi [/mm] '=0

Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.

Hallo MatLab-Kenner!

Ich entwickle (manche erinnern sich vll an mein letztes Problem) immer noch ein Programm, mit dem ich das Krängungsverhalten eines Schiffes im Vollkreis untersuchen soll. Die Unterprogramme habe ich z.T. Dank dieses Forums hingekriegt und nun geht es also darum, diese m-files mit einem Hauptprogramm zusammenzufassen und auf diese Art und Weise eine Differentialgleichung zweiter Ordnung zu lösen.

g, f, B, KG und T sind feste Werte, die ich in einem Unterprogramm ('Schiff') zusammengefasst habe,
v, r, [mm] \beta [/mm] und a sind zeitabhängige Variable, die ich jede für sich in einem Unterprogramm mit einer spline-Approximation aus Stützstellen errechnet habe.
[mm] GZ(\phi)) [/mm] ist ebenfalls in einem Unterprogramm als function-file geschrieben (damit hab ich beim Zugreifen darauf auch noch Schwierigkeiten).
Auf all diese Unterprogramme (6 an der Zahl) soll nun das Hauptprogramm zugreifen und für die jeweiligen Zeitschritte die Werte in die DGL einsetzen.

Ich habe ziemlich wenig, um nicht zu sagen, gar keine, Erfahrung mit Schleifen... Könnt ihr mir Tipps geben? Ich habe erstmal ein Flussdiagramm erstellt, aber die Umsetzung gelingt mir einfach nicht. Mein Dozent sprach noch von der Taylor-Reihe, um uns einen Hinweis für die Bearbeitung zu geben... Tja... stimmt, sowas hatte ich in Mathe mal :-/ Aber wie ich das in MatLab schreibe...

Ich bin für jede Anregung dankbar!

        
Bezug
Differentialgleichungen: bin (ein bisschen) weiter
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 19:07 Mi 16.05.2007
Autor: cleophus

Hallo nochmal!
Also ich war unterdesse natürlich nicht untätig und hab mich u.a. in diesem Forum über Schleifen schlau gelesen. Jetzt hab ich da eine zusammengebastelt, die nach einigen schlaflosen Nächten auch keine offensichtlichen Fehlermeldungen mehr produziert, aber ich habe ein großes Problem:
Ich will eigentlich n=500 berechnen lassen, und das errechnete [mm] \phi [/mm] dann plotten lassen. Allerdings sieht der Graph nur so lange ansatzweise brauchbar aus, wie ich n nicht größer werden lasse als ca 130. Kann mir das jemand erklären? Wie kann ich n größer machen?



% Unterprogramme einlesen
Geschwindigkeit;
Beschleunigung;
Kruemmung;
Driftwinkel;
% Konstanten
g=9.81;
[mm] c=4/(f^2*B^2); [/mm]
Schiff;
% Anfangsbedingungen
dt=1;   % Schrittweite in der Zeit
n=100;  % Anzahl der Zeitschritte
phi=zeros(1,501);
phi1=zeros(1,501);
phi2=[];
% Algorithmus
% Schleife
for k=0:dt:n-1;
    phi2(k+1)=c*((v(k+1).^2./r(k+1).*cos(beta(k+1))-a(k+1).*sin(beta(k+1)))*(KG-T/2)*cos(phi(k+1)) - g*GZ(phi(k+1)));
    [mm] phi((k+2))=phi(k+1)+dt*phi1(k+1)+(dt^2)/2*phi2(k+1); [/mm]
    phi1((k+2))=phi1(k+1)+dt*phi2(k+1);
end
p=(pi/180).*phi
plot(t,p)
xlabel('Zeit t [s]')
ylabel('Krängungswinkel [mm] \phi [/mm] [°]')

Bezug
                
Bezug
Differentialgleichungen: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 17:46 Do 17.05.2007
Autor: BKM

Hallo

Könnten 'wir' vielleicht das vollständige .m File haben? Erspart u.a. das erneute eintippen ( jedenfalls was mich betrifft).
Beste Grüße

Bezug
                        
Bezug
Differentialgleichungen: .m-files
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 10:50 Sa 19.05.2007
Autor: cleophus

Ups, sorry, ich hatte die Hoffnung schon fast aufgegeben. Ich konnte aber einen Aufschub aushandeln, neues Fälligkeitsdatum ist nun erst Freitag, 25.05!
Wie gesagt sind es 6 Unterprogramme, eins davon ein function files. Ich gebe sie hier mal der Vollständigkeit halber alle an (vll kann ja jemand von euch die später noch anderweitig gebrauchen :-)

Schiff.m
%Schiffsdaten
global B T f KG KM
B=[21.5];
T=[7.96];
f=[0.8];
KG=[10.0];
KM=[11.0];


Beschleunigung.m
%Beschleunigung für MS Beluga Revolution
%loaded condition, deep water
%
global a
x=[0,115,244,355,482,500];
y=[6.173,3.7554,3.1381,1.9549,2.058,2.058];
t=0:1:500;
v=spline(x,y,t);   %Geschwindigkeitskurve
%Ableitung der approx. Kurve
a1=diff(v);
a=[a1,0];
t=0:1:500;


Driftwinkel.m
%Driftwinkel für MS Beluga Revolution
%loaded condition, deep water, beta=16°,20°
%
global beta
x=[0,115,244,355,482];
y=(pi/180).*[0,16,20,20,20];
t=0:1:500;
beta=spline(x,y,t);


Geschwindigkeit.m
%Geschwindigkeitverlauf für MS Beluga Revolution
%loaded condition, deep water
%
global v
x=[0,115,244,355,482,500];
y=[6.173,3.7554,3.1381,1.9549,2.058,2.058];
t=0:1:500;
v=spline(x,y,t);


Kruemmung.m
%Krümmungsradiusverlauf für MS Beluga Revolution
%loaded condition, deep water, r approx.236m
%
global r
x=[0,115,244,355,482,500];
y=[2000,300,236,236,236,236];
t=0:1:500;
r=spline(x,y,t);


und schließlich das function-file für den aufrichtenden Hebelarm, in dem das gesuchte [mm] \phi [/mm] ebenfalls mitverwurstet wird: GZ.m
%GZ-Hebelarmkurve
function [h]=GZ(phi)
Schiff;
GM = KM-KG;
BM = KM-0.53*T;
h=(GM + 0.5*BM*(tan(phi)).^2).*sin(phi);

Bezug
                                
Bezug
Differentialgleichungen: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 23:05 So 20.05.2007
Autor: nschlange

Wie ist denn die zu erwartende Größenordnung von phi?
Ist das im Bereich bis 130 s realistisch (0,07 Grad)?
Ich würde noch Deine Fktn beta umbenennen, ich hab da beim
ersten Durchlauf immer einen Fehler bekommen, weil es diese
Fktn schon gibt, aber mehr Parameter erwartet.

Bezug
                                        
Bezug
Differentialgleichungen: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 23:16 So 20.05.2007
Autor: nschlange

Wo kommt überhaupt diese Schleife her?
Ist das dt=1 vielleicht zu groß?
Warum versuchst Du nicht die DGL nicht mit einem implementierten numerischen
Verfahren (Klassiker: Runge-Kutta, 'ode45') zu lösen?

mfg
nschlange

Bezug
                                                
Bezug
Differentialgleichungen: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 19:30 Mo 21.05.2007
Autor: cleophus

Also die Größenordnung ist mit an Sicherheit grenzender Wahrscheinlichkeit falsch. Unser Dozent hat uns nichts Genaueres verraten, aber aus Erfahrung weiß ich, dass das Schiff sich auf jeden Fall stärker krängt. Ich erwarte eigentlich so 3-15°, wobei es idealerweise weniger als 10° krängen sollte, damit es Stabilitätskriterien erfüllt.

Die Schleife hab ich nach Vorlage selbst zusammengebastelt nachdem uns der Algorithmus vorgegeben wurde, aber könntest du mir kurz erklären, wie ich das ode45-Verfahren anwenden könnte? Würde das trotzdem auf die Unterprogramme zugreifen und wie würde ich das in Matlab schreiben?

Ich werd derweil erstmal deinen Rat befolgen, nschlange, und beta umbenennen. Wobei ich das ja schon merkwürdig finde, dass du da eine Fehlermeldung kriegst... Da muss ich nochmal gucken, ob ich nicht früher schon irgendwas verpeilt habe!

Bezug
                                                        
Bezug
Differentialgleichungen: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 23:28 Di 22.05.2007
Autor: nschlange

Guck mal in die Hilfe, da gibt es einige Beispiele zu den ode*-Befehlen.
Hab allerdings nicht beachtet, dass v und r usw auch Funktionen von t sind.
Ich weiss jetzt gerade nicht ob das geht.
Aber wenn die Schleife vorgegeben war...

Bei mir hatte das Umbenennen von beat nur den Effekt, das beim ersten Durchlauf
keine Fehlermeldung mehr kam. Der Graph blieb der gleiche.

Bezug
                                                
Bezug
Differentialgleichungen: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 19:38 Mo 21.05.2007
Autor: cleophus

Ich bin auch nochmal deinem Tipp nachgegangen und hab mal dt geändert, aber für alles <1 hab ich die Fehlermeldung ''Subscript indices must either be real positive integers or logicals.'' gekriegt (evtl ein Problem mit (k+1)?) und für alle werte >1 zeichnet er mir eine sehr merkwürdige Kurve, deren Größenordnung leider auch nicht passt... Eigentlich soll da eine Kurve rauskommen, die von 0 auf einen Winkel raufgeht und sich dann um einen mittleren Winkel einpendelt.
Kann mir jemand bestätigen, dass mein Umrechenfaktor [mm] (\pi [/mm] / 180°) richtig ist?

Bezug
                                                        
Bezug
Differentialgleichungen: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 23:30 Di 22.05.2007
Autor: nschlange

dt muss ganzzahlig sein, weil Du ja auf die Komponenten von Vektoren zugreifst.
Die haben nunmal ganzzahlige Indizes.
Vielleicht kann man ja in der Schleife jedes dt in 0.001*dt ändern.
Keine Ahnung, ob das Sinn macht.
Frag doch mal den, der den Algorithmus vorgegeben hat.

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Matlab"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.vorkurse.de
[ Startseite | Mitglieder | Teams | Forum | Wissen | Kurse | Impressum ]