So che è un po 'allungato, ma c'è comunque la possibilità di codificare la funzione Ei (x) in JMP.<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> La funzione Ei (X) è (credo) una funzione abbastanza rara. Almeno non ho mai dovuto occuparmene prima. Ma è saltato fuori in un'analisi che sto facendo, mi chiedo se ci sia comunque da codificare in una formula in JMP. Chiaramente, non è lì per impostazione predefinita, ma esiste un modo per inserire manualmente questo:
-

- In una colonna formula? Grazie in anticipo.
- --SurfaceThought
Ri: So che questo è un po 'allungato, ma è comunque in grado di codificare la funzione Ei (x) in JMP.PMroz,
Questo è incredibile! Funziona perfettamente! Questo è sicuramente un lavoro meritevole di birra, se pensi a un modo in cui posso comprarlo, fammelo sapere
--SurfaceThought
Ri: So che questo è un po 'allungato, ma è comunque in grado di codificare la funzione Ei (x) in JMP.OK ecco l'implementazione JSL del codice Fortran. Il codice viene eseguito, ma è necessario testarlo per assicurarsi che i numeri siano buoni. È praticamente una conversione dritta del programma Fortran. Esercizio interessante!
Ri: So che questo è un po 'allungato, ma è comunque in grado di codificare la funzione Ei (x) in JMP.Penso che ci sia un pacchetto R che farà l'integrazione. Sarebbe più facile da implementare che ricodificare?
Steve Denham
Ri: So che questo è un po 'allungato, ma è comunque in grado di codificare la funzione Ei (x) in JMP.Sono praticamente lingue completamente diverse. Se ho un po 'di tempo libero (hah) prendo una coltellata per convertirlo.
Ri: So che questo è un po 'allungato, ma è comunque in grado di codificare la funzione Ei (x) in JMP.Sì, più l'ho guardato (la gamma incompleta), meno ero felice e non riuscivo a trovare un modo semplice per attirare la simmetria, specialmente per queste funzioni.
Oh e per quanto riguarda la traduzione di FORTRAN in JSL, la parola "condannato" è abbastanza appropriata. Il codice MATLAB sarebbe più facile da tradurre, penso.
Steve Denham
Ri: So che questo è un po 'allungato, ma è comunque in grado di codificare la funzione Ei (x) in JMP.Questo è il posto in cui vado oltre la mia testa
Sono molto più uno statistico che un programmatore (anche se non sono molto di nessuno dei due ). Quanto è vicino FORTRAN a JSL? Non ne ho conoscenza. Se copio e incollassi l'intera cosa in una finestra di script JSL e continuassi a cercare di eseguirlo e correggere gli errori man mano che si presentavano, avrei avuto successo o sarei stato condannato senza alcuna conoscenza di FORTAN?
Grazie,
--SurfaceThought
Ri: So che questo è un po 'allungato, ma è comunque in grado di codificare la funzione Ei (x) in JMP.Scusa, è stato stupido da parte mia. Intendevo come una funzione di integrazione, non come una funzione round to integer.
- SurfaceThought
Ri: So che questo è un po 'allungato, ma è comunque in grado di codificare la funzione Ei (x) in JMP.Steve,
Usare la funzione gamma per calcolare Ei (x) è così allettante, e così vicino alla soluzione, ma dopo aver giocato con esso, purtroppo penso che non funzionerà. La funzione Gamma fornita in JMP consente di calcolare la funzione gamma completa o la funzione gamma incompleta inferiore. In altre parole, ti consente di integrare da zero a infinito o zero a qualche valore x positivo, ma non puoi passare al limite inferiore di integrazione: è sempre zero. L'integrale esponenziale è correlato al superiore funzione gamma incompleta, in quanto per calcolarlo è necessario avere un limite inferiore di integrazione variabile e integrare all'infinito. Poiché la funzione gamma così com'è in JMP non consente un limite inferiore di integrazione, penso che questo approccio semplicemente non funzionerà.
Grazie ugualmente,
--SurfaceThought
Ri: So che questo è un po 'allungato, ma è comunque in grado di codificare la funzione Ei (x) in JMP.Ecco un'implementazione Fortran: http://people.sc.fsu.edu/~jburkardt/f77_src/toms385/toms385.html
Non dovrebbe essere troppo difficile per convertire in JSL.
Ri: So che questo è un po 'allungato, ma è comunque in grado di codificare la funzione Ei (x) in JMP.In JMP usa Floor (x) per ottenere ciò che Int (x) in Excel.
Ri: So che questo è un po 'allungato, ma è comunque in grado di codificare la funzione Ei (x) in JMP.Non basta un utente JMP per sapere - molto più di una persona SAS. Ma l'integrazione non è qualcosa su cui SAS è molto forte a livello di funzione, sebbene ci siano alcuni approcci e macro PROC FCMP che io conosca.
Quello che pensavo fosse una possibilità era usare alcune delle funzioni gamma associate a Ei (x), come la funzione gamma incompleta e scalare opportunamente l'input e l'output.
Steve Denham
Ri: So che questo è un po 'allungato, ma è comunque in grado di codificare la funzione Ei (x) in JMP.Steve: Grazie per la rapida risposta:
Ho osservato le approssimazioni e non sono sicuro che funzioneranno per i miei scopi. L'approssimazione della serie Taylor:

apparentemente è lento a convergere, e avrebbe bisogno di k = 30 per avere una precisione di tre decimali ai livelli di x che avrei a che fare con. Inoltre, la pagina wiki afferma:
Questa formula può essere utilizzata per calcolare
con operazioni in virgola mobile per reali
tra 0 e 2,5. Per
, il risultato è inaccurato a causa di cancellazione .
Il che è piuttosto inquietante, visto che avrò a che fare con valori x maggiori di 2,5. Capisco che le "operazioni in virgola mobile" significano semplicemente che il dispositivo di calcolo termina a un certo numero di punti decimali dopo ogni fase del calcolo. JMP utilizza operazioni in virgola mobile? C'è anche un'alternativa? Suppongo che potrei trasformare x in qualche modo in modo che i valori si adattino tra 0 e 2,5.
C'è un'altra approssimazione che è divergente, che non è grande perché è divergente, ma anche perché l'errore sembra essere molto grande per i piccoli valori di x (meno di uno), che è anche nell'intervallo di valori x che posso uso. Se ho bisogno di usare questa approssimazione, dovrò farlo, ma vorrei salvarlo per l'ultima opzione.
Il problema con il calcolo dell'Ei (X) e l'importazione in JMP, è che l'argomento dell'integrale esponenziale include un parametro che voglio risolvere per l'utilizzo di minimi quadrati non lineari. Pertanto, deve essere effettivamente codificato in JMP in modo che JMP possa modificare il parametro per risolverlo iterativamente.
È proprio vero che non c'è una funzione INT () in JMP?
Grazie per l'aiuto,
--SurfaceThought
Ri: So che questo è un po 'allungato, ma è comunque in grado di codificare la funzione Ei (x) in JMP.Non così raro. La pagina MATLAB fornisce molte approssimazioni, quindi potrebbe esserci qualcosa che può essere sgranato dalle funzioni di JMP.
Vedere http://mathworld.wolfram.com/ExponentialIntegral.html
Guarda anche la libreria GNU ( http://www.gnu.org/software/gsl/manual/html_node/Exponential-Integral.html ). Si può usare questo per generare un oggetto R, e quindi estrarlo in JMP.
Steve Denham