|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jan 2000
Città: Prov. di VE
Messaggi: 2712
|
Qcno conosce MATLAB?
Chi ha voglia/tempo di aiutare un povero studente di informatica che deve fare l'esame di calcolo numerico ma il prof nn ha tempo di spiegare matlab??
![]() ![]() Se ho risposte affermative ( ![]() ![]() ![]() |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
|
![]() |
![]() |
![]() |
#3 | |
Junior Member
Iscritto dal: Aug 2003
Città: Como
Messaggi: 19
|
Re: Qcno conosce MATLAB?
Quote:
![]() |
|
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Oct 2003
Città: <049/>
Messaggi: 125
|
scusa ... ma dove studi informatica ????? Venezia ???? Padova ???
__________________
![]() |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Jan 2000
Città: Prov. di VE
Messaggi: 2712
|
C'è l'esercitatore ma lui "confida nel fatto che siamo informatici e nn abbiam difficoltà ad imparare un nuovo linguaggio
![]() Cmq, chi ha idea di come risolvere sta roba? Quote:
lasciam perdere il 2500 di dimensione che ci mette na cifra anche col mio xp1800, tanto mi basta sapere come si implementa la cosa. Ho fatto così, ma nn sono sicuro che sia giusto: Codice:
max_n = 2500; A = rand(max_n,max_n); B = rand(max_n,max_n); % per colonne C=zeros(max_n,max_n); tic for i=1:max_n for j=1:max_n for k=1:max_n C(i,j)=C(i,j)+A(i,k)*B(k,j); end end end tempo1 = toc % per righe C=zeros(max_n,max_n); tic for i=1:max_n for j=1:max_n for k=1:max_n C(i,j)=C(i,j)+A(j,k)*B(k,i); end end end tempo2 = toc |
|
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: May 2003
Città: Torino
Messaggi: 63
|
Ahhhhhhh, anch'io ho l'esame di calcolo numerico (lunedì) e domani l'esonero! come ti capisco!!!
Ecco il sito del corso che frequento, c'è un manuale in pdf e qualche esercitazione: http://calvino.polito.it/~scuderi/INF03.html Ho una domanda: cosa intendi precisamente per "prodotto per componenti".Centra qualcosa il prodotto puntuale (quello fatto tra elementi con le stesse 'coordinate')?
__________________
AMD K6 450 MHz, Epox MVP3G2 FSB 100 MHz, 320 MB RAM, HDD IBM 7200 60 GB, VooDoo III (è vecchia ma per diablo II va ancora bene ![]() |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Jan 2000
Città: Prov. di VE
Messaggi: 2712
|
ecco...... me lo domando anche io... il prof ha scritto così.... "per componenti". (cmq credo sia quello)
|
![]() |
![]() |
![]() |
#8 |
Member
Iscritto dal: May 2003
Città: Torino
Messaggi: 63
|
Mi sembra che tu abbia implementato il prodotto normale tra matrici. Io farei qualcosa del genere:
% per righe C=zeros(max_n - 1,max_n); tic for i=1 : max_n - 1 for j=1:max_n C(i, j) = A(i, j) * B(i, j); end end In più aggiungi tic e toc come hai fatto tu, io non mi sono dilungato. Conta che questo codice l'ho scrito in due minuti senza testarlo, quidni prob non funge. Domani (dopo l'esonero) lo provo e ti faccio sapere.
__________________
AMD K6 450 MHz, Epox MVP3G2 FSB 100 MHz, 320 MB RAM, HDD IBM 7200 60 GB, VooDoo III (è vecchia ma per diablo II va ancora bene ![]() |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Jan 2000
Città: Prov. di VE
Messaggi: 2712
|
in effetti è vero...... è il prodotto normale.... mo guarderò....
![]() |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: May 2002
Città: udine
Messaggi: 546
|
A parte il fatto che, secondo me, il tuo prof. non ha le idee molto chiare sui prodotti matriciali... io risolverei così:
clear clc n_max=3; A=rand(n_max,n_max); B=rand(n_max,n_max); tic for i=1: (n_max-1), A( :,i ).*B( :,i ); % per colonne end tempo1=toc for i=1: (n_max-1), A( i,: ).*B( 1,: ); % per righe end tempo2=toc ciao ![]() Ultima modifica di cipi : 04-11-2003 alle 18:20. |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Jan 2000
Città: Prov. di VE
Messaggi: 2712
|
Sinceramente credo che il programma nn fosse per niente riguardo alle matrici, ma solo moltiplicazione "numero per numero" solo che nn è chiaro.......
![]() |
![]() |
![]() |
![]() |
#12 |
Member
Iscritto dal: May 2003
Città: Torino
Messaggi: 63
|
Non basterebbe semplicimente fare così?:
n_max=3; A=rand(n_max,n_max); B=rand(n_max,n_max); tic A( :, 1 : n_max-1 ).*B( :, 1 : n_max-1); % per colonne tempo1=toc A(1 : n_max-1, ![]() tempo2=toc
__________________
AMD K6 450 MHz, Epox MVP3G2 FSB 100 MHz, 320 MB RAM, HDD IBM 7200 60 GB, VooDoo III (è vecchia ma per diablo II va ancora bene ![]() |
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Jan 2000
Città: Prov. di VE
Messaggi: 2712
|
(1 : n_max-1,: )
![]() Cmq, bene o male quell'esercizio è stato risolto, adesso ce ne sono altri, assolutamente improponibili ![]() |
![]() |
![]() |
![]() |
#14 | |
Senior Member
Iscritto dal: May 2002
Città: udine
Messaggi: 546
|
Quote:
cmq puoi ridurlo a: n_max=3; A=rand(n_max); % crea gia' matrici quadrate... B=rand(n_max); tic A( :, 1 : n_max-1 ) .* B( :, 1 : n_max-1); % per colonne tempo1=toc A(1 : n_max-1, : ) .* B(1 : n_max-1, : ); % per righe tempo2=toc .... ma è meno leggibile per un principiante! |
|
![]() |
![]() |
![]() |
#15 | ||
Senior Member
Iscritto dal: Oct 2002
Messaggi: 487
|
Quote:
Solitamente per i calcoli sulle matrici, matlab fornisce soluzioni che non utilizzano cicli for (dipende dai casi, cmq). Quote:
![]() Aloha!
__________________
AcM Racing :: Nulla è impossibile per chi non deve farlo |
||
![]() |
![]() |
![]() |
#16 | |
Senior Member
Iscritto dal: May 2002
Città: udine
Messaggi: 546
|
Quote:
Esatto bsummer, fai conto che un o script di un algoritmo lanciato con matlab con un sacco di for su matrici ci stava circa 40 minuti a dare un risultato... Fatto in C lo stesso algoritmo.... 30 secondi ![]() ![]() ![]() ![]() ![]() ![]() quindi... okkio alle lungaggini Uzi[WNCT] ![]() |
|
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Jan 2000
Città: Prov. di VE
Messaggi: 2712
|
Ragazzi...... ve la siete cercata
![]() ![]() ![]() Cmq, nn posso postarvi solo il test dell'esercizio altrimenti nn capireste nulla, quindi vi devo dare una intera pagina! ![]() Per quanto riguarda il for, dopo sistemo il mio programma e metto come avete fatto voi, che mi pare moooooooolto + "profeeeescional" ![]() ![]() La pagina? Eccola qua!!! http://www.math.unipd.it/~marcuzzi/D...rmatica_3.html Alla fine in basso c'è il testo dell' esercizio ![]() |
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Jan 2000
Città: Prov. di VE
Messaggi: 2712
|
Ritorno a scocciarvi col Matlab
![]() Come posso plottare in 3D una matrice del genere? Codice:
risultato = 0.3333 0.0005 0.0001 0.0000 0.3333 0.0033 0.0008 0.0003 0.3333 0.0092 0.0023 0.0009 0.3333 0.0173 0.0046 0.0019 0.3333 0.0267 0.0075 0.0032 0.3333 0.0365 0.0108 0.0047 0.3333 0.0463 0.0143 0.0064 0.3333 0.0558 0.0178 0.0082 0.3333 0.0651 0.0214 0.0100 0.3333 0.0741 0.0250 0.0118 - in X ci fossero valori 1:10 (cioè gli indici delle righe) - in Y ci fossero valori 1:4 (cioè gli indici delle colonne) - in Z ci fossero i valori che si vedono ![]() C'è da usare plot3? Mesh? ![]() |
![]() |
![]() |
![]() |
#19 |
Senior Member
Iscritto dal: Jan 2000
Città: Prov. di VE
Messaggi: 2712
|
UP!
![]() |
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Jan 2000
Città: Prov. di VE
Messaggi: 2712
|
Lasciate pure perdere le altre domande, che più o meno ho sistemato.
Ore però ne ho una "semplice" ![]() Se io ho una funzione 3D "complicata", come faccio ad avere le coordinate di un punto Z, conoscendo X e Y?? ![]() |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:17.