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

Funktionsschar darstellen

 

Jarrao90
Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 18.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2017, 13:34     Titel: Funktionsschar darstellen
  Antworten mit Zitat      
Guten Tag erst mal Smile

In Matlab würde ich gerne eine Kurvenschar bzw. Funktionsschar zeichnen lassen. Auf der y-Achse befindet sich die Größe P, auf der x-Achse die Größe s. Für die dritte größe v gibt es für jeden Wert eine Kurve also v1, v2, v3,v4 usw. Ich möchte also also sagen wir mal 8 Kurven von v1 bis v10 mit einer Schrittweite von 500 zeichnen lassen.
Zunächst wollte ich nur eine Kurve zeichnen lassen.

Code:

v=500:500:5000; % 10 Kurven im Abstand von 500
m=600;               % Konstanter Wert
s=0:1:10000;       % s von 0 bis 10000 in feiner Stufung

P=(m*(v^3))/4*s; % P muss über die anderen beiden Werte berechnet werden
 
plot(s,P)
 


Danke im voraus!
Private Nachricht senden Benutzer-Profile anzeigen


Jarrao90
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 18.08.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2017, 15:01     Titel:
  Antworten mit Zitat      
Ok, ich habe es jetzt doch hin bekommen Smile

Code:

v=500:500:10000;
m=600;
s=1000:1:10000;
i=1;
for a=0:19
P=(m*(v(1,i).^3))./(4*s);
plot(s,P)
hold on
i=i+1;
end

 


Ich habe auch die Gleichung komplett falsch eingegeben. Gibt es irgnedwo ein Manual wo ich lernen kann wie ich lange mathematische Gleichungen in Matlab korrekt eingebe?
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.10.2017, 13:29     Titel:
  Antworten mit Zitat      
Hallo Jarrao90,

Oder einfacher:
Code:
v = 500:500:10000;
m = 600;
s = 1000:10000;
for i = 1:20
  P = m * v(1,i).^3 ./ (4*s);
  plot(s, P);
  hold on
end

und auch ohne Schleife:
Code:
v = 500:500:10000;
m = 600;
s = 1000:10000;
P = m * v .^ 3 ./ (4*s).';  % Matlab >= R2016b: Auto-Expanding
plot(s, P);

Die Auflösung von s ist dabei etwas übertrieben. 1000:10:10000 hat immer noch mehr Schritte als der Monitor Pixel.

Zitat:
Gibt es irgnedwo ein Manual wo ich lernen kann wie ich lange mathematische Gleichungen in Matlab korrekt eingebe?

Ich kenne kein Tutorial. Das kann allerdings eine ernste Schwierigkeit werden. Ich hatte einmal eine Gleichung als Output von Excel, die 1900 Zeilen hatte. Das war dann zwar "korrekt", aber viel zu unübersichtlich. Zudem wurde es sehr ineffizient, weil manche Argumente (z.B. sin(alpha)) immer wieder berechnet wurden. Man muss die Formal dann umformulieren, so dass sie in mehrere Schritte aufgeteilt wird, wiederholte Berechnungen einmalig in temporären Variablen gespeichert werden und numerische Auslöschung vermieden wird. Zu letzterem: 1e17+1-1e17 ergibt 0, nicht 1. Sortiert man die Werte zu 1e17-1e17+1 stimmts wieder.
Bei 1900 Zeilen konnte das nur automatisch geschehen. Danach musste man aber acuh noch validieren, dass das Resultat überhaupt noch mit der Formel übereinstimmt.

Für kleinere Problem mit ein paar Zeilen kann man das von Hand machen. Wie so oft im Leben hilft da Übung. Und zum Schluss bleibt immer das Problem der Validierung. Was bringt eine Simulation im Rechner, wenn man nicht nachweisen kann, dass die Gleichung nicht durch einen Tippfehler etwas vollkommen anderes beschreibt?

Bei größeren Systemen nimmt die Validierung oft weit mehr Zeit und Kosten ein, als die Programmierung und Simulation. Die Simulatuion von Crash-Tests bei Autos erfordert z.B. immer wieder echte Autos gegen Betonblöcke krachen zu lassen und die Ergebnisse zu vergleichen.
Bei einem deutschen Auto-Hersteller passten die Werte einfach nicht zusammen und es wurde sehr lange nach dem Fehler im riesigen Modell gesucht. Schließlich fand man heraus, dass das Modell in Ordnung war, aber die Schrittweiten-Kontrolle des Integrators einen Bug hatte. Naja, vielleicht hat das den Konzern bewogen, andere Software lieber gleich gefälschte Ergebnisse zu produzieren.

Sorry, ich bin etwas vom Thema abgekommen. Es ist Sonntag :-)

Du könntest die Formel hier posten und fragen, wie man sie geschickt in Code formuliert. Das Erklären der einzelnen Schritte könnte nützlich sein. (Bemerkubng: Neue Frage -> neuer Thread)

Gruß, Jan
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.