Garz
20-10-2011, 13:26
Ciao a tutti, sono un po' incastrato con un piccolo problema sul calcolo di un parzializzatore per dei profili di velocità.
Il problema sembra (è ) una sciocchezza, ma non riesco a farlo funzionare bene.
situazione: ho una velocità iniziale, una finale e un tempo come input e una variabile "c" come output.
La variabile "c" deve permettermi di calcolare ciclicamente la velocità reale in modo che passi dal valore iniziale a quello finale nel tempo previsto.
Per capirci:
vel(k+1)=vel(k)*c;
Le due velocità possono avere un valore qualsiasi, sia positivo che negativo.
Io al momento ho un programma di questo tipo:
v := vel;
vi := vel iniz;
vo := vel fin;
t := tempo;
-------------------------------
while(1=1):
se ABS(v-vo)>0,01 // se non sono nell'intorno della vel finale
funzione_parzializza(vi,vo,t) -> "c"
v := v*c;
altrimenti:
vi := v (= vo);
------------------------------
la funzione parzializza agisce più o meno così:
1° esecuzione del ciclo:
tstart = clock; //leggo il tempo di inizio della procedura di cambio velocità
deltaV = vo-vi;
esecuzioni ulteriori:
tact = clock; // leggo il tempo attuale
deltaT = tact-tstart;
Pt=deltaT/t;
c := 1+Pt;
------------------------------
sia il programma che la funzione si eseguono ad ogni ciclo, per questo devo mettere il tstart in un antiripetitore.
il problema è che non capisco perchè, ma non funziona bene come procedura.
inoltre dovrei poter limitare il valore di "c" nell'intervallo di ragionevolezza che deriva dalli'informazione iniziale vi, vo, t. (es: se vo>vi -> 1<c<(vo/vi) )
Questo limite non ho idea di come ricavarlo ne, tantomeno, implementarlo.. :|
aiuuuutooo....
Il problema sembra (è ) una sciocchezza, ma non riesco a farlo funzionare bene.
situazione: ho una velocità iniziale, una finale e un tempo come input e una variabile "c" come output.
La variabile "c" deve permettermi di calcolare ciclicamente la velocità reale in modo che passi dal valore iniziale a quello finale nel tempo previsto.
Per capirci:
vel(k+1)=vel(k)*c;
Le due velocità possono avere un valore qualsiasi, sia positivo che negativo.
Io al momento ho un programma di questo tipo:
v := vel;
vi := vel iniz;
vo := vel fin;
t := tempo;
-------------------------------
while(1=1):
se ABS(v-vo)>0,01 // se non sono nell'intorno della vel finale
funzione_parzializza(vi,vo,t) -> "c"
v := v*c;
altrimenti:
vi := v (= vo);
------------------------------
la funzione parzializza agisce più o meno così:
1° esecuzione del ciclo:
tstart = clock; //leggo il tempo di inizio della procedura di cambio velocità
deltaV = vo-vi;
esecuzioni ulteriori:
tact = clock; // leggo il tempo attuale
deltaT = tact-tstart;
Pt=deltaT/t;
c := 1+Pt;
------------------------------
sia il programma che la funzione si eseguono ad ogni ciclo, per questo devo mettere il tstart in un antiripetitore.
il problema è che non capisco perchè, ma non funziona bene come procedura.
inoltre dovrei poter limitare il valore di "c" nell'intervallo di ragionevolezza che deriva dalli'informazione iniziale vi, vo, t. (es: se vo>vi -> 1<c<(vo/vi) )
Questo limite non ho idea di come ricavarlo ne, tantomeno, implementarlo.. :|
aiuuuutooo....