.- help for ^ridder^             [STB-17: ssi5.2; STB-19: ssi5.3; STB-24: ssi5.4] .- Equation solving by Ridders' Method -----------------------------------  ^ridder^ fcnmask ^=^ exp_y ^from^ exp_0 ^to^ exp_1 [^tol^ exp_t] [^ltol^ exp_l] where exp_y, exp_0, exp_1, exp_t, and exp_l refer to expressions (but are typically specified as numbers) and where fcnmask is either: (1)    an expression containing ^X^ (2)    progname [args] ^X^ [args] ^returns^ {^exp^|^macro^} name If one of ^tol^ or ^ltol^ is omitted, ^ridder^ ignores that constraint. ^tol 1e-6^ is assumed if neither ^tol^ nor ^ltol^ is specified. Description ----------- ^ridder^ finds the value of X such that          f(X) = exp_y or, more precisely: |f(X) - exp_y| < e   and   |x - x_hat| < exp_t where e = exp_y*max(|exp_y|,1). The search is carried out over the range exp_0 <= X <= exp_1.  The function f() may be specified on the command line (first syntax for fcnmask) or as a user-written program (second sytnax). Example 1 --------- Find the value of chi-square with 2 degrees of freedom that is just signif- icant at the 5% level. Solution:  Stata's ^chiprob(^d^,^x^)^ function returns the reverse cumulative for chi-square value x with d degrees of freedom (e.g., ^chiprob(2,3)^ is .2231, meaning chi-square 2 with 3 degrees of freedom is significant at the 22.3% percent level).  Thus, we want to find X such that ^chiprob(2,^X^)^=.05.  From knowledge of the chi-square distribution, we know the answer lies between 3 and 20.  We type: . ^ridder chiprob(2,X)=.05 from 3 to 20^ Example 1, second solution -------------------------- We define the following program: ^program define mychi^ ^global S_1 = chiprob(`1',`2')^ ^end^ and then type . ^ridder mychi 2 X returns macro S_1 =.05 from 3 to 8^ Alternatively, we define the program ^program define mychi^ ^scalar answer = chiprob(`1',`2')^ ^end^ and then type . ^ridder mychi 2 X returns exp answer =.05 from 3 to 8^ Example 2 --------- Given                        a                         t-1              1.1       -2 S   =  [ ( -----------   - 2 ) ( ------- ) ]         t          sqrt(S   )             a                          t-1               t Let a[1] = 1.5 and a[2], a[3], ..., be 1.  Find S[1] such that S[19]=1/22^^2. A program to calculate S[t], t=1,...,19 is given S[1] is: ^program define simul^ ^drop _all^ ^set obs 19^ ^gen a = cond(_n==1,1.5,1)^ ^gen S = `1' in 1^ ^replace S=((a[_n-1]/sqrt(S[_n-1])-2)*(1.1/a))^^-2 in 2/l^ ^end Typing "^simul .1^" would create the series based on S[1]=.1. Example 2, continued -------------------- We can find S[1] such that S[19]==1/22^^2 by typing: . ^ridder simul X returns exp S[19] =1/22^^2 from .001 to .75^ Deciphering: "^simul X^" means ^ridder^ can calculate values of the function by issuing the command ^simul^ followed by the number at which it wants the function evaluated.  ^X^ is a placeholder. "^returns exp S[19]^" means simul returns the answer as the expression S[19], meaning the 19th observation of the data variable S. "^=1/22^^2^" means we want the answer to be 1/22^^2. "^from .001 to .75^" means we want to search over the range .001 to .75 for the solution. Author ------        Tim McGuire, Stata Corporation        EMAIL  tech-support@@stata.com Also see --------    STB:  ssi5.4 (STB-24), ssi5.3 (STB-19), ssi5.2 (STB-17),          ssi5 (STB-16), ssi5.1 (STB-16) On-line:  ^help^ for @fcnplot@ (if ssi5.1 installed)