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ösen einer Gleichung mit LeastSquare Parameter

 

Pentagontodekaeder
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 22.03.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.02.2015, 16:06     Titel: Lösen einer Gleichung mit LeastSquare Parameter
  Antworten mit Zitat      
Hallo

Ich habe folgendes Problem

fn = f0/sqrt(1+g2/mue)

Q = 2*pi*sqrt(1+g2/mue)/(g1*mue)*f0

g1(f1) = x1*sqrt(f1)*sqrt(rho*eta)+x2*eta

g2(f1) = x3*rho+x4/sqrt(f1)*sqrt(rho*eta)

Ich möchte diesen Satz von Gleichungen lösen. Dazu habe ich folgende Infos. Habe 8 Messungen an einem Bauteil gemacht und mir die Ergebnisse in einen Vektor xdata = [fn; Q] gespeichert. Weiters waren mir bei der Messungen a und b bekannt. Diese habe ich auch in einen Vektor ydata[rho; eta] gesteckt. Ziel ist es nun die Parameter x1 - x4 durch einen LSQ zu bestimmen. Hab bereits mit lsqcurvefit versucht, jedoch komm ich zu keiner Konvergenz. Könnte vielleicht daran liegen, wenn ich g1 und g2 in fn und Q einsetze, dann ruft sich die Funktion selbst auf.

Was ich gemacht habe: Ich habe g1 und g2 in fn und Q ersetzt. Daher die lange Formel.

Code:

function [ F ] = Dichte_Visk( x,xdata )
%UNTITLED6 Summary of this function goes here
%   Detailed explanation goes here

f0 = 540.85e3;    % Frequency in vacuum
L = 1000e-6;      % Length
T = 22.02e-6;     % Thickness
W = 750e-6;       % Width
rhoc = 2.329;     % Device density

m = rhoc*L*T*W;
mue = m/L;

rho = xdata(1,:); % Dichte
eta = xdata(2,:); % Viskosität

fn = [290.41e3 299.466e3 292.730e3 293.662e3 306.295e3 307.149e3 314.137e3 321.469e3];
Q = [35.7   43.3    52.1    59.4    64.8    78.9   107.4   148.7];

for i=1:length(xdata)
   
    fn(1,i) = f0/sqrt(1+(x(3)*rho(i)+x(4)/sqrt(fn(i))*sqrt(rho(i)*eta(i)))/mue);
   
    Q(1,i) = 2*pi*sqrt(1+(x(3)*rho(i)+x(4)/sqrt(fn(i))*sqrt(rho(i)*eta(i)))/mue)/((x(1)*sqrt(fn(i))*sqrt(rho(i)*eta(i))+x(2)*eta(i))*mue)*f0;  
   
end

F = [fn; Q];

end
 


Main-Code

Code:

ydata = [290.41e3 299.466e3 292.730e3 293.662e3 306.295e3 307.149e3 314.137e3 321.469e3 % Frequenz fn
          35.7   43.3    52.1    59.4    64.8    78.9   107.4   148.7 % Q-Faktor
          ];
     
xdata = [0.9021 0.8346 0.8884 0.8852 0.7815 0.7770 0.7271 0.6810 % Dichte
         7.362  4.555  3.068  2.527  2.069  1.304  0.720  0.388 % Viskosität
         ];
     
options = optimset('TolFun',0,'TolX',0,'MaxFunEvals',200000,'MaxIter',100,'Display','iter');

x = lsqcurvefit(@Dichte_Visk,[1 1 1 1],xdata,ydata,[],[],options);
 


Danke für eure Hilfe schon mal.
Private Nachricht senden Benutzer-Profile anzeigen
Verschoben: 11.02.2015, 14:04 Uhr von denny
Von Grafiken und Plots nach Programmierung


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.