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

Einfache Gleichung mit einer Unbekannten iterativ lösen

 

Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.03.2013, 11:28     Titel:
  Antworten mit Zitat      
Hallo,

so gehts:

Code:
v0 = 0.3;
if v0 < 0.5
    % Berechnung von h1 über die Bernoulli-Gleichung
   syms x; xloesung = solve('37.04 + 0.49^2/(2*9.81) = x + ((540/(30*x)))^2/(2*9.81)');
    xloesung = double(real(xloesung));
    xloesung = xloesung(xloesung > 0 & xloesung < 10);
    disp(['h1 = ',num2str(xloesung,'%7.2f')])
else
    disp('Rechnung folgt')
end


Zumindest als registrierter Nutzer kann man seine eigenen Beiträge editieren und löschen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen


Newb190313

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2013, 12:25     Titel:
  Antworten mit Zitat      
Wow!

Vielen Dank und falls sich noch ein Problem auftut, werde ich die Registrierung ins Auge fassen =).

Schöne Woche noch und vielen Dank!
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.03.2013, 13:03     Titel:
  Antworten mit Zitat      
Hallo,

eine Anmerkung noch:
Ich bin davon ausgegangen, dass hier komplexwertige Lösungen nur durch minimale numerische Ungenauigkeiten zustandekommen, und habe daher mit real() den Imaginärteil entfernt.
Zudem habe ich mal angenommen, dass dich Lösungen zwischen 0 und 10 interessieren. Wenn die Lösung ungefähr bekannt ist, kann man das auch schön mit fsolve machen:
Code:
xloesung = fsolve(@(x) 37.04 + 0.49^2/(2*9.81) - ( x + (540/(30*x))^2/(2*9.81)), 0.5)


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Newb190313

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2013, 13:33     Titel:
  Antworten mit Zitat      
Sehr gut, dass du das noch ergänzt hast. Ich kam nämlich im weiteren Verlauf mit den eingebbaren Werten zu Problemen. Mit der fsolve Methode, funktioniert auch das Bestens!

Code:

opts = optimset('Diagnostics','off', 'Display','off'); % Verhinderung des Ausgabetextes von fsolve
if v0 < 0.5
    % Berechnung von h1 über die Bernoulli-Gleichung
    h1 = fsolve(@(h1) h0 + v0^2/(2*g) - ( h1 + (Q/(b*h1))^2/(2*g)), 0.5, opts);
    disp(['Der Wasserstand an Punkt 1 beträgt h1 = ',num2str(h1,'%7.2f')])
else
    disp('Rechnung folgt')
end
 


Danke nochmal! =)
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.