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

Suche Vereinfachung für Summe in meiner Fitfunktion

 

Rodiak

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2011, 17:07     Titel: Suche Vereinfachung für Summe in meiner Fitfunktion
  Antworten mit Zitat      
Hey,
ich bin nicht so bewandert in Matlab und hoffe das ihr mir helfen könnt.
Ich habe mehrere Messdaten und eine Funktion die ich mit lsqcurvefit an die Daten anfitten möchte. Mein Problem ist nun das bei der angegeben Funktion eine Summe beinhaltet ist und ich nicht weiß wie ich das realsieren soll. Die Funktion:
F = q_inf*(1-6/(pi^2*(a^2+a*b+b^2))* summe((b*cos(n*pi)-a)/n)^2*exp((-x(1)*n^2*pi^2*xdata)/(b-a)^2));

bisher habe ich die Summe weggelassen und manuel die einzelenen Terme in die Funktion geschrieben, da dies aber mehr als umständlich ist hoffe ich auf eine einfachere Lösung.
Der rest des Programms steht bereits und funktioniert auch wenn ich manuel die einzelnen Summanden addiere.
Gibt es eine Möglichkeit die Summe, die eigentlich von 1 bis inf gehen soll, programmtechnisch zu verarbeiten?
Vielen Dank
Mit freundlichen Grüßen
Rodiak


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 09.03.2011, 23:12     Titel: Re: Suche Vereinfachung für Summe in meiner Fitfunktion
  Antworten mit Zitat      
Hallo Rodiak,
Zitat:
Gibt es eine Möglichkeit die Summe, die eigentlich von 1 bis inf gehen soll, programmtechnisch zu verarbeiten?

Was soll in der Summe von 1 bis Inf gehen? Erraten kann ich das nicht. Da Matlab aber keine Summe bis Inf berechnen kann, müsstest Du dies wahrscheinlich zunächst algebraisch lösen.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2011, 08:07     Titel:
  Antworten mit Zitat      
F = q_{inf}(1-\frac{6}{\pi^2*(a^2+a*b+b^2)} \sum(\frac{b*cos(n*\pi)-a}{n})^2*exp^{\frac{-x(1)*n^2*\pi^2*x_{data}}{(b-a)^2}})

dann rate ich mal. a und b stehen schon vor der Summe. Bleiben noch x_data,x(1) und n übrig. Also wirds wahrscheinlich n sein.
Wahrscheinlich haben die Summanden mit großen n nur einen kleinen Einfluß und man kann die Summation irgendwann abbrechen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Rodiak

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2011, 10:03     Titel:
  Antworten mit Zitat      
Ja tut mir leid. n ist der Index und startet bei 1 und läuft bis unendlich.
Mein Problem besteht nun darin wie ich die Summe ordentlich in meine Funktion eingebe. Bisher habe ich das per Hand gemacht:
Code:

function F = test(x,xdata)
global  a b
%F = q_inf*(1-6/(pi^2*(a^2+a*b+b^2))* ((b*cos(1*pi)-a)/1)^2*exp((-x(1)*1^2*pi^2*xdata)/(b-a)^2));

%F = q_inf*(1-6/(pi^2*(a^2+a*b+b^2))* ( ((b*cos(1*pi)-a)/1)^2*exp((-x(1)*1^2*pi^2*xdata)/(b-a)^2)+((b*cos(2*pi)-a)/2)^2*exp((-x(1)*2^2*pi^2*xdata)/(b-a)^2)));
 

und für die weiteren n einfach den Summanden addiert. Aber das ist ja mehr als aufwendig und nicht sehr zielführend. Deshalb such ich eine Vereinfachung.
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2011, 11:39     Titel:
  Antworten mit Zitat      
Hier mal ein kleiner Versuch, ist sicherlich nicht c&p tauglich,
aber ich hoffe das Prinzip wird klar:

Code:

func=@(x,xdata,n) (((b*cos(n*pi)-a)./n).^2).*exp((-x(1)*xdata*pi^2*n.^2)./(b-a)^2); %Funktion für den Teil hinter dem Summenzeichen

Summe=sum(func(x,xdata,1:100)) %Summe von n= 1 bis 100


 
 
Rodiak

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2011, 12:32     Titel:
  Antworten mit Zitat      
Hey,
ich glaube ich habe das Prinzip verstanden, nur weiß ich nicht wie es funktionieren soll, da in der Summe zwei unbekannte größen, einmal meine Messdaten(xdata) und zum anderen die unbekannte größe x(1) an die ich die Funktion ja anfitten will drin stecken. Das Programm dürfte zu dem Zeitpunkt ja gar nicht wissen was es da einsetzen soll oder habe ich da ein falsches Bild?. Das ist mein Aufruf zum fitten
Code:

[Fitparam,resnorm,residual,exitflag,output,lambda,J] = lsqcurvefit(@test,x0,t,signal, lb , ub   , opts1);
 

Würde es funktionieren wenn ich meine Funktion test
Code:

F = q_inf*(1-6/(pi^2*(a^2+a*b+b^2))*Summe
 

umschreibe und Summe zuerst berechnen lasse?
 
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.