Benvenuto caro Lettore!

UF è un blog di ingegneria informatica pieno di articoli più o menoo tecnici. Iscriviti per rimanere aggiornato all'uscità dei prossimi articoli.

Ad Ad ads ads

Ricerca

17 giu 2010

Forza di Lorentz concetto e applicazione

Salve,oggi vi parlerò della forza di lorentz con qualche applicazioni.

Definizione


Quando una carica si muove con velocità V all'interno di un campo magnetico B è soggetta ad una forza F = qv x B (ove il simbolo x indica il prodotto vettoriale).

detta Forza di Lorentz.

per conoscere direzione e verso della forza si può usare la mano destra: il pollice indica il verso della velocità, le dita della mano il verso del campo magnetico e il palmo della mano il verso della forza di Lorentz (per cariche positive).

image

Notiamo che V rimane sempre perpendicolare a F ,il che ci dice che il moto di q è circolare e con V costante è anche uniforme.

Quindi abbiamo un moto circolare uniforme.

Dettagli sul moto:


Abbiamo un accelerazione centripeta a

image

Applicazione:


image

Esercizio 46 pagina 661:


image

Soluzione:


image

image

avatarfirma

Ringraziamenti:

Come costruire gli Heaps binari

Salve a tutti oggi si parla di heaps binari. Cosa sono e come vano creati.

Un heap è un array che può essere visualizzato come un albero binario quasi completo .

Quasi completo significa che tutti i livelli ,tranne l'ultimo,sono completi:possono mancare alcune foglie consecutive a partire dall'ultima foglia a destra

Esempio in immagine :

Un array che rappresenta un heap binario è un oggetto con
due attributi:
length[A] `e il numero di elementi (la dimensione) dell’array
heap-size[A] `e il numero di elementi dell’heap memorizzati
nell’array

Ci sono 2 cose fondamentali da sapere sugli heaps :

1. La radice dell’albero è A[1] (si trova in posizione 1)

2. Le operazioni per ricavare il padre Padre[i]  ,il figlio destro destro[i] e il figlio sinistro sinistro[i] di un nodo i sono:

Padre[i]

return  parte intera(i/2)

sinistro[i]

return 2i

destro[i]

return 2i+1

Ecco un esempio di heap binario con la sua visualizzazione in albero binario:

image

Esistono due tipi di heap binari: max-heap e min-heap
In entrambi i tipi di heap binario, i valori dei nodi soddisfano
una proprietà  le cui caratteristiche dipendono dal tipo di heap

Proprietà del max-heap: in un max-heap ogni nodo i diverso
dalla radice `e tale che A[padre[i ]] >= A[i ]

Questa regola ha 2 conseguenze:

1: l’elemento più grande di un max-heap viene memorizzato nella
radice

2: un sottoalbero di un nodo u contiene nodi il cui valore non `e
mai maggiore del valore del nodo u

Il min-heap si comporta in modo duale ,quindi da ora in poi,parlando di heap,mi riferisco a max-heap.

Come costruire un heaps binario ?

Per costruire un heaps abbiamo bisogno di dell’algoritmo HEAPIFY.

Questo algoritmo ha per obbiettivo di mantenere la proprietà del heaps cioè

A[padre[i]] >=A[i]. Quindi come input abbiamo un array in un certo ordine e alla fine in output questo array sarà un heaps binario.

Principio dell’algoritmo:

Prima si cerca il massimo fra il nodo i e i suoi figli ,poi si sostituisce il nodo i con il massimo trovato e si richiama ricorsivamente l’algoritmo per il figlio che ha appena scambiato  valore con i. Praticamente si va verso il basso.

image

largest è la variabile che rappresenta il massimo fra i due figli.

Costo dell’algoritmo.

Il costo di Heapify in un (sotto)albero di dimensione n è pari:
al tempo costante  c  necessario per stabilire il massimo fra gli
elementi A[i ], A[sinistro(i )] e A[destro(i )]
più il tempo per eseguire Heapify in un sottoalbero con radice
uno dei figli di i
La dimensione di ciascun sottoalbero non supera 2n/3 perché siamo in un albero quasi completo.
Il tempo di esecuzione di Heapify può essere espresso dalla
seguente ricorrenza
T(n)<= T(2n/3) + c
Per il teorema master, la soluzione di questa ricorrenza e O(log2 n)

Per la costruzione del heap utilizziamo Heapify su tutti i nodi fra

1 e parte intera(n/2). Perché?

Visto che tutte le foglie possono essere considerate heaps di dimensione 1,basta sistemare con Heapify  tutti i nodi che non sono foglie  in ordine decrescente.

image

Costo di Build-Heap :

Ogni chiamata costa O(log2n) ci sono O(n) chiamate  quindi siamo a O(nlog2n)

Possiamo fare di meglio osservando che il tempo di esecuzione
di Heapify varia al variare dell’altezza del nodo nell’heap.

Un’analisi più rigorosa si basa sulle seguenti informazioni:
-uno heap di n elementi ha un’altezza di log2n
per ogni k = 0, . . . , log2n ci sono al più  n/2k+1 nodi di
altezza k
-una chiamata di Heapify su un nodo di altezza k e O(k)
Il costo T(n) di Build-Heap e limitato da:

image

Dopo i calcoli ci rendiamo conto che il costo di Build-Heap è O(n).

Basta per oggi,Spero che hai imparato qualcosa leggendo questo articolo. Se hai dei dubbi o suggerimenti,lasca un commento qui sotto.

avatar firma

15 giu 2010

Come studiare Elettromagnetismo in 22 giorni o meno?

Salve a tutti,oggi vi parlerò di elettromagnetismo ,la seconda parte dell’esame di Fisica 2.  E’ un esame del mio corso che si fa in due tappe: la prima è scritta e la seconda è orale.  Per prepararsi allo scritto uno fa tanti esercizi che è una cosa normale, ma per chi prepara l’orale il lavoro non è semplice. Uno deve studiarsi bene i concetti chiave dell’argomenti per poi poterli restituire in modo coerente davanti al professore. Questa parte della fisica ha sostanzialmente 3 moduli importanti che ho diviso in concetti chiave per lo studio.

Modulo 1:Magnetostatica nel vuoto
giorno 1:Forza di Lorentz

giorno 2: La prima legge di Laplace

giorno 3: La seconda legge di Laplace

giorno 4: La legge di Gauss

giorno 5:Momenti di una spira percorsi da corrente

giorno 6 :Spira rettangolare immersa in un campo magnetico

giorno 7: Legge di Ampere con dimostrazione

Modulo 2: Induzione elettromagnetica
giorno 8:La legge di Faraday

giorno 9: Legge di Lenz

giorno 10: Legge di felici

giorno 11: Autoinduzione

giorno 12: Energia Magnetica

Modulo 3 : Magnetostatica nei mezzi materiali
giorno 13: Vettore Magnetizzazione

giorno 14: Densità di corrente

giorno 15: Campo magnetico H

giorno 16: Legge di Ampere -Maxwell

giorno 17: suscettività e permeabilità magnetica nei mezzi lineari

giorno 19:Condizioni al contorno di B e H

giorno 20: classificazione dei materiali magnetici

giorno 21: circuito magnetico

giorno 22: Riluttanza magnetica

giorno 23: La legge di Hopkinson

In Conclusione direi che se uno si studia bene questi concetti chiave ,sara pronto per prova orale. Nei prossimi articoli approfondiro ognuno di questi concetti con tutte le spiegazioni necessarie. Se hai un altro modo di prepararti all’orale di un esame tecnico, se hai dei dubbi o ambiguità lo spazo dei commenti ti aspetta qui sotto.   Buon studio !

avatar firma

14 giu 2010

Capire Insertion Sort

Oggi vediamo più in dettaglio l’algoritmo di ordinamento per inserimento.

Come richiesto da l’Algor method ,eseguiro 4 passi.

1.Il Problema

Ordinare dei dati omogenei (dello stesso tipo) o in ordine crescente o decrescente dipendendo dell’applicazione specifica.

2.Struttura dati usata

Di solito si usa un array di interi. Ma questo può variare nelle applicazioni specifiche.

3.Pseudo codice

Praticamente l’algoritmo si comporta come un umane che vuole ordinare una mano di carta. Al ’inizio , tutte le carte sono sul tavolo,con la mono destra prendo una a una le carte e le metto sulla mano sinistra nel posto giusto. Per mettere la carta nel posto giusto ogni volta ,faccio un paragono con le carte della mano sinistra. Ora che sappiamo come fa l’algoritmo ,ecco lo pseudo codice :

INSERTION-SORT(A)

1. for j <-- 2  to length[A]
2.      do   key <-- A[J]
3.               // inserire A[j] nella sequenza ordinata A[1..j -1]
4.               i <-- j - 1
5.               while i>0 and A[i]>key
6.                   do A[i + 1] <-- A[i]
7.                         i <-- i - 1
8.               A[i + 1] <-- key

Notiamo che l’ordinamento usa un solo array per questo si parla di ordinamento in place.

Key rappresenta la nuova carta da inserire ogni volta nella mano sinistra.

A[1..j-1] rappresenta la mano sinistra cioè la parte de l’array già ordinata.

J serve ad indicizzare la variabile da inserire in A[1..j-1]

I permette di scorrere A[1..j-1] cioè da j-1 a 1.

il primo ciclo While è quello che fa prendere ogni volta una variabile key da inserire dentro A[1..j-1].

il secondo ciclo invece è quello che fa trovare il posto giusto a key paragonandolo ogni volta ad un elemento di A[1..j-1].

Ora che abbiamo capito come funziona l’algoritmo attraverso questo pseudo codice calcoliamo la complessità

4.Complessità

Per calcolare la complessità ,dobbiamo calcolare quante volte viene eseguita una istruzione. un istruzione presente in un ciclo viene eseguita un numero di volte pari a quanti indici il ciclo coinvolge con il contatore. Se associamo una costante cj ad ogni istruzione ,otteniamo qualcosa di questo tipo:

image

La somma è quindi  c1*n+c2*(n - 1) + c4*(n - 1) + c5*£ + c6*(£ - 1) + c7*(£ - 1)     + c8*(n - 1)

Ora vediamo di calcolare £. Il ciclo dalla riga 5 alla 7 va dell’indice 1 a j – 1, quindi il costo di ogni riga di questo ciclo diventa cj*(j – 1). Ma ognuna di queste righe si trovano nel grande ciclo che va dalla prima all’ultima riga  (indice coinvolti sono di n - 1); quindi

clip_image002[6]

Questo ci da un risultato dell’ordine di

clip_image002

Conclusione  La somma totale è circa

clip_image002[8]

La complessità nel caso peggiore è quindi  una forma quadratica.

Spero che hai imparato qualcosa leggendo questo articolo. Se hai dei dubbi o suggerimenti,lasca un commento qui sotto.

avatar firma

13 giu 2010

Come Capire un algoritmo?

Nel campo della programmazione,c’è sempre a che fare con gli algoritmi,oggi vi propongo un metodo semplice per capire ogni nuovo algoritmo che dovrete usare in un vostro programma.Io consiglio a tutti quelli che hanno a che fare con un algoritmo di usare questo metodo prima di passare alla realizzazione del codice.

Ho chiamato questo metodo di 4 passi : la Algor Method. Ora vediamo questi 4 passi:
1.Quale problema risolve il mio algoritmo?

Devo sempre sapere in modo preciso quale problema deve risolvere il mio algoritmo. Questo mi  risparmia dei problemi di comprensione o ambiguità che potrei incontrare durante la programmazione.
2.Quali strutture dati usa il mio algoritmo ?

Devo conoscere la struttura dati usata per una semplice ragione: La sua implementazione. Per poter implementare una struttura dati ,la devo prima conoscere e magari documentarmi se non l’ho mai usata. Questo mi risparmia di dover programmare con la testa fra il libro e lo schermo del Mc Book (non è consigliato fare due cose contemporaneamente :-)  semplice avviso agli super uomini)
3.Qual è il pseudo codice del mio algoritmo ?

il pseudo codice va analizzato e capito riga dopo riga ,visto che vera tradotto poi nel linguaggio di programmazione che uso. Questo lavoro ci permette di capire quale metodo usa l’autore del pseudo codice per risolvere il problema. Questo ci permetterà poi di poter modificarlo a piacimento dentro il codice. uno direbbe semplicemente : “Non puoi modificare qualcosa che non capisci” .
4.qual è la complessità del mio algoritmo?

Dopo i tre fondamentali passi c’è questo ultimo e opzionale passo che ci richiede di analizzare la complessità dell’algoritmo. Questo serve o per cultura (La cultura è come la nutella: più ne hai e più ne spalmi) o per cercare di ottimizzarlo.

Questo è il metodo che uso per capire gli algoritmi che studio e che uso a volte programmando. Se anche tu hai un metodo che usi per capire meglio gli algoritmi che usi ,lascia un commento qui sotto.

firma

Le strutture dati di base in programmazione

Salve a tutti. Oggi parleremmo di strutture dati. Secondo Wikipedia,una struttura dati è un'entità usata per organizzare un insieme di dati all'interno della memoria del computer, ed eventualmente per memorizzarli in una memoria di massa. Esistono delle strutture dati di base come ad esempio un array e ci sono quelle dinamiche che sono l’oggetto di questo articolo.

Per ogni struttura dati esiste un numero di operazioni possibile e tanti modi per la loro implementazione. Ho scelto 6 strutture dati che analizzerò con precisione in un apposito articolo:

  1. Alberi



  • Heaps

  • Alberi binari di ricerca

  • Alberi Rosso e Neri


2.     Le tabelle Hash

3.     I Grafi

Grazie di aver etto questo articolo. Se hai delle domande o suggerimenti,lascia un commento qui sotto.

Gli algoritmi di base in programmazione

Oggi sono molto emozionato perché questo è il mio primo articolo sulla programmazione. Parlerò degli algoritmi da conoscere. Per ogni algoritmo faro un articolo che parla della sua implementazione e delle sue prestazioni. Prima di cominciare ti faccio una domanda: Cos’è un algoritmo? Wikipedia risponde cosi: « sequenza logica di istruzioni elementari (univocamente interpretabili) che, eseguite in un ordine stabilito, permettono la soluzione di un problema in un numero finito di passi » Un algoritmo a essenzialmente 4 caratteristiche: -Non ambiguità: Le istruzioni devono essere ben definite. -Correttezza: Ogni informazione di ingresso deve fornire l’informazione giusta in uscita. -Terminazione: Per ogni informazione di ingresso dobbiamo avere una sequenza finita di passi . -Prestazioni: Il modo in cui un algoritmo gestisce le risorse di cui ha bisogno.Per aumentare le prestazioni di un algoritmo,bisogna minimizzare il numero di passi e le risorse che usa. Ora che sai un po'
Technorati Tag:

Technorati Tag:

di più sugli algoritmi,ti parlerò di 12 algoritmi che potranno servirti in programmazione.

  1. Ordinamento


Per risolvere problemi di ordinamento abbiamo 5 algoritmi di base:

2.      Ricerca Per risolvere problemi di ricerca abbiamo 2 algoritmi di base:

  • ricerca sequenziale

  • ricerca per dicotomia


3.     Problemi vari

  • Calcolo del massimo comune divisore (Mcd) con il metodo di Euclide

  • Recursive squaring  per il calcolo delle potenze intere

  • Calcolo dei numeri di fibonacci

  • Moltiplicazione di matrice

  • Sottosequenza comune più lunga


Grazie per aver letto il mio articolo. Ci vediamo al prossimo che scriverò. Se hai delle domande ,non esitare a commentare qui sotto.

Siamo su Facebook

Google+