Riguardo MatLaB

Programmazione, algoritmica, teoria dell'informazione, ...
Rispondi
Avatar utente
jordan
Messaggi: 3988
Iscritto il: 02 feb 2007, 21:19
Località: Pescara
Contatta:

Riguardo MatLaB

Messaggio da jordan »

Non ho mai avuto un programma che mi aiutasse per risolvere problemi perchè secondo me, in un certo senso, è quasi barare, anche per vedere soltanto se stai andando nella strada giusta.., ma prima o poi tocca a tutti, per un motivo o per l'altro: per un corso che sto seguendo, mi tocca fare qualcosa con MatLab (niente di avanzato, ma non l'avevo mai utilizzato). E' buono anche per problemi di TdN e combinatoria, o esistono programmi migliori? Nel caso, c'è qualche guida apposta? Ho provato a cercare da google, ma non ho trovato niente di focalizzato sull'argomento, oltre una parte mathworks (o qualcosadel genere) che elencava le funzioni piu' utilizzate..
Ho visto che utenti tipo dario2994 utilizzano altro (Mathematica o C++), quale sarebbe l'opzione migliore?
The only goal of science is the honor of the human spirit.
dario2994
Messaggi: 1428
Iscritto il: 10 dic 2008, 21:30

Re: Riguardo MatLaB

Messaggio da dario2994 »

Intanto sì è abbastanza barare, dato che aiuta molto secondo me... Ma mica rovina il risolvere il problema! (spero!)
Ti dico la mia riguardo cosa e come usare il pc per risolvere problemi olimpici. Questo non so quanto e se si applichi anche a problemi veri.
Non so nulla di matlab e di mathematica so poco (nonostante ce l'abbia installato!). So che mathematica è ultrastramega potente... nel senso che ha praticamente qualsiasi funzione che possa venire in mente già implementata (e anche ogni informazione dello scibile umano in database)... e forse per fare cose avanzate torna molto comodo... ma per chi non ha estreme necessità credo basti e avanzi wolfram alpha. In particolare mathematica (non so se anche gli altri) è un vero e proprio linguaggio di programmazione e quindi ci si può fare un po' quello che si vuole.
Secondo me alla fine la cosa migliore resta imparare un linguaggio vero di programmazione e usare quello... sconsiglio il c++ per fare cose di matematica (anche se lo uso) perchè è eccessivamente rigido e poco propenso ai grandi numeri (difetti ripagati però dalla velocità). Piuttosto ti suggerisco se hai voglia di provare a usare un pc per fare mate di imparare il python... intanto perchè ha oggettivamente una sintassi amabile e poi perchè è perfetto per i problemi olimpici. In effetti credo sia anche lo standard per l'approccio informatico alla matematica ma di questo non sono sicuro.
Detto questo carta e penna vincono sempre.
...tristezza ed ottimismo... ed ironia...
Io ti racconto lo squallore di una vita vissuta a ore di gente che non sa più far l'amore...
"Allora impara a fare meno il ruffiano. Io non lo faccio mai e guarda come sono ganzo" Tibor Gallai
Avatar utente
jordan
Messaggi: 3988
Iscritto il: 02 feb 2007, 21:19
Località: Pescara
Contatta:

Re: Riguardo MatLaB

Messaggio da jordan »

dario2994 ha scritto:Detto questo carta e penna vincono sempre.
Sono d'accordo, ma qualche aiutino torna comodo, ogni tanto.. Ti ringrazio per il messaggio, vedro' quindi di informarmi un altro po' su MatLab, e, nel caso, passo a Phyton :)
The only goal of science is the honor of the human spirit.
amatrix92
Messaggi: 818
Iscritto il: 21 nov 2008, 17:19
Località: Firenze

Re: Riguardo MatLaB

Messaggio da amatrix92 »

Io di linguaggi di programmazione conosco C e MatLab (oltre il livello "calcolatrice" è praticamente un linguaggio di programmazione).
Senti la cosa più figa di MatLab è che non smette mai di stupirti... fa davvero un sacco di cose e ha un sacco di funzioni particolari, però, per natura sfoggia tutta la sua potenza quando si parla di matrici, e quindi sistemi lineari, problemi di interpolazione per restare alla base... passando per approssimazione di equazioni differenziali e arrivando non so dove. A differenza di Wolfram, non è un programma simbolico ma esclusivamente numerico,( quindi, ad esempio se non gli dici chi è x, non sa dirti che x+x=2x , questo sempre per quanto lo conosco io).
Per quanto riguarda i problemi di Tdn, ti posso dire che mi son trovato molto meglio con il C che con MatLab: se non altro per il fatto che tieni numeri mooolto più grandi. MatLab riserva 53 cifre di mantissa e 11 di caratteristica (per l'esponente) che, considerato il fatto che si ragiona in base 2, vuol dire al massimo numeri dell'ordine 10^32.
In C ricordo che con particolari strutture ( long long qualcosa e forse prima anche altro) mi teneva numeri con migliaia e migliaia di cifre (se ne hai bisogno vado a ricercare quei vecchi file per darti info più precise)!!


A cosa ti serve, se si può sapere, nello specifico?
Le parole non colgono il significato segreto, tutto appare un po' diverso quando lo si esprime, un po' falsato, un po' sciocco, sì, e anche questo è bene e mi piace moltissimo, anche con questo sono perfettamente d'accordo, che ciò che è tesoro e saggezza d'un uomo suoni sempre un po' sciocco alle orecchie degli altri.
dario2994
Messaggi: 1428
Iscritto il: 10 dic 2008, 21:30

Re: Riguardo MatLaB

Messaggio da dario2994 »

amatrix92 ha scritto: In C ricordo che con particolari strutture ( long long qualcosa e forse prima anche altro) mi teneva numeri con migliaia e migliaia di cifre (se ne hai bisogno vado a ricercare quei vecchi file per darti info più precise)!!
Il C come tipo standard non va oltre l'unsigned long long che resta comunque nei 64bit canonici (al massimo uscendo dallo standard ci sta __uint128_t che arriva a 128 bit... ma insomma siamo ben lontani dalle migliaia di cifre!). Forse ti riferisci a librerie non standard (ma che sono talmente necessarie e la cui mancanza è una tale pecca che sarebbe meglio standardizzarle) che tengono i bigint...
...tristezza ed ottimismo... ed ironia...
Io ti racconto lo squallore di una vita vissuta a ore di gente che non sa più far l'amore...
"Allora impara a fare meno il ruffiano. Io non lo faccio mai e guarda come sono ganzo" Tibor Gallai
amatrix92
Messaggi: 818
Iscritto il: 21 nov 2008, 17:19
Località: Firenze

Re: Riguardo MatLaB

Messaggio da amatrix92 »

Epic fail, hai ragione. Sono andato a vedere il file in questione e... no, non va oltre i 64 /128 bit e per giunta avevo anche sbagliato a scrivere il codice. Bhe allora
1) Sono d'accordo con te sull'esigenza di facilitare l'utilizzo dei bigint
2) C perde quel vantaggio che credevo avesse su MatLab...
Le parole non colgono il significato segreto, tutto appare un po' diverso quando lo si esprime, un po' falsato, un po' sciocco, sì, e anche questo è bene e mi piace moltissimo, anche con questo sono perfettamente d'accordo, che ciò che è tesoro e saggezza d'un uomo suoni sempre un po' sciocco alle orecchie degli altri.
Avatar utente
jordan
Messaggi: 3988
Iscritto il: 02 feb 2007, 21:19
Località: Pescara
Contatta:

Re: Riguardo MatLaB

Messaggio da jordan »

amatrix92 ha scritto:A cosa ti serve, se si può sapere, nello specifico?
Per non perdere tempo cercando di risolvere un problema che in verità trova controesempi per numeri molto grandi .. non conosco gli ordini di grandezza di questi programmi, ma anche $10^{32}$ mi sembra ragionevole :O
The only goal of science is the honor of the human spirit.
fph
Site Admin
Messaggi: 3956
Iscritto il: 01 gen 1970, 01:00
Località: in giro
Contatta:

Re: Riguardo MatLaB

Messaggio da fph »

Da utente Matlab, ti consiglio Python o Mathematica. :D

Matlab va bene per fare conti con matrici contenenti numeri in virgola mobile, scopo per cui è nato; i suoi difetti più grandi sono:
1- la parte di calcolo simbolico, come già citato, è abbastanza carente. Inclusi i BigInt.
2- appena si cerca di fare qualcosa di un po' più complesso, ci si scontra con molte sue limitazioni; come linguaggio è poco "elegante" e diventa complicato fare OOP per esempio, o interfacciarsi con librerie esterne.
3- è davvero complicato guadagnare prestazioni "a livello del codice macchina" quando serve. Può essere completamente impossibile, o può richiedere di dover rifattorizzare il codice fino a renderlo illeggibile.
4- costa un'atrocità (a meno che uno non scelga la soluzione pirate bay, ma non sarò io a dirvi di violare la legge).

Partendo da zero, ti consiglio invece (come hanno già fatto gli altri):
* per teoria dei numeri e combinatoria, o in generale conti con gli interi, python, o meglio, tutto il pacchetto Sage (http://www.sagemath.org/). Ha una marea di algoritmi pre-esistenti implementati, è ragionevolmente facile e piacevole da imparare ed usare, è open source, si interfaccia facilmente con librerie esterne, non ti servirà solo per la matematica, si riesce con un po' di fatica a rendere ragionevolmente veloce (quando serve) utilizzando "estensioni" come cython o pypy.
* per calcoli simbolici, Mathematica. Anche lui ha una curva di apprendimento abbasanza ripida, ma non c'è davvero niente di paragonabile.

Personalmente sto aspettando che al Mit finiscano di sviluppare Julia, che dovrebbe essere un "Matlab done right" da molti punti di vista.
--federico
[tex]\frac1{\sqrt2}\bigl(\left|\text{loves me}\right\rangle+\left|\text{loves me not}\right\rangle\bigr)[/tex]
Avatar utente
jordan
Messaggi: 3988
Iscritto il: 02 feb 2007, 21:19
Località: Pescara
Contatta:

Re: Riguardo MatLaB

Messaggio da jordan »

fph ha scritto:Da utente Matlab, ti consiglio Python o Mathematica. :D
Wow, e non ci provo nemmeno allora :) Per la licenza era anche apposto, la paga l'università.. Grazie Federico!
The only goal of science is the honor of the human spirit.
ndp15
Messaggi: 598
Iscritto il: 18 gen 2007, 19:01

Re: Riguardo MatLaB

Messaggio da ndp15 »

jordan ha scritto:
fph ha scritto:Da utente Matlab, ti consiglio Python o Mathematica. :D
Wow, e non ci provo nemmeno allora :) Per la licenza era anche apposto, la paga l'università.. Grazie Federico!
Un unico appunto per chi leggesse in futuro: se foste interessati a Matlab ma siete fermati dal costo del programma usate Octave che è molto molto simile e open source. C'è anche la versione per tablet/smartphone Android.
Rispondi