Verfasst am: 03.01.2010, 22:02
Titel: Warum wird diese Formel falsch geplottet?
Hallo liebe Matlab-Gemeinde!
Erst mal vorneweg:
Ich bin ein totaler noob in Sachen mathematischer Scriptsprachen und solchen Sachen...
Ich schreibe zur Zeit Facharbeit und bin Gerade an der Berechnung eines Hebelwurfgeschützes. Das ganze mache ich in Octave. Da Octave ja anscheinend eine Matlab-Kopie ist, poste ich das ganze einfach mal hier und nicht im Octave-forum, weil das sieht so ausgestorben aus. Wenns trotzdem falsch ist dann bite einfach verschieben
die Reichweite des Geschützes berehcnet sich nach der Formel:
wobei v0=l1*y(:,2)
und phi=y(:,1)
und hp=l1 *(cos(pi-phianfang) + cos(y(:,1)))
phianfang und g sind Konstanten
dafür habe ich ein Scipt geschrieben:
bitte haut mich nicht wenn es irgendwie total schlecht ist
function y4 = R (y,t) global g
global y
global t
global l1
global phianfang
y4=(tan(y(:,1)) + sqrt(tan(y(:,1)).^2 + (2 .* g .* l1 .*(cos(pi-phianfang) + cos(y(:,1)))) ./ (l1*y(:,2) .^ 2 .*(cos(y(:,1))).^2))).*g ./ (l1*y(:,2) .^ 2 .*(cos(y(:,1))).^2) ;
endfunction
tges=input("zu betrachtende Zeit in Sekunden: ");
global t=linspace(0.0,tges,400); %Zeit
phiadeg=input("phianfang in Grad: ");
global phianfang=phiadeg/180*pi;
phi0 =[phianfang,0]; %Anfangswinkel phi0
global y=lsode("f",phi0,t); %Loesen der Differentialgleichung
figure subplot(2,2,1);
plot(t,y(:,1),"r-");
title("See-Saw Trebuchet: Ausloesewinkel phia gegen Ausloesezeitpunkt") xlabel("t in s");
ylabel("phi in rad");
grid on
subplot(2,2,2);
global l1
plot(t,l1*y(:,2),"r-");
title("See-Saw Trebuchet: Ausloesegeschwindigkeit va gegen Ausloesezeitpunkt") xlabel("t in s");
ylabel("va in m/s");
grid on
subplot(2,2,4);
plot(t,R,"r-");
title("See-Saw Trebuchet: Range gegen Ausloesezeitpunkt") xlabel("t in s");
ylabel("R in m");
grid on
Die Formel steht bei der Funktion R
Naja dieser Plotter gibt irgendwie einen totalen Krampf als Graph aus, der garantiert nicht stimmt
Er sollte ungefähr so aussehen:
Das komische ist, dass normale Ergebnisse rauskommen, wenn ich einfach Werte einsetze..
Hi, mach mal überall vor dem * einen punkt, an manchen Stellen hast du es ja bereits gemacht. Sonst wird eine Matrixmultiplikation ausgeführt.
Viele Grüße,
der Oli
Hans-Werner
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 04.01.2010, 17:22
Titel:
Globale Variablen lokal in einer Funktion definiert ? Was hat das für Auswirkungen und warum machst du das ? y und t werden als Parameter an y4 übergeben und anschliessend in der Funktion neu deklariert ?
Ich hab ehrlich gesagt keinen Plan was das für Auswirkungen hat und warum ich das mache.
Das mit den Parametern ist auch irgendwie komisch, ich hab sie jetzt einfach gelöscht und es funktioniert trotzdem...
Aber der Fehler war einfach nur, dass ich einfach die Formel falsch eingegeben hab und manchmal diesen Punkt vor dem * vergessen hab.
Danke für die schnelle Hilfe
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.