Umgang mit zyklischen oder wiederkehrenden Formeln in einer Tabelle (auch bekannt als Zirkelverweise).Ich habe eine Formel, die immer wiederkehrt.JMP kann das Problem lösen, warnt aber jedes Mal vor Zyklen, wenn ich eine neue Formel erstelle.
Wie kann ich:
- Eine neue Iteration erzwingen?
- Konfigurieren Sie die Anzahl der Iterationen (oder Stoppkriterien), um die Wiederholung zu lösen?
- Verhindern Sie, dass die Bewertung erneut erfolgt? Die Option „Auswertung unterdrücken“ im Formelmenü hat nicht funktioniert.
Die Funktion ist etwas komplexer, unterscheidet sich aber nicht von der folgenden, die ohne Beanstandung funktioniert.
X (k+1) = 0,99 * X(k)
If(
Selected() == 1, 1,
Row() == 1, 1,
Lag( :X ) * 0.99
)
Erweiterte statistische ModellierungVerbraucher- und MarktforschungDatenzugriffQualitäts- und VerfahrenstechnikZuverlässigkeitsanalyseBetreff: Umgang mit zyklischen oder wiederkehrenden Formeln in einer Tabelle (auch bekannt als Zirkelverweise).Die von Ihnen bereitgestellte Funktion sollte unverändert und ohne Warnungen funktionieren.Wenn Sie tatsächlich auf Spalte A in der Formel für B und auf Spalte B in der Formel für A verweisen, können Sie versuchen, diese Logik als einzelne Formel zu schreiben oder zu befolgen @Craige_Hales raten wir Ihnen, dies stattdessen mit einem Skript zu tun.
Tabelle mit Ihrer Beispielformel, diese sollte ohne Warnung oder Fehler ausgewertet werden.
New Table( "Untitled 16",
Add Rows( 10 ),
New Column( "X",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( Selected() == 1, 1, Row() == 1, 1, Lag( :X ) * 0.99 ) ),
Set Selected
),
Set Row States( [0, 0, 0, 0, 1, 0, 0, 0, 1, 0] )
)
Betreff: Umgang mit zyklischen (oder wiederkehrenden) Formeln in einer TabelleDer Formelauswerter von JMP wertet zunächst Formelspalten aus, die nur von Nicht-Formelspalten abhängen, und bewertet dann Formelspalten, die von bereits ausgewerteten Formelspalten abhängen. Wenn die Formel von Spalte A von Spalte B abhängt und die Formel von Spalte B von Spalte A abhängt, kann JMP nicht auswählen, welche Formel zuerst ausgewertet werden soll. Wenn es Ihnen gelingt, JMP dazu zu bringen, eine zirkuläre Abhängigkeit zu erstellen, können Sie nicht sicher sein, welche Spalte alte Daten aus der anderen Spalte verwendet hat.
JMP wertet eine Spalte von oben nach unten aus. Innerhalb einer Formel können Sie die Verzögerungsfunktion (oder Subskription) verwenden, um frühere Zeilen anzuzeigen und den zuvor berechneten Wert zu erhalten. Ich bin mir nicht sicher, was passiert, wenn Sie sich zukünftige Zeilen ansehen, aber dieser Wert wurde noch nicht berechnet.
Es gibt Formeln, von denen man denken könnte, dass sie auf der Grundlage von Excel-Regeln funktionieren könnten, aber JMP ist keine Tabellenkalkulation und spielt nach den oben genannten Regeln. Wenn Sie Spalte A auf eine Verzögerung von Spalte B und Spalte B auf eine Verzögerung von Spalte A verweisen müssen, sollten Sie A und B zu Nicht-Formel-Spalten machen und JSL schreiben, um sie auszufüllen. Fügen Sie diese JSL zu einem Tabellenskript mit einem Namen wie „Führen Sie mich aus, wenn die Daten aktualisiert werden müssen“ hinzu.
Wenn Sie eine rekursive Funktion haben, können Sie eine JSL-Funktion erstellen, die sich selbst aufruft. JSL hat eine relativ niedrige Grenze für die zulässige Rekursionstiefe, etwa 100. Sie müssen Ihre eigene if-Anweisung schreiben, die entscheidet, wann die Rekursion gestoppt werden soll. Normalerweise wird ein Tiefenparameter verwendet, um die Rekursion zu stoppen, etwa (ungetestet und sinnlos ...)
f = function({depth}, if(depth < 10, /* do something */ f(depth + 1) ) );
f(0)
Betreff: Umgang mit zyklischen (oder wiederkehrenden) Formeln in einer TabelleAls Referenz bietet Excel die folgenden Optionen zum Umgang mit Zirkelverweisen.
https://support.microsoft.com/en-us/office/change-formula-recalculation-iteration-or-precision-in-excel-73fc7dac-91cf-4d36-86e8-67124f6bcce4#:~:text=Iteration%20is %20die%20wiederholte%20Neuberechnung wird%20als%20a%20zirkuläre%20Referenz bezeichnet .