Allgemeine lineare Nebenbedingungen

Sie können allgemeine lineare Bedingungen verwenden, um auf die Parameter erweiterte Bedingungen anzuwenden, wenn das Kontrollkästchen Lineare Nebenbedingungen aktivieren auf der Registerkarte Code des Dialogfelds NLFit aktiviert ist. Lineare Nebenbedingungen können in dem Feld Nebenbedingungen auf der gleichen Registerkarte oder im Dialogfeld des Fit-Funktions-Managers definiert werden:

Image:General_Linear_Constraints.png
Hinweise: Die allgemeinen linearen Nebenbedingungen stehen nur für explizite Anpassungsfunktionen zur Verfügung.

Inhalt

Allgemeine Notation

Um lineare Bedingungen zu erstellen, können Sie Parameternamen, arithmetische Operatoren und relationale Operatoren verwenden. Es werden fünf relationale Operatoren unterstützt: =, <, <=, >, and >=. Beachten Sie, dass der Kurvenfitter "<" und "<=" gleich behandelt. Daher macht es keinen Unterschied, ">" und "=>" zu verwenden.

Unten sind einige einfache Beispiele der linearen Bedingungen (angenommen, a, b, c und d sind Parameter):

  • a > b;
  • a + 2 * b >= c * 2 ? d;
  • a < b < c;
  • a / 3 < 9;

Wenn Kopien angepasst werden, wird die Kurvenanpassung auf mehrere Impulse in den Eingabedaten durchgeführt. In diesem Fall kann die Schreibweise "ParaName__n" (mit zwei Unterstrichen) verwendet werden, um auf den Parameter mit dem Namen ParaName für den n-ten Impuls zu verweisen, wenn Sie die linearen Nebenbedingungen definieren. Beispielsweise verweisen "w__1" und "w__2" jeweils auf die w Parameter des 1. und 2. Impulses. Um eine Bedingung zu erstellen, die besagt, dass die Breite des 2. Impulses größer sein sollte als die des 1. Impulses, sollte die lineare Bedingung folgendermaßen geschrieben werden:

w__1 > w__2;

Bei Verwendung der globalen Anpassung können Sie die Schreibweise "ParaName_n" verwenden (mit nur einem Unterstrich), um auf den Parameter mit dem Namen ParaName für den n-ten Datensatz zu verweisen, wenn Sie die linearen Nebenbedingungen definieren.

Wenn der Code in der Definition Ihrer linearen Nebenbedingung mehrere Zeilen umfasst, teilen Sie die Zeilen bitte mit Semikolon. In einem einzelnen Satz können Sie mehrere Operatoren einsetzen. Zum Beispiel:

4 < a < b < 6;

Dies ist äquivalent zu:

4 < a; a < b; b < 6;

Sie können auch die Variablen verwenden, die den numerischen Werten in den linearen Bedingungen zugewiesen wurden. Wenn beispielsweise die Funktion zwei Parameter hat, P1 und P2, können Sie eine lineare Nebenbedingung folgendermaßen definieren:

P1+qw*P2,

vorausgesetzt, dass Sie zuvor qw auf einen numerischen Wert wie 2,5 gesetzt haben.

Beachten Sie, dass nichtlineare Bedingungen nicht unterstützt werden. Daher funktionieren die folgenden nichtlinearen Bedingungen nicht:

  • a^2 > c;
  • a * b > 3;
  • 1 / b > c + 3;
  • sin(a) < c;

Schranken können gesetzt werden, um die Werte der Anpassungsparameter zu begrenzen. Wenn beides, Schranken und lineare Nebenbedingungen, verwenden wird, haben Letztere eine höhere Priorität.

Erweiterte Notation

Die allgemeine Notation für lineare Nebenbedingungen wurde in Origin 8.1 SR3 erweitert, so dass spezielle Fälle jetzt unterstützt werden. Diese Notationen sind nützlich bei wiederholten Anpassungen, da sie eine Parameter"familie" darstellen können.

Notation für Anfangswerte von Parametern

Verwenden Sie (i), um auf die Anfangswerte von einem Parameter zu verweisen. Zum Beispiel bedeutet xc__2(i) den Anfangswert des Parameters xc__2. Um den Parameterwert von xc__2 zu begrenzen, so dass er von seinem Anfangswert nicht um mehr als 0,3 abweicht, verwenden Sie daher die folgende Nebenbedingung:

xc__2(i)-xc__2 <= 0,3;
xc__2-xc__2(i) <= 0,3;

Notation für Parameterfamilie

Verwenden Sie (a), um alle Parameter einer Familie darzustellen. Angenommen, alle Amplituden (A) sollen kleiner sein als 1, dann verwenden Sie folgende Nebenbedingung:

A(a) < 1;

Notation für alle Parameter außer einem speziellen Parameter

Verwenden Sie (e), um auf alle Parameter einer Familie zu verweisen, außer derjenigen, die (e) vorausgeht. Das folgende Beispiel kann sicher stellen, dass die Amplitude A__3 mindstens zweimal so groß ist wie alle anderen Amplituden:

A__3 >= 2*A__3(e);

Beachten Sie, dass nicht mehr als ein (e) in einer Nebenbedingung enthalten sein sollte. Außerdem sollten (a) und (e) nicht zusammen in einem Dialogfeld der Allgemeinen Linearen Nebenbedingungen auftreten.

Kombination der Sonderzeichen

Die Syntax (e) und (a) kann mit der Syntax (i) zusammen verwendet werden. Die folgende Nebenbedingung stellt sicher, dass kein Impulszentrum von seinem Anfangswert um mehr als 0,2 abweicht.

xc(ia) - xc(a) <= 0,2;
xc(a) - xc(ia) <= 0,2;

Verwenden von Wiederholungen/festem Index

Verwenden Sie (n), um eine Reihe von Parameterfamilien darzustellen. Wenn beispielsweise das Folgende gewünscht wird

w > w__2;
w__2 > w__3;
w__3 > w__4;
w__4 > w__5;

können wir folgende Nebenbedingung verwenden:

w(n) > w(n+1), n=1..5;

Ein weiteres Beispiel:

w(2*n-1) < w(2*n), n=1..10;

Dies ist äquivalent zu:

w < w__2; w__3 < w__4; w__5 < w__6; w__7 < w__8; w__9 < w__10;