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

Nichtlineartes Gleichungssystem mit Nebenbedingungen

 

thwillms@gmail.com

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2017, 15:25     Titel: Nichtlineartes Gleichungssystem mit Nebenbedingungen
  Antworten mit Zitat      
Hello,

Ich habe schon mehrer Methoden versucht, um den folgenden Code als Script
zum Laufen zu bringen.
2 Gleichungen mit 4 Variablen, allerdings zwei davon
durch Randbedingungen festgelegt.

Code:

1;
function y=f(x)
#Konstanten
cA0=2;
cB0=2;
k1=15E-1;
k2=2;  
#Nebenbedingungen
x(1)=cA0-x(4);
x(2)=cB0-x(4)-x(6);
#Gleichungen
y(1)=x(3)*x(4)-k1*x(2)*x(1);
y(2)=x(5)*x(6)-k2*x(3)*x(2);  
endfunction
[x,info]=fsolve("f", [1; 1]);
 


aber bekomme beim Versuch der Lösung immer einen Fehler.
Sind Nebenbedingungen nicht möglich?
Muss in y=f(x) nicht noch eine zweite Variable stehen?
Jedoch erhalte ich auch mit f(x(3),x(4)) einen Fehler.

I fand im internet dass alles von der Form f(x) = 0 sein muss,
aber nichts half:
weder für die erste Nebenbedingung zu setzen:

x(1)-cA0+x(4)=0;
noch
y(3)=x(1)-cA0+x(4);

noch x(1) in der ersten Gleichung (und x(2) in der zweiten) einzusetzen:

Code:

y(1)=x(1)*x(2)-k1*(cA0-x(2))*(cB0-x(2)-x(4));
y(2)=x(3)*x(4)-k2*x(1)*(cB0-x(2)-x(4));
 


Kann mir jemand helfen??
Beispiele für Systeme mit Nebenbedingungen habe ich keine gefunden
und das ist mein erstes System dieser Art.

Danke

Thomas


Friidayy
Forum-Century

Forum-Century


Beiträge: 225
Anmeldedatum: 17.12.13
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 19.12.2017, 15:31     Titel:
  Antworten mit Zitat      
hallo thomas,

fsolve kann keine nebenbedingungen berücksichtigen, du benötigst fmincon o. lin- /quadprog.

gruß, michael
Private Nachricht senden Benutzer-Profile anzeigen
 
thwillms@gmail.com

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2017, 17:59     Titel: Nichtlineartes Gleichungssystem mit Nebenbedingungen
  Antworten mit Zitat      
I found two errors in the implemented system given before.
After solving them the code worked with substitudted variables.
But I prefer using boundary conditions with fmincon. I tried the following code.

Zitat:

1;
pkg load optim;

function y=f(x)
cA0=2;
cB0=2;
k1=15E-1;
k2=2;

x(1)=cA0-x(4);
x(2)=cB0-x(4)-x(6);
x(3)=x(4)-x(6);
x(5)=x(6);

y(1)=(x(3)*x(4)-k1*x(1))*x(2);
y(2)=x(5)*x(6)-k2*x(2)*x(3);
endfunction

#lb=[0;0];
#ub=[2;2];

[x,obj, info]=fmincon("f", [1; 1]);

display(info);
printf(' Konz. D: %f', x(1,1)); # 1.Spalte erstes Element
printf(' Konz. X: %f', x(2,1)); # 1.Spalte zweites Element



I installed and loaded the package optim, but
I get a message after loading. optim not implemented...

Would the code work?
How to implement it?
Can anyone help me?

Thanks

Thomas
 
Friidayy
Forum-Century

Forum-Century


Beiträge: 225
Anmeldedatum: 17.12.13
Wohnort: ---
Version: R2012b
     Beitrag Verfasst am: 19.12.2017, 18:48     Titel:
  Antworten mit Zitat      
hallo thomas,

wieso wechselt du die sprache? ich würde dir gerne helfen, aber ich blicke bei dir nicht ganz durch, oben hast du z.b. geschrieben, dass du 4 variablen hast, im code hat der x vektor aber 6 einträge. kannst du vllt. dein problem nochmals sauber formulieren, ohne matlab code.

gruß, michael
Private Nachricht senden Benutzer-Profile anzeigen
 
thwillms@gmail.com

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2017, 19:34     Titel: Nichtlineartes Gleichungssystem mit Nebenbedingungen
  Antworten mit Zitat      
Hallo,

danke für die Antwort. Sorry, ich habe die Sprache gar nicht absichtlich gewechselt. VOrher war mirt sdas auch schon passiert, aber ich hatte das noch korrigiert.
I fand zwei Fehler im vorher angegebenen System. Nach deren Eliminierung funktionierte der Code perfekt mit den substituierten Variablen.
Aber ich ziehe es vor die Randbedingungen mit fmincon zu verwenden. Ich versuchte den folgenden Code.

Zitat:

1;
pkg load optim;

function y=f(x)
cA0=2;
cB0=2;
k1=15E-1;
k2=2;

x(1)=cA0-x(4);
x(2)=cB0-x(4)-x(6);
x(3)=x(4)-x(6);
x(5)=x(6);

y(1)=(x(3)*x(4)-k1*x(1))*x(2);
y(2)=x(5)*x(6)-k2*x(2)*x(3);
endfunction

#lb=[0;0];
#ub=[2;2];

[x,obj, info]=fmincon("f", [1; 1]);

display(info);
printf(' Konz. D: %f', x(1,1)); # 1.Spalte erstes Element
printf(' Konz. X: %f', x(2,1)); # 1.Spalte zweites Element


Ich habe das Paket Optim installiert und geladen, aber
ich bekam die Meldung, dass Optim zwar geladen aber nicht implementiert worden sei.

Wie wird das Paket implementiert? Habe ich die Funktion richtig verwendet?
Würde der Code funktionieren?

Danke

Thomas
 
Tomagic2000
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 22.12.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.02.2018, 11:11     Titel: Problem geklärt
  Antworten mit Zitat      
Hallo,

ich habe selbst herausfgefunden, was los ist. Optim gibt zwar an, die Funktion zu enthalten, aber die Funktion ist gar nicht vorhanden.

Daher kann man sie nicht nutzen sondern müsste sie selbst hinzufügen.

Was soll so ein Blödsinn??


Ein Package mit der mincon Funktion für Octave und ein klares Beispiel für die Anwendung habe ich nicht gefunden. Kann da jemand helfen?

Grüße

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