Come usare correttamente il ciclo while in Matlab - Pagina 2
Auto elettriche: la previsione di Bloomberg dell’anno in cui diverranno più economiche di benzina e diesel
Le auto elettriche diventeranno più economiche da produrre rispetto ai veicoli a combustibile fossile entro il 2027. Le previsioni sono quelle di BloombergNEF, secondo cui i veicoli elettrici potrebbero essere …
Paura inflazione azzanna Draghi Effect, tassi BTP a 10 anni raddoppiati da febbraio. Ma attenti ai Bund dopo outlook Bce su inflazione Germania
La paura dell’inflazione si mangia l’effetto Draghi: oggi lo spread BTP-Bund non è particolarmente mosso ma, attorno a quota 110, viaggia ben al di sopra dei minimi a 90 testati …
Tesla accetterà anche dogecoin per pagamenti? Musk lancia survey su Twitter e la cripto meme torna a infiammarsi
"Vuoi che Tesla accetti Doge?" Questa semplice domanda che Elon Musk ha posto sotto forma di sondaggio via Twitter ha ridestato l'interesso verso la criptovaluta nata per scherzo nel 2013 …
Tutti gli articoli
Tutti gli articoli Tutte le notizie

  1. #11
    L'avatar di tesiag
    Data Registrazione
    Aug 2010
    Messaggi
    1,710
    Mentioned
    0 Post(s)
    Quoted
    7 Post(s)
    Potenza rep
    25585333
    programmazione funzionale? (mathematica)

  2. #12

    Data Registrazione
    Sep 2008
    Messaggi
    9,126
    Mentioned
    12 Post(s)
    Quoted
    2551 Post(s)
    Potenza rep
    42949685
    Citazione Originariamente Scritto da ScientiaPotentiaEst Visualizza Messaggio
    Ciao a tutti,



    Ora, da quanto ho imparato so che tutto ciò che si può ciclare in for si può ciclare in while, ma non è necessariamente vero il contrario.
    Non entro nel merito del motivo per cui il risultato non ti viene in while (tra l'altro credo che altri ti hanno già risposto) ma voglio sottolineare l'effetto pratico che si ha usando while al posto di for quando è possibile utilizzare for.

    L'effetto pratico è che il processo computazionale ha un costo enorme ed inutile.

    Nell'ipotesi comune che tu sai già la dimensione dell'array (lo sai o fai in modo di saperlo) succede che sapendolo tu puoi pre-allocare la memoria mediante per esempio in Matlab la funzione zeros con tipo M = zeros(n,m) prima di iniziare il ciclo for. Il che significa che stai inizializzando la matrice cioè vai a puntare le celle di memoria della RAM dandone l'indirizzo al ciclo for che altrimenti dovrà cercalo di volta in volta con un enorme costo computazionale. (Considera che Matlab deriva da C++ e quindi la tecnica del C++, il puntatore, viene ereditata da Matlab). Ora se userai Matlab, lo farai solo se dovrai fare calcoli matriciali, veloci e complessi altrimenti c'è Python o altri free.
    Tra l'altro il ciclo for, sempre ai fini della velocità, può essere utilizzato per il calcolo parallelo tramite la funzione parfor. E questo lo puoi fare tramite solo il ciclo for in quanto per utilizzare il calcolo parallelo non devi avere una broadcast variable. Significa che per ogni valore che assume l'indice nel ciclo l'informazione tra un array e l'altro non deve dipendere dal valore assunto dall'array nell'indice precedente, in altri termini l'informazione trasmessa deve essere definita ab origine senza più la necessita di acquisirne altra. Questa cosa ovviamente non è possibile per il ciclo while che serve proprio a trovare un valore che dipende dagli indici precedenti.

    Quindi se alla fine dell'apprendimento di Matlab non vuoi trovarti a manovrare un calesse quando potevi manovrare la Enterprise e la velocità a curvatura ti conviene non sottovalutare la potenza del ciclo for, anzi, poichè immagino le possibili applicazioni future ti consiglio caldamente ad apprenderlo portandolo alle estreme conseguenze.

Accedi