strano errore octave

Se avete problemi con l'installazione e la configurazione di Slackware postate qui. Non usate questo forum per argomenti generali... per quelli usate Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
pulmro
Linux 0.x
Linux 0.x
Messaggi: 13
Iscritto il: lun 24 set 2007, 21:30
Slackware: current
Kernel: 2.6.33
Desktop: KDE4

strano errore octave

Messaggio da pulmro »

Sono incappato recentemente in questo strano comportamento di octave. Ho installato i pacchetti per slackware 12 disponibili su linuxpackages.net e ho eseguito octave e fatto due conti. I seguenti: ho scritto una matrice 2x2 contenente numeri e radici quadrate, ne ho calcolato l'inversa con il comando inv e ho eseguito il prodotto tra la matrice e la sua inversa, sorprendentemente octave non restitusce l'identità ma una matrice abbastanza diversa. Cosa assurda. Ho pensato a dei pacchetti con qualche difetto e mi sono compilato octave (un po' noioso sul mio pentium2), ma il problema rimane. Se eseguo la stessa versione di octave su windows funziona correttamente. Ho provato sia la 2.9.12 sia la 2.9.13. Qui di seguito un output di esempio :

Codice: Seleziona tutto

GNU Octave, version 2.9.13
Copyright (C) 2007 John W. Eaton and others.
This is free software; see the source code for copying conditions.
There is ABSOLUTELY NO WARRANTY; not even for MERCHANTIBILITY or
FITNESS FOR A PARTICULAR PURPOSE.  For details, type `warranty'.

Octave was configured for "i686-pc-linux-gnu".

Additional information about Octave is available at http://www.octave.org.

Please contribute if you find this software useful.
For more information, visit http://www.octave.org/help-wanted.html

Report bugs to <bug@octave.org> (but first, please read
http://www.octave.org/bugs.html to learn how to write a helpful report).

For information about changes from previous versions, type `news'.

octave:1> A=[1/sqrt(2),-1/sqrt(2);1/sqrt(2),1/sqrt(2)]
A =

   0.70711  -0.70711
   0.70711   0.70711

octave:2> inv(A)
ans =

   0.70711   0.70711
  -0.70711   0.70711

octave:3> inv(A)*A
ans =

   1.0000e+00  -1.0137e-17
  -1.0137e-17   1.0000e+00

octave:4>

enzo
Linux 0.x
Linux 0.x
Messaggi: 51
Iscritto il: mar 22 mar 2005, 0:00
Località: Reggio Calabria

Messaggio da enzo »

Ciao!
Non credo si tratti di un errore, piuttosto di impostazioni differenti riguardo arrotondamenti e/o gestione degli interi del CAS (Computer Algebra System).
Personalmente ho "combattuto" un pò sia con Octave che altri CAS di cui non ricordo il nome e, dopo mille prove, sono arrivato alla conclusione che la soluzione migliore e, tutto sommato, + economica, fosse quella di acquistare una BUONA calcolatrice, ovvero, senza volere fare pubblicità (e senza volere scatenare una flame war con gli utilizzatori delle Texas Instruments) una Hewlett Packard, da adoperare in modalità RPN!
Se acquisti su Ebay dagli US il modello HP48GII te la cavi con poco (sugli 80 euro rispetto al prezzo italiano di 140+iva).
Altrimenti il massimo (per l'HP) è il modello HP50G.
Scusa se sono andato leggermente O.T.
In bocca al lupo x eventuali esami!

Avatar utente
absinthe
Iper Master
Iper Master
Messaggi: 2354
Iscritto il: dom 15 mag 2005, 0:00
Nome Cognome: Matteo Nunziati
Slackware: 12.1 - defunct
Kernel: 2.6.32-5-amd64
Desktop: gnome
Distribuzione: debian squeeze
Località: Prato
Contatta:

Messaggio da absinthe »

beh.. quella veramente è l'identità! fuori diagonale hai praticamente zero!

M

Avatar utente
mimmoforlug
Packager
Packager
Messaggi: 143
Iscritto il: lun 4 dic 2006, 13:09
Nome Cognome: Domenico Suppa
Slackware: 13.37
Kernel: 3.2.11
Desktop: fluxbox
Località: Caserta
Contatta:

Messaggio da mimmoforlug »

Ho compilato octave ed inv(A) si blocca, mentre:

Codice: Seleziona tutto

octave:1> A=[1/sqrt(2),-1/sqrt(2);1/sqrt(2),1/sqrt(2)]
A =

   0.70711  -0.70711
   0.70711   0.70711

octave:2> inv(A)

octave:2> A
A =

   0.70711  -0.70711
   0.70711   0.70711

octave:3> A^-1
ans =

   0.70711   0.70711
  -0.70711   0.70711

octave:4> A^-1 * A
ans =

    1.0000e+00   -1.0137e-17
   -1.0137e-17    1.0000e+00
il blocco della funzione inv() mi era già capitato tempo addietro con una installazione da pacchetti tgz e altre versioni del sistema operativo. Da cosa potrà di pendere? Tutto il resto, per quanto ho potuto sperimentare, funziona.

Avatar utente
mimmoforlug
Packager
Packager
Messaggi: 143
Iscritto il: lun 4 dic 2006, 13:09
Nome Cognome: Domenico Suppa
Slackware: 13.37
Kernel: 3.2.11
Desktop: fluxbox
Località: Caserta
Contatta:

Messaggio da mimmoforlug »

messaggio duplicato, si può cancellare!

Avatar utente
pulmro
Linux 0.x
Linux 0.x
Messaggi: 13
Iscritto il: lun 24 set 2007, 21:30
Slackware: current
Kernel: 2.6.33
Desktop: KDE4

Messaggio da pulmro »

Non sono convinto, ammetto che quella matrice assomigli all'identità, ma anche se i termini extra-diagonali sono molto molto piccoli, non sono zero. E comunque non mi spiego il fatto che provando su una ubuntu di scorta octave fa il suo conticino per bene, in più in entrambi i casi ho usato format short come formato di visualizzazione.
L'output di octave su ubuntu,

Codice: Seleziona tutto

GNU Octave, version 2.9.9 (i486-pc-linux-gnu).
Copyright (C) 2006 John W. Eaton.
This is free software; see the source code for copying conditions.
There is ABSOLUTELY NO WARRANTY; not even for MERCHANTIBILITY or
FITNESS FOR A PARTICULAR PURPOSE.  For details, type `warranty'.

Additional information about Octave is available at http://www.octave.org.

Please contribute if you find this software useful.
For more information, visit http://www.octave.org/help-wanted.html

Report bugs to <bug@octave.org> (but first, please read
http://www.octave.org/bugs.html to learn how to write a helpful report).

octave2.9:1> A=[1/sqrt(2),-1/sqrt(2);1/sqrt(2),1/sqrt(2)]
A =

   0.70711  -0.70711
   0.70711   0.70711

octave2.9:2> A*inv(A)
ans =

   1   0
   0   1

octave2.9:3> 

Avatar utente
absinthe
Iper Master
Iper Master
Messaggi: 2354
Iscritto il: dom 15 mag 2005, 0:00
Nome Cognome: Matteo Nunziati
Slackware: 12.1 - defunct
Kernel: 2.6.32-5-amd64
Desktop: gnome
Distribuzione: debian squeeze
Località: Prato
Contatta:

Messaggio da absinthe »

da una parte usi la scrittura semplice, dall'altra chiedi la scrittura in potenze del 10 (1 contro 1e+0) il calcolo è lo stesso identico, solo che la slack è configurata per un output a più cifre significative!
se sei curioso di vedere dei veri errori di apporssimazione prova le inverse delle funzioni trigonometriche ;)

M

Avatar utente
pulmro
Linux 0.x
Linux 0.x
Messaggi: 13
Iscritto il: lun 24 set 2007, 21:30
Slackware: current
Kernel: 2.6.33
Desktop: KDE4

Messaggio da pulmro »

Se dunque fossi ossessionato dall'idea di ottenere lo stesso output anche su slackware?

Avatar utente
absinthe
Iper Master
Iper Master
Messaggi: 2354
Iscritto il: dom 15 mag 2005, 0:00
Nome Cognome: Matteo Nunziati
Slackware: 12.1 - defunct
Kernel: 2.6.32-5-amd64
Desktop: gnome
Distribuzione: debian squeeze
Località: Prato
Contatta:

Messaggio da absinthe »

http://www.gnu.org/software/octave/doc/ ... nal-Output

usa la funzione format! la puoi inserire anche in un file di startup così da far configurare automaticamente il formato a octave!

IMHO quello di default (della slack) è il migliore!

M

Avatar utente
pulmro
Linux 0.x
Linux 0.x
Messaggi: 13
Iscritto il: lun 24 set 2007, 21:30
Slackware: current
Kernel: 2.6.33
Desktop: KDE4

Messaggio da pulmro »

Non vorrei sembrare insistente e eccessivamente pignolo, cerco solo di capire. Va bene i diversi formati di visualizzazione, ma come mai lo stesso octave, nello stesso formato di visualizzazione (ad esempio format short) su due distribuzioni diverse produce due output diversi?
grazie della pazienza

Avatar utente
absinthe
Iper Master
Iper Master
Messaggi: 2354
Iscritto il: dom 15 mag 2005, 0:00
Nome Cognome: Matteo Nunziati
Slackware: 12.1 - defunct
Kernel: 2.6.32-5-amd64
Desktop: gnome
Distribuzione: debian squeeze
Località: Prato
Contatta:

Messaggio da absinthe »

no non è lo stesso formato: uno è semplicemente 'short' (ubuntu), l'altro è 'short e' (slack).

se non cambia niente usando i due diversi formati, mi viene da pensare che abbiano messo mano al codice... ma sarebbe poco sensato!

M

Avatar utente
phobos3576
Staff
Staff
Messaggi: 2980
Iscritto il: dom 17 apr 2005, 0:00
Slackware: 13.1
Kernel: 2.6.37-smp
Desktop: KDE 4.5.3

Messaggio da phobos3576 »

pulmro ha scritto:Non vorrei sembrare insistente e eccessivamente pignolo, cerco solo di capire. Va bene i diversi formati di visualizzazione, ma come mai lo stesso octave, nello stesso formato di visualizzazione (ad esempio format short) su due distribuzioni diverse produce due output diversi?
grazie della pazienza
Anche la calcolatrice KCalc si comporta in modo differente a seconda che sia stata compilata con supporto long double o meno.

Il fatto che Octave fornisca, ad esempio, sin(3.14 / 2) = 1 significa che sta usando una precisione schifosa in virgola mobile; non so se per Octave ci siano delle opzioni che permettono di modificare la precisione senza la necessità di ricompilare.

Avatar utente
absinthe
Iper Master
Iper Master
Messaggi: 2354
Iscritto il: dom 15 mag 2005, 0:00
Nome Cognome: Matteo Nunziati
Slackware: 12.1 - defunct
Kernel: 2.6.32-5-amd64
Desktop: gnome
Distribuzione: debian squeeze
Località: Prato
Contatta:

Messaggio da absinthe »

ocatve, come matlab, lavora con foramti double, è il propt che campia, e le impostazioni possono essere modificate tramite il comando format

M

Rispondi