• Regolamento Macrocategoria DEV
    Prima di aprire un topic nella Macrocategoria DEV, è bene leggerne il suo regolamento. Sei un'azienda o un hosting/provider? Qui sono anche contenute informazioni per collaborare con Sciax2 ed ottenere l'accredito nella nostra community!

[C] Libreria dinamica sulla fisica

System32

Utente Stellare
Autore del topic
2 Gennaio 2010
15.556
112
Miglior risposta
0
Salve, dal momento che a scuola studio Fisica ho pensato "perchè non scrivere le formule in C" ? Ho fatto proprio questo, ho creato una libreria dinamica ( quindi una DLL ) che contiene alcune funzioni che corrispondono ad un argomento diverso anche se il tema di queste funzioni è la TEMPERATURA. Cos'è la temperatura ? La temperatura non è altro che una proprietà fisica attribuita alla meteria che ne determina lo stato termico, in altre parole ci permette di dire se un corpo è caldo o freddo. Chiaramente la distinzione tra caldo e freddo non è una cosa uguale per tutti ma è soggettiva. Quando è iniziata la scuola in Fisica abbiamo ripreso le cose dell'anno scorso e, chiaramente, siamo andati avanti parlando della termodinamica ovvero quella parte della fisica che studia la temperatura in relazione ai moti del singolo corpo che si vuole studiare e le eventuali "trasformazioni" che questo corpo subisce ad una certa temperatura.

In questa DLL ci sono 5 funzioni che riguardano la temperatura di cui una calcola la distanza tra 2 corpi :

- una funzione che calcola la pressione (
Perfavore, Entra oppure Registrati per vedere i Link!
)
- una funzione che calcola la temperatura mediate la legge di Boyle (
Perfavore, Entra oppure Registrati per vedere i Link!
)
- una funzione che calcola la distanza tra 2 corpi di massa m1 ed m2 (
Perfavore, Entra oppure Registrati per vedere i Link!
)
- una funzione che calcola la temperatura mediante la prima legge di Gay-Lussac [ si chiama proprio così ] (
Perfavore, Entra oppure Registrati per vedere i Link!
)
- una funzione che calcola la temperatura mediante la seconda legge di Gay-Lussac (
Perfavore, Entra oppure Registrati per vedere i Link!
)

Funzioni aggiunte riguardanti la fisica in generale :

- una funzione che calcola la media (
Perfavore, Entra oppure Registrati per vedere i Link!
)
- una funzione che calcola l'errore massimo (
Perfavore, Entra oppure Registrati per vedere i Link!
)
- una funzione che calcola l'errore relativo ( vedi link per l'errore massimo )
- una funzione che calcola la distanza percorsa in un moto rettilineo (
Perfavore, Entra oppure Registrati per vedere i Link!
)
- una funzione che calcola il tempo impiegato per percorrere una cera distanza in un moto rettilineo ( vedi link per la distanza percorsa )
- una funzione che calcola la velocità media (
Perfavore, Entra oppure Registrati per vedere i Link!
)
- una funzione che calcola la velocità istantanea (
Perfavore, Entra oppure Registrati per vedere i Link!
)
- una funzione che calcola l'accelerazione media (
Perfavore, Entra oppure Registrati per vedere i Link!
)
- una funzione che calcola l'accelerazione istantanea (
Perfavore, Entra oppure Registrati per vedere i Link!
)
- una funzione che calcola l'energia potenziale gravitazionale (
Perfavore, Entra oppure Registrati per vedere i Link!
)
- una funzione che calcola l'energia potenziale elastica (
Perfavore, Entra oppure Registrati per vedere i Link!
)
- una funzione che calcola l'energia cinetica (
Perfavore, Entra oppure Registrati per vedere i Link!
)
- una funzione che calcola il prodotto scalare (
Perfavore, Entra oppure Registrati per vedere i Link!
)
- una funzione che calcola il prodotto vettoriale (
Perfavore, Entra oppure Registrati per vedere i Link!
)
- una funzione che calcola la forza (
Perfavore, Entra oppure Registrati per vedere i Link!
)
- una funzione che calcola il periodo (
Perfavore, Entra oppure Registrati per vedere i Link!
)
- una funzione che calcola la frequenza (
Perfavore, Entra oppure Registrati per vedere i Link!
)
- una funzione che calcola la velocità angolare (
Perfavore, Entra oppure Registrati per vedere i Link!
)
- una funzione che calcola l'ampiezza di un arco in base alla velocità angolare ( vedere link sopra )
- una funzione che calcola l'energia cinetica media delle molecole a livello microscopico (
Perfavore, Entra oppure Registrati per vedere i Link!
)
- una funzione che calcola la pressione del gas perfetto (
Perfavore, Entra oppure Registrati per vedere i Link!
)

fisica.h :

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

DllFisica.cpp :

PHP:
Perfavore, Entra oppure Registrati per vedere i codici!

Potrà sembrare una sciocchezza ( e lo è ) ma a me è servita come esercizio e mi è servito anche per capire come includere propri header o linkare direttamente la libreria dinamica. Mano a mano che studierò cose nuove le aggiungerò alla libreria e se ho tempo metterò anche le cose basilari che ho studiato l'anno scorso.
 
Ultima modifica:
Riferimento: [C] Libreria dinamica fisica, argomento : temperatura

Solo un dettaglio ... tutti i valori in input che possono assumere valore 0 e sono a denominatore di una divisione, devono essere controllati nella funzione per evitare una eccezione di "divisione per zero".
 
Riferimento: [C] Libreria dinamica fisica, argomento : temperatura

Solo un dettaglio ... tutti i valori in input che possono assumere valore 0 e sono a denominatore di una divisione, devono essere controllati nella funzione per evitare una eccezione di "divisione per zero".

Hai assolutamente ragione...non ci avevo pensavo, adesso risolvo.
 
Riferimento: [C] Libreria dinamica fisica, argomento : temperatura

Questa libreria è interessante! Ideale per chi si deve allenare a fisica (tipo me! :emoji_relieved: )
 
Riferimento: [C] Libreria dinamica fisica, argomento : temperatura

Un'ultima cosa ... in C l'elevamento a potenza non viene fatto con l'operatore

^

ma con la funzione pow( ... )
 
Riferimento: [C] Libreria dinamica fisica, argomento : temperatura

Un'ultima cosa ... in C l'elevamento a potenza non viene fatto con l'operatore

^

ma con la funzione pow( ... )

Sì giusto ma dato che nella legge della Gravitazione Universale la distanza ( r ) è al quadrato ho preferito fare r * r anzichè pow(r, 2), anche perchè il primo metodo è il più veloce rispetto alla funzione in sé.
 
Riferimento: [C] Libreria dinamica fisica, argomento : temperatura

Veramente mi riferivo a

((1/10)^11)
 
Riferimento: [C] Libreria dinamica fisica, argomento : temperatura

system32 ha detto:
if ( r == 0 )
{
return -1;
}
else
{
const double costanteGravitazionale = (6,67 * pow(0.1, 11)) * 1;
return (costanteGravitazionale * (m1 * m2)) / (r * r);
}
}
Forse mi sbaglio ma, usando la funzione pow(), non si dovrebbe implementare anche l'header math.h?
 
Riferimento: [C] Libreria dinamica fisica, argomento : temperatura

Forse mi sbaglio ma, usando la funzione pow(), non si dovrebbe implementare anche l'header math.h?

Sì esatto, il prototipo della funzione pow() si trova nell'header math.h solo che ho modificato il codice direttamente qui dal forum dimenticandomi di includere l'header.

EDIT: Nuove funzioni aggiunte.
 
Ultima modifica:
Riferimento: [C] Libreria dinamica sulla fisica

Rinomino come richiesto.