Dialogo con l'autore. Alexander Smirnov. - pagina 35

 

E se calcolate un array di pesi quadratici nella funzione init(), potete ottenere un bel risultato a tutti. Inoltre, i calcoli possono essere ottimizzati usando IndicatorCounted(). Beh, si blocca per i primi secondi quando i periodi sono lunghi, quindi che diavolo...

 
Mathemat:

E se calcolate un array di pesi quadratici nella funzione init(), potreste ottenere un bel risultato a tutti. Inoltre, i calcoli possono essere ottimizzati usando IndicatorCounted(). Beh, si blocca per i primi secondi quando i periodi sono lunghi, quindi che diavolo...

L'ho provato. Calcola una regressione mobile usando una matrice pronta alla velocità di un normale mago.
L'unico inconveniente è che l'array risulta essere di dimensione A[][20] (non ci sono strutture su isi),
e devo ricordare l'indirizzo numerico di una cella come su BESM-3)))
 
Mathemat:

Così si blocca per i primi secondi durante i periodi lunghi, quindi che diavolo...

Non credo che ci dovrebbe essere una notevole lentezza nel primo calcolo. Ma, come sembra ora, dovremmo prima calcolare i valori in uscita (sembra che non abbia senso ricordarli), poi calcolare le somme ridotte, poi calcolare di nuovo i loro nuovi valori e, infine, aggiungere i valori in entrata. Tutto questo per tre somme (somma propria, derivata prima e seconda). Se il periodo è piccolo, questo sarebbe sufficiente per il calcolo completo dell'unica somma necessaria.
In generale, una forzatura così estrema è giustificata solo se l'algoritmo è progettato per l'ottimizzazione nel tester, imho.
 
La cosa interessante è che indipendentemente dall'ordine del polinomio, il tempo di calcolo sarà circa lo stesso (se l'array di pesi è preparato in anticipo).
 
scavato il mio lavoro - il polinomio mash
File:
 
È troppo difficile dare una spiegazione, Dimitri, soprattutto sul significato dei parametri? L'artigianato è, per usare un eufemismo, di altissima qualità.
 

Non è facile:-)

Polinomio: K0*X^0+K1*X^1+K2*X^2+K3*X^3..., i coefficienti K sono definiti nella linea K="1/5/6/1/-20" (K0=1, K2=5...). L'argomento X cambia nell'intervallo da ArgumentMin a ArgumentMax e si ottiene una certa curvatura, che può essere visualizzata in ControlMode=true, e poi questa curvatura viene utilizzata come coefficienti per lo scorrimento.

Sarebbe più interessante fare una spline, perché non è facile ottenere la forma della curva desiderata con questo polnymode.

 
La curva è una specie di funzione di peso dei k-tipi per la macchina ondulatrice?
 
Mathemat:
La curva è una specie di funzione di peso dei k-tipi per la macchina ondulatrice?

Sì, è così.
 

Il valore del bordo ( X 1, bordo destro) per il polinomio cubico costruito usando MNC, per sette punti della serie, ( X 7*(-2)+ X 6*(4)+ X 5*(1)+ X 4*(-4)+ X 3*(-4)+ X 2*(8)+ X 1*(39))/42 . La riga da controllare è 0, 1, 8, 27, 64, 125, 216, quando si sostituiscono i primi sei numeri nella formula, il risultato dovrebbe essere 216, perché il polinomio cubico allinea la serie composta da cubi. Fonte: Kendall M e Stewart A.


A proposito, lo stesso polinomio cubico per sette punti, ma dando una stima del valore di MNC per i punti centrali, cioè

Per X 4 sarà ( X 7*(-2)+ X 6*(3)+ X 5*(6)+ X 4*(7)+ X 3*(6)+ X 2*(3)+ X 1*(-2))/21

Per X3 sarà ( X 7*(1)+ X 6*(-4)+ X 5*(2)+ X 4*(12)+ X 3*(19)+ X 2*(16)+ X 1*(-4))/42

Per X2, sarà ( X 7*(4)+ X 6*(-7)+ X 5*(-4)+ X 4*(6)+ X 3*(16)+ X 2*(19)+ X 1*(8))/42


In generale, queste sono formule di interpolazione, quindi per estrapolare, per esempio, a X 0, cioè nel futuro, oltre la serie esistente, bisogna cercare altri coefficienti nella formula.