Notice: On March 31, it was announced that Statalist is moving from an email list to a forum. The old list will shut down on April 23, and its replacement, statalist.org is already up and running.

# Re: st: could not calculate numerical derivatives

 From vesile kutlu To statalist@hsphsun2.harvard.edu Subject Re: st: could not calculate numerical derivatives Date Tue, 20 Nov 2012 14:47:48 +0100

```Austin, thank you for your suggestion. I think mm_root  is for
finding one root (univariate) of a function. In my case, I need a
bivariate root finder because I have two arguments in my objective
function.
I tried something different with the “optimize” command.  I used the
d1 evaluator and entered the first order conditions manually. I do not
get the error “could not find numerical derivatives” anymore. However,
I have another problem. The solution is identical to the initial
values. If I enter (1,1) for initial values, the program returns (1,1)
as a solution. Is there anyone who knows why this is the case? Thank
you.

: void mysolver(todo, p, v, g, H)
v = (0.7-exp((p[1]/p[2])*(exp(p[2]*48)-exp(p[2]*75))))^2+(0.4-exp((p[1]/p[2])*(exp(p[2]*48)-exp(p[2]*80))))^2
if (todo==1) {
g[1] = -2*exp((p[1]/p[2])*(exp(p[2]*48)-exp(p[2]*75)))*(0.7-exp((p[1]/p[2])*(exp(p[2]*48)-exp(p[2]*75))))*((1/p[2])*(exp(p[2]*48)-exp(p[2]*7
5)))-2*exp((p[1]/p[2])*(exp(p[2]*48)-exp(p[2]*80)))*(0.4-exp((p[1]/p[2])*(exp(p[2]*48)-exp(p[2]*80))))*((p[1]/p[2])*(exp(p[2]*48)-exp(p[2]*80))
g[2] = -2*exp((p[1]/p[2])*(exp(p[2]*48)-exp(p[2]*75)))*(0.7-exp((p[1]/p[2])*(exp(p[2]*48)-exp(p[2]*75))))*((p[1]/(p[2]^2))*(-exp(p[2]*48)+ex
p(p[2]*75)))-2*exp((p[1]/p[2])*(exp(p[2]*48)-exp(p[2]*80)))*(0.4-exp((p[1]/p[2])*(exp(p[2]*48)-exp(p[2]*80))))*((p[1]/(p[2]^2))*(-exp(p[2]*48)+
exp(p[2]*80)))
}
}
note: argument H unused
S = optimize_init()
optimize_init_evaluator(S, &mysolver())
optimize_init_evaluatortype(S, "d1")
optimize_init_params(S, (0.5,0.5))
optimize_init_which(S, "min")
p=optimize(S)
Iteration 0:   f(p) =        .65
Iteration 1:   f(p) =        .65
p
1    2
+-----------+
1 |  .5   .5  |
+-----------+

Vesile
Phd Candidate, Utrecht University

On Tue, Nov 20, 2012 at 11:55 AM, Austin Nichols
<austinnichols@gmail.com> wrote:
> vesile kutlu <kutlu.vesile@gmail.com>:
> User-written mm_root(); see
> http://www.stata.com/statalist/archive/2009-01/msg01140.html
>
> On Tue, Nov 20, 2012 at 5:34 AM, vesile kutlu <kutlu.vesile@gmail.com> wrote:
>> Hi all,
>> I am trying to solve the function “v” numerically in Mata but I get
>> the error ” could not calculate numerical derivatives -- discontinuous
>> region with missing values encountered”.  I ask Mata to minimize this
>> function with respect to a and b. I provide the initial values of
>> these parameters. Is there something wrong with my code? I would
>> appreciate if you could tell me why I got this error? Is there maybe
>> another way to solve this problem? Thank you.
>> Vesile
>> void mysolver(todo, p, v, S, H)
>>   {
>>   a=p[1]
>>   b=p[2]
>>   v=(0.7-exp((a/b)*(exp(b*48)-exp(b*75))))^2+(0.4-exp((a/b)*(exp(b*48)-exp(b*80))))^2
>>   }
>>   S=optimize_init()
>>   optimize_init_evaluator(S, &mysolver())
>>   optimize_init_evaluatortype(S, "v0")
>>   optimize_init_params(S, (1,1))
>>   optimize_init_which(S, "min")
>>   p=optimize(S)
>>   p
>>   end
>
> *
> *   For searches and help try:
> *   http://www.stata.com/help.cgi?search
> *   http://www.stata.com/support/faqs/resources/statalist-faq/
> *   http://www.ats.ucla.edu/stat/stata/

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/
```