Parameterinitialisierung für rationale Funktionen

Inhalt

  1. 1 Zusammenfassung
  2. 2 Was Sie lernen werden
  3. 3 Beispiele und Schritte
    1. 3.1 Algorithmus
    2. 3.2 Daten importieren
    3. 3.3 Fitfunktionen definieren und Parameter initialisieren
    4. 3.4 Kurve anpassen
    5. 3.5 Anpassungsergebnisse
    6. 3.6 Beispieldaten


Zusammenfassung

In diesem Tutorial sehen Sie, wie Initialisierungsparameter für rationale Fitfunktionen mit Hilfe der multiplen linearen Regression berechnet werden und ein Fit der Daten mit diesen berechneten Parametern durchgeführt wird.

Origin-Version mind. erforderlich: Origin 9.0 SR0

Was Sie lernen werden

Dieses Tutorial zeigt Ihnen, wie Sie:

  • Initialisierungsparameter für rationale Fitfunktionen berechnen.
  • eine multiple lineare Regression mit Hilfe von Origin C-Code durchführen.

Beispiel und Schritte

Algorithmus

In diesem Tutorial wird die folgende rationale Funktion als Beispiel verwendet:

y=\frac{a+bx+cx^2}{1+dx+ex^2}

wobei x die unabhängige Variable und y die abhängige Variable ist sowie a, b, c, d, e die Fitparameter sind.

Das Multiplizieren beider Seiten mit dem Nenner der rechten Seite ergibt:

y+dxy+ex^2y\;=\;a+bx+cx^2

, und die Gleichung kann ausgedrückt werden mit:

y\;=\;a+bx+cx^2-dxy-ex^2y

Das Substituieren der Anpassungsdaten (x_i, y_i) \;\; i=1 \ldots N in der Gleichung ergibt:

\begin{cases} a+bx_1+cx_1^2-dx_1y_1-ex_1^2y_1=y_1 \\ a+bx_2+cx_2^2-dx_2y_2-ex_2^2y_2=y_2 \\ \vdots \\ a+bx_N+cx_N^2-dx_Ny_N-ex_N^2y_N=y_N \\ \end{cases}

Daher wird das Schätzen der Initialisierungsparameter für eine rationale polynomielle Fitfunktion ein Problem für die multiple lineare Regression mit den linearen Koeffizienten a, b, c, d, e.

\begin{bmatrix} 1 & x_1 & x_1^2 & -x_1y_1 & -x_1^2y_1 \\ 1 & x_2 & x_2^2 & -x_2y_2 & -x_2^2y_2 \\ \vdots \\ 1 & x_N & x_N^2 & -x_Ny_N & -x_N^2y_N \\ \end{bmatrix} \begin{bmatrix} a \\ b \\ c \\ d \\ e \\ \end{bmatrix}= \begin{bmatrix} y_1 \\ y_2 \\ \vdots \\ y_N \\ \end{bmatrix}

Für die multiple lineare Regression enthält Origin eine Funktion ocmath_multiple_linear_regression in Origin C, die über den Initialisierungscode aufgerufen werden kann.

Daten importieren

  1. Öffnen Sie eine neue Arbeitsmappe.
  2. Kopieren Sie die Daten unter Beispieldaten in die Arbeitsmappe.
  3. Markieren Sie Spalte B und wählen Sie Zeichnen: Symbol: Punktdiagramm im Origin-Menü. Das Diagramm sollte folgendermaßen aussehen:
 
Rational PI G1.png

Fitfunktionen definieren und Parameter initialisieren

Die Anpassungsfunktion kann mit Hilfe des Hilfsmittels Fitfunktionen erstellen definiert werden.

  1. Wählen Sie Hilfsmittel: Fitfunktionen erstellen im Origin-Menü.
  2. Klicken Sie im Dialog Fitfunktionen erstellen auf der Seite Ziel auf die Schaltfläche Weiter.
  3. Wählen Sie auf der Seite Name und Typ die Option User Defined in der Auswahlliste Eine Kategorie auswählen oder erstellen, geben Sie rationalfunc im Feld Funktionsname ein und wählen Sie Ausdruck in der Gruppe Funktionstyp. Klicken Sie auf die Schaltfläche Weiter.
  4. Geben Sie auf der Seite Variablen und Parameter die Parameter a, b, c, d, e in das Feld Parameter ein. Klicken Sie auf die Schaltfläche Weiter.
  5. Geben Sie auf der Seite Ausdrucksfunktion das folgende Skript im Feld Funktionskörper ein:
    		(a+b*x+c*x^2)/(1+d*x+e*x^2)
    		
    	

    Klicken Sie auf die Schaltfläche Auswerten. Es wird y=1 bei x=1 gezeigt, das heißt, der Ausdruck ist korrekt. Klicken Sie auf die Schaltfläche Weiter.

  6. Klicken Sie auf der Seite Parameterinitialisierungscode auf die Schaltfläche Code Builder öffnen User-Defined Fitting Functions-2.png rechts neben dem Feld Initialisierungscode und initialisieren Sie die Fitparameter, wie folgt, entsprechend dem Algorithmus.
    	UINT nOSizeN = x_data.GetSize(); //Number of points
    	  UINT nVSizeM = 5; //Number of parameters
    	 
    	  matrix mX(nOSizeN, 5);
    	 
    	  //Construct matrix for data points of independent variables 
    	  vector vCa(nOSizeN), vCb, vCc, vCd, vCe;
    	  vCa = 1;
    	  mX.SetColumn( vCa, 0 );
    	  vCb = x_data;
    	  mX.SetColumn( vCb, 1 );
    	  vCc = x_data^2;
    	  mX.SetColumn( vCc, 2 );
    	  vCd = -x_data*y_data;
    	  mX.SetColumn( vCd, 3 );
    	  vCe = -x_data^2*y_data;
    	  mX.SetColumn( vCe, 4 );
    	 
    	  //Options for multiple linear regression
    	  LROptions stLROptions;
    	  stLROptions.UseReducedChiSq = 1;
    	  stLROptions.FixIntercept = 1; //Fix the intercept at 0.
    	 
    	  FitParameter stFitParameters[ 6 ]; // should be nVSizeM+1
    	  UINT nFitSize = nVSizeM + 1;
    	 
    	  int nRet = ocmath_multiple_linear_regression(mX, nOSizeN, nVSizeM, y_data, 
    	    NULL, 0, &stLROptions, stFitParameters, nFitSize );
    	 
    	  if( nRet == STATS_NO_ERROR )
    	  {
    	    a = stFitParameters[1].Value;
    	    b = stFitParameters[2].Value;
    	    c = stFitParameters[3].Value;
    	    d = stFitParameters[4].Value;
    	    e = stFitParameters[5].Value;
    	  }
    	

    Klicken Sie auf die Schaltfläche Kompilieren, um die Datei zu kompilieren. Klicken Sie dann auf die Schaltfläche Zurück zum NSLF. Klicken Sie auf die Schaltfläche Fertigstellen, um den Dialog Fitfunktionen erstellen zu schließen.

Kurve anpassen

  1. Wählen Sie Analyse: Anpassen: Nichtlinearer Fit im Origin-Menü. Wählen Sie im Dialog NLFit auf der Seite Einstellungen: Funktionsauswahl die Option User Defined in der Auswahlliste Kategorie und die Funktion rationalfunc in der Liste Funktion.
  2. Aktivieren Sie die Registerkarte Parameter. Die aus dem Initialisierungscode berechneten Initialisierungsparameter werden im Dialog aufgelistet, und die Fitfunktionskurve für die Parameter wird folgendermaßen gezeigt. Es scheint, dass die Initialisierungsparameter aus dem Initialisierungscode sehr gut sind.
    Rational PI G2.png
  3. Klicken Sie auf die Schaltfläche Fit, um die Kurve anzupassen.

Anpassungsergebnisse

Die angepasste Kurve sollte folgendermaßen aussehen:

 
Rational PI G3.png

Die angepassten Parameter sind im Folgenden zu sehen:

Parameter Wert Standardfehler
a 3,17139 0,30284
b -1,65602 1,76748
c 0,26407 1,81764
d 3,6884 0,26362
e 5,31812 0,55265

Beispieldaten

x y
-1,5 1,13173
-1,39474 0,8262
-1,28947 1,06999
-1,18421 1,37155
-1,07895 0,79569
-0,97368 2,11346
-0,86842 2,32006
-0,76316 3,9205
-0,65789 5,81904
-0,55263 7,38037
-0,44737 8,31272
-0,34211 11,39718
-0,23684 8,39808
-0,13158 4,7305
-0,02632 4,11105
0,07895 2,39105
0,18421 1,65394
0,28947 0,42953
0,39474 0,83337
0,5 1,18758
Hinweis: Sie können diese Methode auch verwenden, um Parameter für andere rationale polynomielle Fitfunktionen zu initialisieren.