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

Gleichungssystem erweitern/korrigieren/anders lösen

 

Absolut
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 23.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2012, 13:38     Titel: Gleichungssystem erweitern/korrigieren/anders lösen
  Antworten mit Zitat      
Hallo Leute,

im Rahmen meiner (eigtl. rein experimentellen) Abschlussarbeit, möchte ich einen technsichen Zusammenhang am Rechenr abbilden.
Nun habe ich matlab leider vor 3-4 Jahren das letzt mal verwendet und eiere seit 3 Tagen in endlosen hilfe-files und docus herum, komme aber leider auf keinen wirklich grünen Zweig.

Nun erst einmal zu meinem Problem:

Ich habe ein Gleichungssystem mit 9 Unbekannten und möchte dieses gerne lösen. Eine symbolische Lösung würde ich bevorzugen. Falls das zu kompliziert wird, geht aber auch eine numerische Lösung.

Anbei mal mein bisheriges Programm:


Code:

function F = myfun(x)


% Bekannte Paramter (Eingabewerte)

s0 = 2;
sm = 1.63;

d = 180;
dL = 185.5;

VL = pi/4 * (dL*dL - d*d) * s0;

u1 = 4;
u2 = 54;

hA = 2.5;
hAA = hA - s0;

alpha_grad = 15;
alpha = alpha_grad / 180 * pi;

r0 = 45;


% x(1) : ri
% x(2) : a1
% x(3) : a2
% x(4) : ra
% x(5) : b1
% x(6) : b2
% x(7) : Vi
% x(Cool : Va
% x(9) : VA





F = [   x(7) + x(8) - VL - x(9);                                                                                                                                                                                                                                        
        (x(3)*x(3) - u1*u1) * pi * (s0 - sm)   +   0.5 * (x(2)*x(2) - x(3)*x(3)) * pi * (s0 - sm)   -   x(7);  
        (u2*u2 - x(6)*x(6)) * pi * (s0 - sm)   +   0.5 * (x(6)*x(6) - x(5)*x(5)) * pi * (s0 - sm)   -   x(8);
        0.5 * (x(1)*x(1) - x(2)*x(2)) * pi * hAA   +   (x(4)*x(4) - x(1)*x(1)) * pi * hAA   +   0.5 * (x(5)*x(5) - x(4)*x(4)) * pi * hAA   -   x(9);
        x(1) - x(3) - (hA - sm) / tan(alpha);
        x(6) - x(4) - (hA - sm) / tan(alpha);
        x(1) - x(2) - hAA / tan(alpha);
        x(5) - x(4) - hAA / tan(alpha);
        %x(1) - x(3) - x(6) + x(4);
        (x(1)+x(2))/2 - r0;
        x(10) - VL];



Code:

clc;

x0 = [40 39.5 39 50 50.5 51 1500 5000 1500 3000];

%options = optimset('Display','iter');


[x, fval] = fsolve(@myfun_Aufdickung,x0); % ,options);                                                                                    

ri = x(1); a1 = x(2); a2 = x(3); ra = x(4); b1 = x(5); b2 = x(6); Vi = x(7); Va = x(8); VA = x(9); VL = x(10);


ri
a1
a2
ra
b1
b2
Vi
Va
VA
VL






Das ganze spuckt eine einzelne Lösung aus:





Code:

Equation solved.

fsolve completed because the vector of function values is near zero
as measured by the default value of the function tolerance, and
the problem appears regular as measured by the gradient.

<stopping criteria details>


ri =

   45.9330


a1 =

   44.0670


a2 =

   42.6861


ra =

   43.5579


b1 =

   45.4239


b2 =

   46.8048


Vi =

   2.1690e+03


Va =

  917.1111


VA =

  -71.5609


VL =

   3.1577e+03

>>





Mein Problem ist nun folgendes:

1. Die Werte dürfen keine negativen Werte annehmen!

2. Könnte es nicht mehrere Lösungen geben? Wie kann ich diese anzeigen?



Vielleicht könnt ihr mir helfen. Wäre echt super. Ich dreh mich hier irgendwie nur noch im Kreis...


Beste Grüße,
Absolut

Zuletzt bearbeitet von Absolut am 23.07.2012, 15:25, insgesamt 2-mal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

0. Verwende bitte die Code-Formatierung Wink

1. fsolve kann keine Nebenbedingungen aufnehmen. Dazu würde ich generell FMINCON verwenden und
Code:

minimieren.

2. Ein numerisches Optimierungsverfahren wird immer nur ein Minimum bzw. eine Lösung finden. Man kann bestenfalls über mehrere Startwerte iterieren und hoffen, so weitere Lösungen zu finden.

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

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 23.07.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2012, 15:29     Titel:
  Antworten mit Zitat      
Hi,

vielen Dank erst einmal für die schnelle Antwort! Smile

@ 0: Hab's umformatiert. Wusste davor nicht, wie man als code formatiert. Danke für den Hinweis

@1: werd ich ausprobieren. Kann mir jmd. sagen, was A und b bei fmincon genau sind bzw. was ich da eintragen sollte? Verstehe das in der docu irgendwie nicht :-/ Scheinen ja irgendwelche Grenzen sein, in den das zu berechnende Minimum liegen soll oder?

@2: guter Einwand. Hatte ich garnicht dran gedacht.

Würdet ihr an so ein Problem grundsätzlich anders heran gehen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

genauer zu 1.: ganz oben in der Doku zu fmincon findest du die Formulierung des Problems.
A, b sind für lineare Ungleichungen; Aeq, beq für lineare Gleichungen; lb, ub für Schrankenbedingungen (du würdest lb = zeros(n,1) verwenden); nonlcon für nichtlineare Nebenbedingungen.

Angehen würde ich das wie zuvor beschrieben mit FMINCON.

Grüße,
Harald
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.