Newsgroup: it.comp.lang.visual-basic
Titolo: Derivate

Salve a tutti.
Qualcuno saprebbe dirmi dove reperire materiale per
fare un programma che calcoli le derivate di una variabile in modo
simbolico?
grazie

Il modo simbolico mi giunge particolarmente strano e segreto....!
Cosa intendi visto che la derivata è una funzione matematica..?
Df=R (dominio nel campo reale, solo se è vera sarà derivabile nel
dominio)
   f'(x)=Lim  (f(x+dt)-f(x))/dt
          dt-->0
Estremizzandola ad un solo campione(dt unitario) ricava la pendenza
della retta passante per le coordinate dei 2 punti.
Se devi ricavare una derivada di una funzione la cosa è diversa ma non
hai spiegato
nulla......
Vedi lo studio di funzioni se vuoi qualcosa di particolare, su qualche
libro di Analisi1 
@Alex

 nulla......
A me sembra chiaro cosa voglia Riccardo: partendo da una funzione f(x)
(esempio f(x)=x^2) vuole sapere come ottenere la sua derivata (nel caso
f'(x)=2x). E' questo che si intende per calcolo simbolico :-)
Purtroppo oltre a questo non saprei rispondere, anch'io consiglio un buon
libro di analisi
Ciao
Starsky

 f'(x)=2x). E' questo che si intende per calcolo simbolico :-)
Era chiaro, ma se si vuole essere pignoli quella è la "funzione 
derivata", non la "derivata" ;-)
Io, tanto tempo fa in una galassia lontana, avevo trovato un componente 
per Delphi con tanto di sorgenti open che faceva proprio questo. 
Immagino si possa trovare qualcosa di analogo in VB.
-- 
news://it-alt.comp.software.openoffice : Il newsgroup dedicato a
OpenOffice.org, la suite open source di applicazioni per ufficio.
Saluti, VITRIOL

Sicuramente hai ragione, ma io non ho mai sentito parlare in Analisi di
calcolo Simbolico in nessuno dei 3 esami...!
Detto ciò poteva essere intuitivo come dici.
Io in ogni caso mi rifarei ad una tabella di Derivate semplici, in
quanto
sviluppare un programma che restituisca lo sviluppo della derivata 1°
lo trovo decisamente complesso...!
In qualsiasi modo se non si appoggia ad un valutatore di espressioni
matematiche il lavoro di Parsing da effettuare per estrapolare
correttamente
le funzioni sarà pesante e molto fallace.
Funzione              Derivata
y = costante         y' = 0
y = x                    y' = 1
y = xn                  y' = n xn-1
y = x                    y' = 1 / 2x
y = senx               y' = cosx
y = cosx               y' = - senx
y = tangx              y' = 1/cos2x    oppure y' = 1 + tang2x
y = cotgx              y' = -1/sen2x
y = ex                  y' = ex
y = ax                  y' = ax log a
y = log x               y' = 1/x
y = loga x             y' = 1 / (xlog a) = (loga e) / x
y = arcsen x         y' = 1 / (1- x2)
y = arccosx          y' = -1 / (1- x2)
y = arctang x        y' = 1 / (1 + x2)
y = arcctgx           y' = - 1 / (1 + x2) 
Saluti
@Alex


se non trovi alternative puoi tentare questa strada:
la derivazione simbolica e' un classico programma che viene naturale 
scritto in LISP o Prolog
per cui se hai accesso a qualche libro sul primo linguaggio lo trovi 
quasi certamente come esempio.
la conversione in VB non e' impossibile e probabilmente la parte piu' 
difficile e' la corretta suddivisione in token della espressione.
dopodicche' si va pesantemente giu' di ricorsione seguendo praticamente 
le regole dell'analisi matematica.

 le funzioni sarà pesante e molto fallace.
Infatti fare da zero un componente che faccia calc simbolico è un lavoro 
bestiale!!
Ma un buon inizio sarebbe parire dal parser matematico di Fabio/Zanna, e 
applicare le regole per il calcolo della funzione derivata.
-- 
Emanuele Torrenti
Registered Linux User #409659
http://torrenti.altervista.org

 le regole dell'analisi matematica.
grazie .

grazie, ma dove trovo il parser matematico di Fabio/Zanna?

 grazie, ma dove trovo il parser matematico di Fabio/Zanna?
Attualmente, devi sperare che legga il thread. Oppure aprine uno dove 
invochi il suo aiuto...


 invochi il suo aiuto...
Eccomi!
Assalito dalla noia mi sono ridotto a leggere anche questo thread :)
Non so se quello che volete fare voi puň essere fatto con il mio parser.
Il mio parser (finito in cantina e non so nemmeno se il codice attuale č 
pienamente funzionante :P) tokenizza sě le espressioni, ma le trasforma in 
notazione RPN (se non sapete cos'č la notazione RPN cercate in Google la 
differenza tra le notazioni Infix e RPN).
Se questo č sufficiente lo potete trovare qui:
http://www.neodatatype.net/Default.aspx?page=directory&root=downloads/&path=_eee
Il primo contiene sia la ver. per VB6 che per .net, il secondo e il terzo 
solo per .net (questi sono piů nuovi ma non garantisco sul "migliori").
Ciao 

Grazie Fabio.
Ma noto che ci sono le DLL.
Io invece intendevo il sorgente completo.
Comunque grazie lo stesso.

 Io invece intendevo il sorgente completo.
E a che ti serve?
Comunque ti do una dritta: ti armi di Reflector e disassembli la versione 
.net
Quello che ti interessa sta in Expression.Parse()
Ma a te serve per .net o per vb6?
Ciao 

 grazie .
Risposta contro-corrente
MA non è più semplice studiarle le derivate invece che farsele fare
dal VB???...
Si va verso l'estate, l'esame di stato è diventato poco più di una
esercitazione....
ma il compito di matematica mette sempre paura eh!
Che poi i quesiti non saranno per forza di cose derivate semplici....un
po di incasinamento ci vuole...altrimenti che prova è??!!

 
attenzione agli integrali che sono molto piu' subdoli :-)

Le equazioni differenziali vorrai dire....!!!
@Alex

 
no, mi riferivo alla determinazione simbolica degli integrali indefiniti 


 differenza tra le notazioni Infix e RPN).
La RPN è probabilmente la piu' grande conquista dell'umanità dopo la 
carta igienica! Secondo la definizione di derivate, il tuo parser si 
applica bene per il calcolo, se è in grado di valutare un'espressione 
del tipo
sin(3.14) = 0.00000000001
sin(3.15) = -0.0001
(Insomma, una qualunque)
A questo punto, si puo' approssimare la derivata in 3.14 come:
dy/dx[3.14] = sin(3.15) - sin(3.14) / (3.15-3.14) = qualcosa
Ricavarla simbolicamente però è ben altra cosa...