Newsgroup: it.comp.lang.visual-basic
Titolo: [OT] forse per Zanna, o per chi sa la risposta

Scusa se ti disturbo ancora.
Il tuo math parser ricava le formule inverse considerandole come variabili,
oppure sostituisce i dati che gli dai nell'espressione, e poi man mano
calcola tutto?
CIao!

 wrote in message
news:8852c.3409

Scusa? :)
Il mio valutatore funziona in due step:
1 - Parser.Parse(string) (usato internamente) esegue un parsing
dell'espressione e la converte dalla notazione infix a quella postfix (a
proposito, nessuno sa come passare alla notazione "dotted", cioè quella tipo
oggetto.metodo(parametro) anzichè metodo(oggetto, parametro)?)
Questo significa che le costanti sono immediatamente sostituite con i loro
valori, i tokens di tipo variabile vengono riconosciuti dal fatto che il
token non è stato riconosciuto come
- funzione predefinita
- funzione custom in Expression.Scope.Functions
- costante predefinita (pi greco, e di nepero)
- costante custom in Expression.Scope.Constants
2 - Expression.Eval(TTokens[]) (usato internamente) sostituisce i tokens di
tipo variabile con i valori corrispondenti presenti in
Expression.Scope.Variables.
Subito dopo passa alla valutazione dei vari token.
Se Expression.Scope.Variables non contiene la variabile presente
nell'espressione viene generato un errore.
Prima o poi riuscirò anche completare il progetto del valutatore  :) (sto
scrivendo anche una classe per la compilazione in IL)
Ciao
--
Math Parser : 
http://www.neodatatype.net
Sito Comune : 
http://www.it-lang-vb.net


Ahia...temevo. Invece ho bisogno di poter lavorare con le variabili, in
quanto probabilmente non avrò tutti i valori necessari. Ex:  arcsin( sin(
b ) ) = b
il tuo parser prima calcola (credo) sin(b) e poi arcsin(b). Io dovrei essere
in grado di eliminare arcsin e sin senza calcolarli, riconoscendo
direttamente che è un operazione inutile. Non credo siano molti i casi in
cui tale complessità mi torni utile. Comunque per adesso mi metto l'anima in
pace e vado avanti con le quattro operazioni più gli esponenti.
Il lavoro che fa il tuo parser io lo salto direttamente e lo faccio fare a
vb una volta che ho ottenuto un'equazione con il numero giusto di incognite.
Grazie comunque e ciao!

 Grazie comunque e ciao!



Io preparo solo l'equazione da utilizzare (ricavandola da altre). Il calcolo
vero e proprio lo fa la funzione che mi aveva indicato esteban oppure
execline.
Ciao!

 execline.
Continuo a non capire cosa ti serva realmente :)
Ciao


se io avessi un'equazione del tipo a=b+c e l'unica incognita fosse a (b e c
li fornisce l'utente) sostituisco il valore b dell'utente in "b" della mia
equazione, sostituisco il valore di c con "c" e poi o faccio execline
passandogli tutta l'equazione "a=b+c", oppure uso ScripControl, e gli passo
solo "b+c". Oppure utilizzo il tuo math parser.
Ma se io non ho tutti e due i valori di b e c(immagina che ho solo c) devo
fare un sistema.
Probabilmente avrò due equazione (perché se no nisba, dato che le incognite
sono due):
a=b+c
b=a/c
da cui per sostituzione:
a=b+c
b=(b+c)/c
dall'ultima equazione, visto che ha una sola incognita, me la posso ricavare
e calcolare:
a=b+c
b=1/(1-1/c)
nella seconda equazione metto il valore di c al posto di c e la dò in pasto
a qualche math parser
adesso conosco b e c e posso ricavarmi anche a.
Il mio problema è ricavare la formula b=1/(1-1/c) non di calcolarla, perché
lo farei fare a vb.
Spero di aver fatto un discorso sensato.
E lo so che avevo detto che non facevo più post lunghi!!! colpa di Zanna ;-)
Ciao!

 Ciao
-- 
Il Wodkino Nazionale è a : 
www.martek.it
Pagina Vb/Bestiario/Lamer Experience :
http://www.martek.it/go.asp?portamia=2
 New Entry nel bestiario!
:-)

 lo farei fare a vb.
Aaaahhh... ho capito(?)
Tu vuoi fare un prog. come quei vecchi risolutori che giravano su C64: dai
in pasto un'equazione e lui ti mostra i vari passaggi risolutivi.
Mmmm... sto pensando...
Cosa c'entra allora il sistema?
Quello te lo fai tu a mano giusto?
Mmmm... sto ancora pensando... forse si potrebbe aggiungere un evento al
valutatore per indicare ad ogni passaggio lo stato dell'equazione, ma questo
potrebbe rallentare parecchio il calcolo
:( e significherebbe ricostruire l'equazione passando da postfix a infix, il
che non è possibile in modo univoco :(
Ciao


mmm....la difficile arte della comunicazione. ;-)
io ho delle equazioni in un database, e relative formule inverse che il
programma si calcola e memorizza nel database (al momento dell'immissione).
Ed ho anche memorizzate tutte le variabili usate nelle equazioni. L'utente a
questo punto immette dei valori, ed il programma dovrebbe essere in grado di
calcolare tutto il calcolabile (tramite sistemi ed equazioni normali, senza
altre tecnoche risolutive) Quindi per fare ciò prova ad eseguire ogni
equazione, se non ci sono tutte le variabili ovviamente non la esegue e
passa oltre. In aggiunta a ciò il programma "in automatico" si crea dei
sistemi con queste equazioni (tutto per sostituzione) ed ogni volta prova se
è possibile calcolare qualcosa (cioè se l'equazione è doventata ad una
incognita). Ripeto: i sistemi non glieli imposto io, ma da solo il programma
prende delle equazioni e ci lavora sopra.
E l'unico problema (per ora) in tutta questa cosa è ricavare l'incognita
quando essa è presente più volte.
Sarebbe una cosa del tipo: tu immetti tutti i valori e in una listbox ti
escono quanti più risultati possibili.
A che serve? mo chiedi troppo...se oltre a programmare devo anche pensare...
CIao!

sandrosky wrote:
ma ti fa schifo usare maple o mathemathica???
come activex ti espongono un sacco di metodi e sei tranquillo che la
"logica" interna è corretta.....
e poi ...se è vero che le F(x)...sono scatole a 2 fasi ...per
definizione(input output)....non sempre è agevole ricostruire dall'output
...l'input!
(penso inoltre all'immane casino (per me) delle equazioni differenziali..che
purtroppo descrivono bene un sacco di fenomeni fisici, chimici, ed anche
economici)
inoltre
se ti serve a ad esempio:
Definire quanti litri di ossigeno occorrono per produrre 3,5 Kg di
permanganato di potassio....oltre che la formula ....devi tener conto anche
degli arrotondamenti...e un metodo "puramente brute force"  è l'ideale per
un liceo ....non per una industria! (perchè ad ogni passaggio(ricorsione)
rischi di produrre un errore che si propaga ed aumenta)...prevedi un
controllo anche della precisione e dell'errore introdotto(come i sw seri)
altrimenti rischi di ottenere una nuova Seveso!!!
IMHO quello che vuoi fare funziona solo per casi particolari,situazioni
particolari...non per tutta la matematica in generale (ma io ho preso solo
19 ad Analisi...e supporto male la mia tesi...però se vuoi (spero di no) ci
penso ed argomento meglio!!! )



Certamente. Forse ho dato l'impressione di voler fare l'impossibile, e forse
non riesco a spiegarmi. Principalmente lo applicherò in tecnologia. E per
dove lo andrò ad applicare non dovrebbe dare grossi problemi
In futurò vedrò di renderlo un pò più serio, se avrò voglia e se ne vale la
pena
Ciao!