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

Warum wird diese Formel falsch geplottet?

 

paul101
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 03.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.01.2010, 22:02     Titel: Warum wird diese Formel falsch geplottet?
  Antworten mit Zitat      
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 Cool

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 Very Happy
Code:
clear

global x
function zdot= f(x,t) %differentialgleichung: phidotdot=c*sin(phi)
   %Konstanten
   global g=9.81;
   global l1=input("l1 in m: ");
   global l2=input("l2 in m: ");
   global m1=input("m1 in kg: ");
   global m2=input("m2 in kg: ");
   
   c=g*(l1*m1-l2*m2)/(m1*l1^2+m2*l2^2);

   zdot(1)=x(2);
   zdot(2)=c*sin(x(1));
endfunction

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


%Plot:

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

Weiß jemand was da falsch ist?
Private Nachricht senden Benutzer-Profile anzeigen


derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 04.01.2010, 14:34     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Hans-Werner

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2010, 17:22     Titel:
  Antworten mit Zitat      
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 ?
 
paul101
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 03.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.01.2010, 13:39     Titel:
  Antworten mit Zitat      
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 Very Happy
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 - 2025 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.