Hallo zusammen,
ich bin ein absoluter neuling was Matlap angeht. Nun habe ich jedoch von der Uni eine Aufgabe bekommen, die mich zur folgende DGL gebracht hat. Diese soll ich numerisch lösen und komme nicht weiter.
Die differentialgleichung lautet:
Ich habe versucht dich gleicung mit der ode funktion zu lösen, bekomme dort jedoch immer ein error.
dann poste bitte den code und den fehler. es ist sehr schwer zu erraten was du falsch machst. viel einfacher ist es wenn du es uns zeigst. die wahrsager kugel hat immer schlechten empfang bei regen _________________
Das stimmt wohl. Also ich habe folgendes Eingegeben (iwie muss ich das am ende noch in ein Programm packen wo ich g und l eingebe und per button alles ausrechne ):
Code:
l = 2
g = 9.81
s = 20
b= l/g
T=4*pi*sqrt(b)
amax = (s*g)/(8*pi^2*l)
O = (2*pi)/T
[t,a]=ode45(@(t,a)(amax*0.5*(1- cos(0*t))*cos(a)*- sin(a)*g)*(1/l),[0,(T/2)],0);
plot(t,a)
Nach neuem Eingeben erhalte ich zwar keine Fehlermeldung mehr, jedoch ist a immer 0 und das kann eigentlich nicht sein
Edit: Ok ich hab einen Fehler gefunden!! Enn mal Zeichen war zuviel. Jetzt ist a nicht mehr Null. Jedoch kann die Ausgegebenen Lösung nicht korrekt sein. Denn an der Stelle T/2 sollte a = 0 sein und das ist es nicht. Oder muss ich die DGL zunächst mittels Vektor in eine DGL erster Ordnung übertragen?
Habe die Funktion in ein .m File abgelegt und dann
heist das mfile denn testfun und befindet sich im aktuellen ordner?
deine lösung ist auch richtung wenn du O statt 0 verwendest.... das ist übrigens der grund warum ich o nicht als variablennamen verwenden würde.
_________________
Hallo ich bins nochmal, wollte jetzt nicht extra ein neues Thema öffnen.
Ich habe noch ein kleines weiteres problem.
Für die gesamte Lösung meines mathematischen Problems habe ich zwei DGLs die aufeinenader Folgen. Gebe ich beide ODE45 befehle ein, erweitert Matlap jedoch nicht meine T-Variable,sondern überschreibt einfach die alten T-Werte. Gibt es eine Möglichkeit dies zu verhindern, sodass ich eine MAtrix am Ende habe, die alle meine T-werte umfasst?!
im zweiten Befehl andere Variablennamen verwenden, und dann mit [ ] verketten.
Bitte den Status von "beantwortet" abändern, wenn du noch Fragen hast. Sonst besteht die Gefahr, dass niemand mehr in das Thema schaut.
Als letzte Frage (hoffentlich ) gibt es eine möglichkeit oder eine Funktion die ein genaueres Ergebnis liefert als die ode45? EIne möglichkeit wie ich mein Ergebnis genauer mache wäre auch super
du kannst mit
odeset
die relative und absolute Toleranz einstellen.
Grüße,
Harald
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.