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

Thesis - Lavaldüse

 

Henrikzn
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 02.06.23
Wohnort: Kiel
Version: ---
     Beitrag Verfasst am: 02.06.2023, 20:44     Titel: Thesis - Lavaldüse
  Antworten mit Zitat      
Moin Moin,
Ich bin neu hier und ein wirklich kompletter Anfänger in Matlab.
Mir liegt Programmieren auch nicht wirklich.
Für meine Thesis soll ich mich mit der Lavaldüse auseinandersetzen und ein paar Berechnungen durchführen.
Nun brauche ich einen Code, der mir ein paar Werte herausgibt.
Ich habe 3 Gleichungen:
Die erste brauche ich für die folgenden.
Sie bekommt einen Vektor 'Querschnitt_Verdichtungsstoss' übergeben und soll einen weiteren Vektor 'Ma_s_values' speisen. Das kann ich im Normalfall ja mit einer Schleife machen, doch muss das ganze iterativ geschehen, weswegen ich etwas verzweifle und keine richtigen Werte bekomme. Ich hatte das mit fsolve versucht.
Durch den Vektor 'Ma_s_values' kann ich die anderen beiden Gleichungen speisen. Dannn das gleiche Spiel dann nochmal miut den anderen Gleichungen.

Vielleich könnt ihr mir ja helfen. Kritik nehme ich ebenfalls gerne an.

Grüße


Falls es hilft ist hier noch einmal die Gleichung:

A = Ma_s*(((2/(k+1))*(1+((k-1)/2)*Ma_s^2))^((1+k)/(2(1-k))))
A steht dabei für den Vektor Querschnitt_Verdichtungsstoss
Ma_s für den zu befüllenden Vektor Ma_s_values
k ist einfach ein Wert


Code:


k = 1.4

% Vektor für das Flächenverhältnis
Querschnitt_Verdichtungsstoss = [0:Schritte:1];

% Funktion zur Berechnung der Gleichung
fun_ma_s = @(Ma_s, A) Ma_s.*(((2/(k+1))*(1+((k-1)/2)*Ma_s.^2)).^((1+k)/(2*(1-k)))) - A;

% Vektor für die Machzahl beim Stoß
Ma_s_values = zeros(size(Querschnitt_Verdichtungsstoss));

% Schleife zur Berechnung von Ma_s für jeden Wert in Querschnitt_Verdichtungsstoss
for i = 1:length(Querschnitt_Verdichtungsstoss)
    A = Querschnitt_Verdichtungsstoss(i);
    Ma_s_initial = 10; % Anfangsschätzung für Ma_s
    options = optimset('Display', 'off');
    Ma_s_values(i) = fsolve(@(Ma_s) fun_ma_s(Ma_s, A), Ma_s_initial, options);
end

 
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 03.06.2023, 07:13     Titel:
  Antworten mit Zitat      
Moin,

für mich klingt das ganze nach einem zu lösenden Differentialgleichungssystem, ich sehe aber keine solche Gleichung. Sofern es ein solches ist, Matlab ist sehr gut im Lösen von Differentialgleichungssystemen und du findest hier im Forum, in der Matlab-Dokumentation (spontanes Stichwort "ode solver") oder MatlabCentral sicherlich einige Ansätze.

Gruß,
Steve
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Henrikzn
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 02.06.23
Wohnort: Kiel
Version: ---
     Beitrag Verfasst am: 03.06.2023, 08:23     Titel:
  Antworten mit Zitat      
steve hat Folgendes geschrieben:
Moin,

für mich klingt das ganze nach einem zu lösenden Differentialgleichungssystem, ich sehe aber keine solche Gleichung. Sofern es ein solches ist, Matlab ist sehr gut im Lösen von Differentialgleichungssystemen und du findest hier im Forum, in der Matlab-Dokumentation (spontanes Stichwort "ode solver") oder MatlabCentral sicherlich einige Ansätze.

Gruß,
Steve



Moin Steve,

Nein das ist keine Differentialgleichung.
Lediglich eine implizite Gleichng, die nicht nach Ma_s umgestellt werden kann.
Bei einem anderen Fall hatte ich das mit 'fsolve' hinbekommen.
Dort hatte ich aber nur Werte übergeben.
Jetzt habe ich einen Vektor übergeben und tue mich etwas schwer.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.427
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.06.2023, 09:20     Titel:
  Antworten mit Zitat      
Hallo,

vor allem wenn man Display off wählt, würde ich mir bei fsolve und ähnlichen Funktionen immer drei Argumente zurückgeben lassen, damit man die Selbstdiagnose des Solvers einsehen kann. Hier sieht nun alles soweit gut aus.
Die Frage wäre nun: wenn diese Werte nicht "richtig" sind, was sind denn richtige Werte? Bei nichtlinearen Gleichungen kann es mehrere Lösungen geben. Dann ist es wichtig, dass man den Startwert so wählt, dass man die gewünschte Lösung bekommt.
Wenn ich das richtig sehe, kann die Gleichung so umgestellt werden, dass die Nullstellen eines kubischen Polynoms in Ma_s benötigt werden. Dann könnte man auch roots verwenden.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.