Symbolic Derivatives of Unspecified Functions

*To*: mathgroup at smc.vnet.net*Subject*: [mg70665] Symbolic Derivatives of Unspecified Functions*From*: misha <iamisha1 at comcast.net>*Date*: Sun, 22 Oct 2006 01:20:23 -0400 (EDT)

My apologies for the long post. A brief form of the question is the first sentence of the next paragraph. I'm a very inexperienced Mathematica user and am probably expecting too much and/or being too lazy, but I was wondering whether Mathematica can do something I describe below, and, if so, how to implement it. I also apologize for my likely misuse of notation, terminology, etc. I think my question boils down to whether I can use Mathematica to take derivatives of functions that have no functional form. It seems like this is possible, given an example I found in the help files. D[f[g[x]],x]=f'[g[x]]g'[x] For example, as a first shot, I tried, In[1]:= r[qi_, qj_]=r[qi,qj] $ IterationLimit::itlim : Iteration limit of 4096 exceeded. More... Out[1]:= Hold[r[qi,qj]] In[2]:= qi[gi_, gj_]=qi[gi,gj] $ IterationLimit::itlim : Iteration limit of 4096 exceeded. More... Out[2]:= Hold[qi[gi,gj]] In[3]:= qj[gi_, gj_]=qj[gi,gj] $ IterationLimit::itlim : Iteration limit of 4096 exceeded. More... Out[3]:= Hold[qj[gi,gj]] In[4]:= D[r[qi[gi,gj],qj[gi,gj]],gi] $ IterationLimit::itlim : Iteration limit of 4096 exceeded. More... $ IterationLimit::itlim : Iteration limit of 4096 exceeded. More... $ IterationLimit::itlim : Iteration limit of 4096 exceeded. More... General::stop: Further output of $IterationLimit::itlim will be suppressed during this calculation. More... Out[4]:= D[Hold[r[Hold[qi[gi,gj]], Hold[qj[gi,gj]]]],gi] I would like something like, r_1*d{qi}/d{gi} + r_2*d{qj}/d{gi}, where r_1 is the partial derivative of r w.r.t. its first argument, r_2 is the partial derivative of r w.r.t. its second argument. So, say I have some functions that assume little or no specific functional form. Di=[(beta*(gi+gj))/(1-theta)][gi/(gi+gj) + theta*gj/(gi+gj)] alpha=beta/(1-theta) (obviously this is specific) Ci(Gi)=ci(Gi)*qi, (ci(Gi) has no specific form) Gi(gi, gj, beta, theta) = (1 - alpha)*gi + alpha*theta*gj pi_i(gi,gj,qi,qj,beta,theta)=ri(qi,qj)-ci(Gi)*qi-(v*gi^2)/2, where ri and ci do not have functional forms. (I'd also like to work with a less specific form of (v*gi^2)/2, but I'll set that aside for now...). I want to take derivatives, such as derivative of pi_i with respect to qi, a first order condition, or FOC (1) d{pi_i}/d{qi} = 0 then the derivative of (1) w.r.t. qi and qj, and the total derivative of (1) w.r.t gi, assuming qi and qj are functions of gi (and gj). I get some results that include expressions with "Hold" and problems with iterations. Here are more details about the above problems and what I want Mathematica to do... This may be obvious, but this is a two-stage oligopoly model with investment. With specific functional forms one can do something like the following: Solving the second (i.e., last) stage of the game in Cournot competition (i.e., firms i and j maximize profit, pi_i, pi_j, choosing qi and qj, respectively) will yield expressions for qi and qj in terms of the other variables, gi, gj, beta, and theta. This is done by setting the first derivative of pi_i w.r.t. qi equal to zero, then solving for qi. Then, using these expressions, you move to the first stage and solve for the optimal investments, gi and gj, by substituting the above qi and qj into pi_i, setting the first derivative of pi_i w.r.t. gi to zero, and solving for gi, yielding expression in terms of beta and theta. However, without assuming functional forms, it gets a little hairier...making a number of common assumptions, such as d{ri}/d{qj}<0, d{ri}/(d{qi}d{qj})<0, d{ci}/d{G}<0, d^2{ci}/d{G^2} >0, symmetry (d{ri}/(d{qi}d{qj}) = d{rj}/(d{qj}d{qi}) = r_ij, d^2{ri}/d{qi^2} = d^2{rj}/{qj^2} = r_ii, and some others, gets a FOC that looks something like (2) d{pi_i}/d{qi}=d{ri}/d{qi}-d{ci}/d{qi} = 0 Then, since there's no functional form, one obviously cannot solve for qi, so the goal is to find the slope of the "reaction function", d{qj}/d{qi}, which turns out to be (in this model) (3) d{qj}/d{qi}=-(d^2{ri}/d{qi^2})/(d^2{ri}/d{qi}d{qj}). This comes from totally differentiating (2) w.r.t. qi and qj. Then, one can solve the the changes in qi and qj w.r.t. changes in gi, d{qi}/d{gi} and d{qj}/d{gi}, by totally differentiating (2) and its equivalent for pi_j w.r.t. gi. There is far more than this, but if I can get this done in Mathematica, my life will be far easier. Ideally, I can get "nice" expressions that can be exported into a TeX file via Mathematica. Many thanks in advance for reading and responding. Misha

**Re: Re: Programming style: postfix/prefix vs. functional**

**RE: Re: Re: Programming style: postfix/prefix vs. functional**

**Re: Re: Wolfram Workbench**

**Re: Symbolic Derivatives of Unspecified Functions**