J'essaie d'obtenir l'inverse de la fonction GLog. Est-il possible d'exporter la formule pour cela?
Voici un petit script qui crée le va renvoyer une valeur non transformée à partir d'une formule transformée enregistrée. Dites-moi si c'est quelque chose que vous jugez utile
Names Default to Here( 1 );
dt=open("$SAMPLE_DATA\semiconductor Capability.jmp");
Dis =dt << Distribution(invisible,
Continuous Distribution(
Column( :NPN1 ),
Fit Distribution(
GLog(
Spec Limits(
LSL( 104.412948990151 ),
USL( 131.893493064355 ),
Target( 118.153221027253 )
)
)
)
),
SendToReport(
Dispatch(
{"NPN1"},
"Distrib Histogram",
FrameBox,
{DispatchSeg( LabelSeg( 4 ), {Font( "Arial Unicode MS", 9, "Plain" )} ),
DispatchSeg( LabelSeg( 5 ), {Font( "Arial Unicode MS", 9, "Plain" )} ),
DispatchSeg( LabelSeg( 6 ), {Font( "Arial Unicode MS", 9, "Plain" )} )}
)
)
);
Dis<< Fit Distribution( GLog( Save Transformed ) );
Dis << Delete Window;
Wait(0);
RawFormula = "";
RawFormula = char(column(N Cols(dt))<<GET formula=""> 0,
While( Contains( TheFormula, ColonColName ) > 0, TheFormula = Munger( TheFormula, 1, ColonColName, "(__Value__)" ) ),
Dialog(
" The column specified as",
"the Transformed Column does",
" not contain a reference",
" to the original column.",
" in it's formula.",
" ",
" Please rerun and select",
" the correct column"
);
Throw();
);
TheFormula;
);
/***********************************************************************/
/* */
/* The gettrans function evaluates the formula in the transformed */
/* and converts the formula into a generic form for repeated use in */
/* running of the script. */
/* */
/***********************************************************************/
gettrans = Function( { ColName,RawFormula,TheTarget},
{TheFormula, High, Low, TheTarget, TheMax, Themin, __value__},
TheFormula = getformula(ColName,RawFormula);
// The program uses successive approximations to determine the different
// parametrics. The way it works is that it calculates the needed parameter
// such as Mean, or Standard Deviation, and then by using successive
// approximations from the original column's values, and passing those
// values through the columns formula, when the approximation value matches
// the calculated value from the transformed column, the retransformed value
// has been found
// Set the extreem valuesH
High = 999999999999999999999999;
Low = -999999999999999999999999;
// Check to see if negative values fail
__value__= -1;
if(isMissing(try(eval(parse(theformula)),.))==1,Low=0;);
// Make a guess at the first value
__value__ = Mean( High, Low );
// Iterate the guessing for up to 100 times, adjusting by 1/2 on each loop
For( i = 1, i <= 100, i++,
TheResult = Eval( Parse( theformula ) );
If(
TheResult > TheTarget, High = __value__,
TheResult < TheTarget, Low = __value__,
Break()
);
If( High == Low, Break() );
__value__ = Mean( High, Low );
);
__value__; // Expose the return value
); // End of function gettrans
trans=gettrans(ColName,rawformula,Target);
show(column(dt,ColName)[1],trans);</GET>Je ne suis pas au courant de tels. Ce que j’ai utilisé par le passé est un petit morceau de JSL qui utilise une recherche d’arbre B pour effectuer des approximations rapprochées afin de déterminer le résultat.