Dialog des Autors. Alexander Smirnow. - Seite 35

 

Und wenn Sie in der Funktion init() ein Array quadratischer Gewichte berechnen, können Sie überhaupt ein schönes Ergebnis erzielen. Darüber hinaus können die Berechnungen mit IndicatorCounted() optimiert werden. Nun, es bleibt die ersten paar Sekunden hängen, wenn die Perioden lang sind, also was soll's...

 
Mathemat:

Und wenn Sie ein Array quadratischer Gewichte in der init()-Funktion berechnen, erhalten Sie vielleicht überhaupt ein gutes Ergebnis. Darüber hinaus können die Berechnungen mit IndicatorCounted() optimiert werden. Nun, es bleibt die ersten paar Sekunden hängen, wenn die Perioden lang sind, also was soll's...

Ich habe es versucht. Er berechnet eine gleitende Regression unter Verwendung eines fertigen Arrays mit der Geschwindigkeit eines gewöhnlichen Assistenten.
Die einzige Unannehmlichkeit ist, dass das Array die Dimension A[][20] hat (es gibt keine Strukturen auf isi),
und ich muss mir die numerische Adresse einer Zelle wie bei BESM-3 merken)))
 
Mathemat:

Es bleibt also bei langen Perioden die ersten paar Sekunden hängen, also was soll's...

Ich glaube nicht, dass es bei der ersten Berechnung zu einer merklichen Verlangsamung kommen sollte. Aber so wie es jetzt aussieht, sollten wir zuerst die ausgehenden Werte berechnen (es scheint keinen Sinn zu haben, sie sich zu merken), dann die reduzierten Summen berechnen, dann immer wieder ihre neuen Werte berechnen und schließlich die eingehenden Werte addieren. All dies für drei Summen (eigentliche Summe, erste und zweite Ableitung). Für eine kleine Zeitspanne ist dies, gemessen an der Anzahl der Operationen, durchaus in der Lage, die einzig benötigte Summe vollständig zu berechnen.
Im Allgemeinen ist eine solche extreme Forcierung nur dann gerechtfertigt, wenn der Algorithmus für die Optimierung im Prüfgerät ausgelegt ist.
 
Interessant ist, dass die Rechenzeit unabhängig von der Ordnung des Polynoms in etwa gleich ist (wenn die Anordnung der Gewichte im Voraus vorbereitet wird).
 
Ich habe mein Werk ausgegraben - den Polynom-Brei
Dateien:
 
Ist es zu schwierig, eine Erklärung zu geben, Dimitri, insbesondere über die Bedeutung der Parameter? Die handwerkliche Qualität ist, gelinde ausgedrückt, sehr hoch.
 

Es ist nicht leicht:-)

Polynom: K0*X^0+K1*X^1+K2*X^2+K3*X^3..., K-Koeffizienten sind in der Zeile K="1/5/6/1/-20" definiert (K0=1, K2=5...). Das Argument X ändert sich im Bereich von ArgumentMin bis ArgumentMax und man erhält eine Krümmung, die in ControlMode=true angezeigt werden kann, und diese Krümmung wird dann als Koeffizienten für das Gleiten verwendet.

Es wäre interessanter, einen Spline zu erstellen, da es nicht einfach ist, die gewünschte Kurvenform mit diesem Polymodus zu erhalten.

 
Ist die Kurve eine Art Gewichtsfunktion der k-Typen für die Wellenmaschine?
 
Mathemat:
Ist die Kurve eine Art Gewichtsfunktion der k-Typen für die Wellenmaschine?

Ja, das ist sie.
 

Der Kantenwert ( X 1, rechte Kante) für das mit MNC konstruierte kubische Polynom für sieben Punkte der Reihe ( X 7*(-2)+ X 6*(4)+ X 5*(1)+ X 4*(-4)+ X 3*(-4)+ X 2*(8)+ X 1*(39))/42 . Die zu prüfende Reihe lautet 0, 1, 8, 27, 64, 125, 216. Setzt man die ersten sechs Zahlen in die Formel ein, sollte das Ergebnis 216 lauten, da das kubische Polynom die aus Würfeln bestehende Reihe ausrichtet. Quelle: Kendall M und Stewart A.


Übrigens, das gleiche kubische Polynom für sieben Punkte, aber mit einer Schätzung des Wertes durch MNC für die mittleren Punkte, d.h.

Für X 4 ergibt sich ( X 7*(-2)+ X 6*(3)+ X 5*(6)+ X 4*(7)+ X 3*(6)+ X 2*(3)+ X 1*(-2))/21

Für X3 ist es ( X 7*(1)+ X 6*(-4)+ X 5*(2)+ X 4*(12)+ X 3*(19)+ X 2*(16)+ X 1*(-4))/42

Für X2 ergibt sich ( X 7*(4)+ X 6*(-7)+ X 5*(-4)+ X 4*(6)+ X 3*(16)+ X 2*(19)+ X 1*(8))/42


Im Allgemeinen handelt es sich dabei um Interpolationsformeln, d. h., um z. B. nach X 0, d. h. in die Zukunft, über die bestehende Reihe hinaus zu extrapolieren, müssen Sie nach anderen Koeffizienten in der Formel suchen.