ancora esercizi
Allora, avete risolto i precedenti esercizi? Eccone un altro, semplice ma importante. Questo, ancor più degli altri, è importante che lo risolviate entro la prossima lezione! A proposito: ricordatevi il cambiamento d'orario!!!
Laboratorio di Informatica per la Fisica II
Allora, avete risolto i precedenti esercizi? Eccone un altro, semplice ma importante. Questo, ancor più degli altri, è importante che lo risolviate entro la prossima lezione! A proposito: ricordatevi il cambiamento d'orario!!!
Pubblicato da hronir alle 22:45 0 commenti
Ecco qualche esercizio per venerdì prossimo.
Ricordatevi il cambiamento d'orario!!!
Pubblicato da hronir alle 18:45 0 commenti
Pubblicato da hronir alle 10:01 2 commenti
Ecco qui una possibile implementazione di istogramma.cc
Pubblicato da hronir alle 10:00 0 commenti
Ho provato ad ottemperare al punto C) degli esercizi ed ho uploadato sul gruppo di discussione la mia modesta soluzione.
In particolare, non ho trovato il modo soddisfacente per:
Pubblicato da Cassa alle 13:14 2 commenti
Ciao a tutti,
volevo ricordarvi che oltre al Blog ed ai Quaderni esiste anche un gruppo di discussione di Google relativo al laboratorio, si chiama LabInfoDocet.
Trovate il link (permanente) a destra.
Il gruppo è utile perchè:
1. riporta tutti i messaggi del blog.
2. da la possibilità di caricare facilmente files (come se fossero allegati di una e-mail) che diventano disponibili per tutti (e così non dovete fare "copia-incolla" nel blog).
3. ci si può iscrivere al servizio di ricezione dei post via e-mail (così sarete sempre aggiornati).
... and much more.
Un assaggio, qui di seguito i link a due file (uno di Eugenio e l'altro mio) che riguardano le classi "complesso" e "istogramma":
Istogramma Eugenio.cc
complessiKri.h
(p.s. Eugenio non mi ha mai chiesto di sbattere il suo file in prima pagina sul blog... però spero che non si arrabbi per questo!!)
Pubblicato da Unknown alle 00:45 0 commenti
Pubblicato da hronir alle 21:19 0 commenti
Turno del mattino:
Pubblicato da hronir alle 16:22 0 commenti
a seguito di una domanda in laboratorio, trovate fra i quaderni un link ad una pagina web sui singleton.
Pubblicato da Unknown alle 23:26 0 commenti
Pubblicato da hronir alle 18:51 0 commenti
ecco un'altra possibile implementazione di una funzione di ricerca di un minimo locale di una funzione.
Pubblicato da Unknown alle 14:59 0 commenti
Pubblicato da hronir alle 16:09 1 commenti
Ecco fatto, ho finalmente modo di chiedere consigli:ho scritto un programmino che genera la distribuzione, traccia il solito istogramma attraverso una funzione alla quale passo dei vettori.Per questi utilizzo l'allocazione dinamica.Ma DevC++ mi segnala alcune cose che riguardano i vettori e la funzione. Peto auxilium socios.
Ho corretto un po' di stupidate che non andavano e lo ripropongo.Spero che sia possibile chiamare un vettore ed una singola variabile con lo stesso nome, ma mi hanno già ripreso a proposito(sono testardo).Ecco il codice(18.46).Grazie per la pazienza.
P.s. Ecco la versione testo del codice.
Pubblicato da Anonimo alle 21:11 13 commenti
ciao,
per ricevere via email i post sottomessi al blog, ci si puo' registrare alla mailing list di google linkata qui:
http://groups.google.com/group/labinfodocet/about?hl=en
Pubblicato da Unknown alle 18:30 4 commenti
A questo proposito, è forse il caso di anticipare in questo post dei quaderni, una discussione più dettagliata sul modo ottimale con cui passare parametri a una funzione.
Pubblicato da hronir alle 13:05 0 commenti
Pubblicato da hronir alle 12:45 3 commenti
Allora allora...ho messo insieme le informazioni sulle classi inventandomi un piccolissimo programma, soltanto che ci sono delle cose che non mi sono ancora chiare e così lo posto, chiedendo a Enzo se mi potrebbe correggere i milioni di errori che ho commesso...
Mi vergogno un po' dopo i sofisticati programmi di Eugenio a postare i miei banali dubbi...però siccome vorrei imparare...!!!
Temo di aver fatto confusione coi vettori e le loro dichiarazioni...Aspetto correzioni (e sgridate!)
# include
# include
# include
//Mi scuso in anticipo per gli strafalcioni, il fatto è che vorrei vedere come
//andrebbe fatto
//un programma di questo tipo e non so come fare se non postandolo...
//promettete di non ridere per la mia incapacità!!
class data //domanda1: posso usare dei vettori come componenti della classe?
{
int dd[2];
int mm[2];
int yy[4];
}
data Chegiorno(data oggi) //temo di aver sbagliato qualcosa qui...
{
data domani;
data domani= oggi.dd[]+1; //non so bene come rendere questo, so che è sbagliato..
return domani;
};
int main()
{
data oggi,domani; //istanza della classe data
oggi.dd[]= 05;
oggi.mm[]= 11;
oggi.yy[]= 2006;
domani= Chegiorno(oggi);
std::cout << "la data di oggi è: " << //cosa scrivo qui?? << std::endl;
std::cout << "la data di domani è: " << //e qui??? << std::endl;
return 0;
}
Grazie e buona domenica a tutti!!!Pubblicato da Alioth alle 19:04 3 commenti
Ecco dei brevi promemoria sugli argomenti trattati nell'ultima lezione. A parte gli operatori del C++ new e delete, dovrebbero essere tutti argomenti di non nuovi, ma pensiamo possano risultare comunque di una qualche utilità:
1. Array
2. Puntatori
3. Allocazione dinamica della memoria
4. Algebra dei puntatori
5. Procedure e funzioni
Pubblicato da hronir alle 15:22 6 commenti
Buona sera a tutti. Vorrei proporre qualche idea per qanto riguarda la questione degli estremi del codominio della pdf.
1: Estremo inferiore. Per definizione, una pdf è una funzione da R in R, non negativa e normalizzata (come sottolineava Enzo). Dunque, è necessario che l'estremo inferiore del codominio sia zero: infatti, se l'inf fosse negativo questa sarebbe una contraddizione della non negatività della funzione, e se fosse positivo renderebbe impossibile la convergenza dell'integrale su tutto il dominio (cioè R) a un valore finito. Questo dovrebbe tranquillizzarci..
2: Estremo superiore. Ho provato, seguendo le indicazioni nei link, a scrivere una funzione che calcoli il massimo della pdf. La cosa che ho preparato (qua sotto trovate il codice) si ferma quando trova un massimo relativo, ed è quindi adatta a funzioni con un solo massimo (o che assumano lo stesso valore su ogni max relativo). Ho provato a implementarla nel codice di Pietro, e funziona, nonostante sia un po' rozza e non proprio un capolavoro di eleganza. Spero che i commenti siano sufficienti a renderla comprensibile.
Pubblicato da Eugenio alle 01:38 4 commenti
//L'algoritmo restituisce il primo max relativo che trova calcolandolo con un errore relativo tol, guardando prima a destra dell'intervallo iniziale e poi a sinistra.
#include <iostream>
#include <cmath>
double goldmax(double func(double), double ax, double bx, double cx, double tol);
double expsearch(double func(double), double a, double b, double c, double tol, int k, double a0, double b0);
//Brentmax effettua una prima sezione aurea di [a,c] e passa i tre punti trovati a goldmax (se sono già 'buoni') oppure a expsearch.
//>>------------------------------
double brentmax(double func(double), double a, double c, double tol){
float b=c-((3.0-sqrt(5))/2)*(c-a);
if ((func(a) < func(b) && func(b) < func(c)) || (func(a) > func(b) && func(b) > func(c))){
return expsearch(func, a, b, c, tol, 0, a, b);
}else{
return goldmax(func, a, b, c, tol);
}
}
//>>-------------------------------
//Goldmax applica il metodo della sezione aurea per trovare il massimo a partire da un intervallo a<b<c tale che f(a)>f(b), f(c)>f(b). (questo codice è più o meno tradotto da quello che ho trovato all'indirizzo http://linneus20.ethz.ch:8080/1_5_2.html, da dove ho preso anche l'idea per il metodo esponenziale di brent)
double goldmax(double func(double), double ax, double bx, double cx, double tol){
double C=(3.0-sqrt(5))/2.0;
double R=1-C;
double x0=ax;
double x1;
double x2;
double x3=cx;
if (fabs(cx-bx) > fabs(bx-ax)){
x1=bx;
x2=bx+C*(cx-bx);
}else{
x2=bx;
x1=bx-C*(bx-ax);
}
double f1=func(x1);
double f2=func(x2);
int k=0;
while (fabs(x3-x0) > tol*(fabs(x1)+fabs(x2))){ //sul modo in cui questa condizione tiene d'occhio l'errore relativo ho qualche vaga idea, ma non sono troppo sicuro.. però funziona..
//std::cout << "k=" << k << "|a-b|=" << fabs(x3-x0) <<"<-->";
if (f2 > f1){
x0=x1;
x1=x2;
x2=R*x1+C*x3; // x2=x1+C*(x3-x1)
f1=f2;
f2=func(x2);
}else{
x3=x2;
x2=x1;
x1=R*x2+C*x0; // x1=x2+C*(x0-x2)
f2=f1;
f1=func(x1);
}
++k;
}
double xmax;
if(f1 > f2){
xmax=x1;
}else{
xmax=x2;
}
return xmax;
}
//Expsearch è una funzione ricorsiva. Prepara a goldmax un intervallo adatto, partendo da un intervallo qualunque. Se quello fornito da fuori non va bene, comincia dilatandolo verso destra (metodo della ricerca esponenziale di brent); se dopo 100 passaggi non ha trovato un massimo in questa direzione, torna all'intervallo di partenza e ripete la procedura verso sinistra. Se non trova niente nemmeno qui fornisce 1234567890 come valore 'di errore'. Non sono riuscito a farle dare Inf come output..
double expsearch(double func(double), double a, double b, double c, double tol, int k, double a0, double b0){
if ((func(a) <= func(b) && func(b) <= func(c)) || (func(a) >= func(b) && func(b) >= func(c))){
double R=2/(sqrt(5)-1);
++k;
if(k<100){
//std::cout << "Expsearch (destra): livello " << k << "<-->";
double x=c+R*(c-b);
return expsearch(func, b, c, x, tol, k, a0, b0);
}else if(k==100){
//std::cout << "Expsearch (sinistra, primo): livello " << k << "Valore" << "<-->";
double x=a0-R*(b0-a0);
return expsearch(func, x, a, b, tol, k, a0, b0);
}else if(k<200){
//std::cout << "Expsearch (sinistra): livello " << k << "Valore" << a << "<-->";
double x=a-R*(b-a);
return expsearch(func, x, a, b, tol, k, a0, b0);
}else{
return 1234567890;
}
}
return goldmax(func,a,b,c,tol);
}
Pubblicato da Eugenio alle 01:32 2 commenti
Pubblicato da hronir alle 17:16 0 commenti
nei quaderni c'e' un post a riguardo, a questo link.
Pubblicato da Unknown alle 15:35 0 commenti
Subscribe to labinfoDocet |
Visit this group |