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

Fehlermeldung bei fzero "FZERO cannot continue because

 

knr

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2020, 16:17     Titel: Fehlermeldung bei fzero "FZERO cannot continue because
  Antworten mit Zitat      
Meine Funktion lautet:

function f = Polynom2(k,epsilon,r,mur2,mu,wa,wh,ga,gh,ka,kh,roh,I,m,b,l)


%Dämpfungsverlustwinkel Real und Imaginärteil
y_strich = 1 - gh.*ga;
y_dstrich = gh + ga;

%Theodorsenfunktion C mit Näherung von JONES
a0 = 1;
a1 = 0.165;
b1 = 0.0455;
a2 = 0.335;
b2 = 0.3;
C_strich = a0 + (-a1 + (a1.*(b1.^2))./((b1.^2)+(k.^2))) + (-a2 + (a2.*(b2.^2))./((b2.^2)+(k.^2)));
C_dstrich = -k.*((a1.*b1)./((b1.^2)+(k.^2)) + (a2.*b2)./((b2.^2)+(k.^2)));


%Die Luftkraftkoeffizienten
chh_strich = 1 + (2./k).*C_dstrich;
cha_strich = (1./k).*(C_dstrich - (2./k).*C_strich);
cah_strich = (-1./k).*C_dstrich;
caa_strich = (-1./(2.*k)).*C_dstrich + (1./(k.^2)).*C_strich + 1/8;

chh_dstrich = (-2./k).*C_strich
cha_dstrich = (-1./k).*(C_strich + (2./k).*C_dstrich + 1)
cah_dstrich = (1./k).*C_strich
caa_dstrich = ((1./(2.*k)).*(C_strich - 1)) + (1./(k.^2)).*C_dstrich


% Beta Werte für die Gleichung
betah = mu + chh_strich
betaa = mur2 + caa_strich

% Ksi Werte für die Gleichung
ksi0_strich = betah.*betaa - chh_dstrich.*caa_dstrich - cha_strich.*cah_strich + cha_dstrich.*cah_dstrich
ksi0_dstrich = betah.*caa_dstrich + betaa.*chh_dstrich - cha_strich.*cah_dstrich - cha_dstrich.*cah_strich
ksi1_strich = -(((epsilon.*r).^2).*(betah - chh_dstrich.*ga)) - (betaa - caa_dstrich.*gh)
ksi1_dstrich = -(((epsilon.*r).^2).*(betah.*ga + chh_dstrich)) - (betaa.*gh + caa_dstrich)

% b Werte für die Gleichung
b0_dstrich = ksi0_dstrich.*y_strich - ksi0_strich.*y_dstrich
b1_dstrich = ksi1_dstrich.*y_strich - ksi1_strich.*y_dstrich
b01 = ksi0_dstrich.*ksi1_strich - ksi0_strich.*ksi1_dstrich

f = ((epsilon.*r).^2).*(b0_dstrich.^2) - b01.*b1_dstrich

end

Skript:

% Parameter definieren
l = 1; % Länge des Brücken-Modells [m]
b = 0.21; % Halbe Querschnittsbreite [m]
m = 31.7./l; % Masse [kg]
I = 0.7./l; % Massenträgheitsmoment [kg*m²]
roh = 1.2; % Luftdichte [kg/m³]
kh = 2616./l; % Feder-Dämpfung-Translation [N/m]
ka = 74.1./l; % Feder-Dämpfung-Rotation [Nm/rad]
gh = 0.002; % Dämpfungverlustwinkel-Translation [Nm/rad]
ga = 0.0256; % Dämpfungverlustwinkel-Rotation [Nm/rad]
%wh = kh/m; % Eigenkreisfrequenz in h
wh = 8.83;
wa = ka/I; % Eigenkreisfrequenz in a
%epsilon = (wa.^2)./(wh.^2); % Frequenzverhältnis
epsilon = 1.15; % Frequenzverhältnis
r = (1./b).*sqrt(I./m); % bezogener Trägheitsradius
mu = m./(pi.*roh.*(b.^2)); % bezogenes Masse
mur2 = mu*(r.^2); % bezogenes Massenträgheitsmoment

%k Bereich definieren
k = 0:0.001:1;

%Funktion aufrufen und k-Wert bei f=0 Nullstelle
f = Polynom2(k,epsilon,r,mur2,mu,wa,wh,ga,gh,ka,kh,roh,I,m,b,l);
k_fnull = fzero(@Polynom2,0.1);


Guten Tag alle zusammen,

ich habe die o.g. Funktion geschrieben und möchte sie nun mit dem u.g. Skript öffnen. Es klappt alles auch wunderbar, bis auf das 'fzero' Befehl! Dort erscheint folgenden Fehlermeldung:

Error using fzero (line 306)
FZERO cannot continue because user-supplied function_handle ==> Polynom2 failed with the error below.

Not enough input arguments.

Error in test (line 27)
k_fnull = fzero(@Polynom2,0.1);

Kann mir bitte jemand helfen den Fehler zu finden? Ich bedanke mich jetzt schon herzlich für alle antworten.

Liebe Grüße
KNR


Harald
Forum-Meister

Forum-Meister


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

k soll also optimiert werden?
Die Parameter müssen an die Funktion übergeben werden, etwa so:
Code:
myfun = @(k) Polynom(k,epsilon,r,mur2,mu,wa,wh,ga,gh,ka,kh,roh,I,m,b,l);
k_fnull = fzero(myfun,0.1);


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.