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

Lösung mit fsolve für nicht linearen Gleichungssysteme

 

mr-04
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 10.08.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.09.2020, 12:46     Titel: Lösung mit fsolve für nicht linearen Gleichungssysteme
  Antworten mit Zitat      
Hallo zusammen,

Ich bin noch Anfänger in der Thematik matlab. Leider komme ich weiter nicht klar.

Folgendes : Ich möchte mit meinem Code a1 und a2 bestimmen. Die verwendete beiden Gleichungen sind im Anhang .


trotz meiner mehreren Varianten , die ich versucht habe, sotoße aber immer wieder auf einen Fehler .


Aktueller Stand:
Code:
function F = myfunction(x)

%a1=x(1)
%a3=x(3)

F(1)=((x(1)*(0.5*m+x(3)))/((n-x(1))*x(3)-Kp1);
F(2)=((x(1)/(n-x(1)))^2)-((p*Kp2^2))/(0.5*(3+n+m-x(1)-x(3))+8.546*(n+0.25*m)*Lambda);

end


Code:
clc
close all
clear all

Kp1=5;
Kp2=9;
p=1.444;
m=18;
n=8;
Lambda=1;

x0 = [0,0];
fun = @myfunction;
x = fsolve(fun,x0)


folgenden Fehler wird mir angezeigt:

Error: File: myfunction.m Line: 5 Column: 46
Invalid expression. When calling a function or indexing a variable, use parentheses. Otherwise, check for
mismatched delimiters.

Error in fsolve (line 255)
fuser = feval(funfcn{3},x,varargin{:});

Error in main_R (line 14)
x = fsolve(fun,x0)

Caused by:
Failure in initial objective function evaluation. FSOLVE cannot continue.

ich wäre sehr Dankbar für eure Hilfe!

Viele Grüße
mr-04

Gleichungen.JPG
 Beschreibung:

Download
 Dateiname:  Gleichungen.JPG
 Dateigröße:  16.46 KB
 Heruntergeladen:  167 mal
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

du öffnest (vermutlich direkt nach F(1) = ... ) eine Klammer zu viel oder schließt eine zu wenig. Das wird im Editor auch rot markiert.

Die Ausdrücke auf mehrere Zeilen aufzuspalten kann die Übersichtlichkeit erhöhen.

Das nächste Problem wird sein, dass Parameter wie m und Lambda im falschen Workspace abgelegt sind. Um das zu adressieren, siehe
https://www.mathworks.com/help/opti.....ing-extra-parameters.html

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
 
mr-04
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 10.08.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.09.2020, 16:01     Titel:
  Antworten mit Zitat      
Danke für Ihre schnelle Antwort. Leider habe ich wieder mit mehreren Varianten versucht,hat es nicht geklappt , ich habe auch was unter Link von Informationen steht ,gelesen und alles davon probiert, bekomme ich gleichen Fehler.

Ich hätte gerne einen Rat oder eine Lösung , die mir weiter helfen könnte.
Wäre dafür sehr dankbar!!!!


Code:
function F = myfunction(x,Kp1,Kp2,p,m,n,Lambda)

%a1=x(1)
%a3=x(3)


F(1)=((x(1)*(0.5*m+x(3)))/((n-x(1))*x(3)-Kp1);


F(2)=((x(1)/(n-x(1)))^2)-((p*Kp2^2))/(0.5*(3+n+m-x(1)-x(3))+8.546*(n+0.25*m)*Lambda);

end function F = myfunction(x,Kp1,Kp2,p,m,n,Lambda)

%a1=x(1)
%a3=x(3)


F(1)=((x(1)*(0.5*m+x(3)))/((n-x(1))*x(3)-Kp1);


F(2)=((x(1)/(n-x(1)))^2)-((p*Kp2^2))/(0.5*(3+n+m-x(1)-x(3))+8.546*(n+0.25*m)*Lambda);

end


Code:
clc
close all
clear all

Kp1=0.1171; Kp2=77.1683; p=1.444; m=18; n=8; Lambda=1;

x0 = [0,0];
fun = @myfunction;
x = fsolve(fun,x0)


LG
mr-04
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

die Klammer, die zu viel ist, ist immer noch drin.

Du musst nicht nur die Funktionssignatur anpassen, sondern auch die Deklaration des Function Handles:
Code:
fun = @(x) myfunction(x,Kp1,Kp2,p,m,n,Lambda);


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.