Newsgroup: it.comp.lang.c++
Titolo: plot di funzioni matematiche e calcolo esatto di determinanti di matrici

Qualcuno sa qual è il modo migliore per tracciare il grafico di una funzione
di una sola variabile composta da più funzioni elementari del tipo x^2,
sinx, cosx, tg, logx, ecc.
es. y=x^3-2sin(x)+log(3x)-2tg(x)
Infatti la funzione y andrà disegnata per punto valutando valore per valore
quanto vale, e se ci sono dei valori per cui la y non è definita o va
all'infinito? Come faccio a prevederlo...?
Insomma come diavolo fanno i programmi professionali a tracciare il grafico
di qualunque funzione senza che vi siano problemi?
Inoltre come si fa a calcolare il determinante di una matrice senza che il
risultato finale sia un risultato approssimato: infatti a causa delle
aprossimazioni introdotte dal calcolo computazionale (rappresentazione dei
numeri reali in
virgola mobile al computer) un certo determinante invece di venire uguale a
0, viene un numero con la virgola molto prossimo allo 0 che comuque è
diverso da zero!
come faccio allora a verificare se effettivamente il determinate era uguale
a zero oppure se è diverso da 0? Nel calcolo manuale (quello che si fa con
carta e penna) invece è immediato riconoscere se una certa matrice ha
determinante diverso da 0 testando la lineare indipendenza delle sue
colonne... mentre nel calcolo al computer se si calcola il determinante o se
si testa la lineare indipendenza con un certo procedimento di calcolo, si
ottiene un risultato approssimanto che quindi può addirittura portare ad una
conclusione sbagliata sulla lineare dipendenza o indipendenza delle colonne
della matrice (un determinante prossimo allo zero è comunque un determinante
diverso da zero che quindi porta come conclusione che la matrice è formata
da colonne o righe fra loro indipendenti....)
Grazie.

sinx, cosx, tg, logx, ecc.
Sei OT su tutti i NG in cui hai crosspostato (it.comp.lang.c++,
it.comp.lang.visual-basic, it.comp.programmare.win32).
Riprova e sarai più fortunato...
Luc.

 Riprova e sarai piů fortunato...
E' il terrore da esame o maturita' .... ;-)
	maxx

da colonne o righe fra loro indipendenti....)
Qui sbagli approccio: numericamente (cioe` al di fuori del calcolo
simbolico), non puoi *assolutamente* usare il determinante per
valutare la singolarita` di una matrice. Come hai intuito, basterebbe
una troncatura per rendere non-singolare una matrice singolare; quel
che e` peggio, una matrice puo` essere del tutto non-singolare pur
avendo determinante piccolissimo: prova a calcolare 
 det( 0.1 * eye(20) )    [1]!
Per queste cose, ti serve la svd (Singular Value Decomposition). Con
un po' di pazienza, puoi trovare in rete sia la teoria che gli
algoritmi, ma ti avverto che non sono cose che si imparano in venti
minuti...
[1] nota: eye(n) e` la matrice identita` n per n. Per i pigri: quel
determinante vale 10^(-20)...
-- 
Ciao, Marvin

 di qualunque funzione senza che vi siano problemi?
intercettano gli errori e usano una procedura simile a quella che si segue
concettualmente con l'operazione di passaggio al limite, se un valore tra
quelli campione dà problemi, ad esempio di divisione per zero, si prendono
dei valori vicini ma sufficentemente lontani da evitare gli overflow.
poi programmi quali il mathematica, probabilmente si avvalgono di algoritmi
più complessi
che "riconoscono" a priori le funzioni elementari e di conseguenza, i loro
punti notevoli, riuscendo quindi a determinare con un procedimento a
"nidificazione inversa" i punti critici della funzione composta.
si possono applicare poi algoritmi di sviluppo in serie, e se hai funzioni
integrali si fà tutto più complicato...
un piccolo esempio: se hai log(sen(x)) il programma sà che la funzione
log(y) ha delle singolarità per ogni y=0 allora individuerà tutti i punti
tali che sen(x)=0, cioè i punti k*PI con k in Z
auguri!


io posso dirti soltanto questo:
secondo me i vari programmi che tracciano le funzioni (quelli semplici tipo
Derive o una
calcolatrice) "calcolano" i valori di volta in volta a seconda del
dominio/codominio visualizzato della funzione.
Quindi sta a te zoomare sul grafico oppure allontanarti e loro ti
restituiscono un grafico piu "fine".
secondo me, cmq, non ha molto senso se non per imparare qualcosa di nuovo.
sarebbe semmai più utile, data una funzione, calcolare massimi e minimi,
singolarità, dominio, limiti ecc ecc che non tracciare il grafico.
Inoltre pensa sta cosa: se una funzione, dal grafico, "sembra" andare
all'infinito, magari ci va davvero ma nessuno ti dice che per y=1.345.456
non possa avere un minimo locale!