MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: derivative of a well-behaved function

  • To: mathgroup at smc.vnet.net
  • Subject: [mg99529] Re: [mg99466] derivative of a well-behaved function
  • From: Daniel Lichtblau <danl at wolfram.com>
  • Date: Thu, 7 May 2009 06:36:13 -0400 (EDT)
  • References: <200905060924.FAA01756@smc.vnet.net>

Ricardo Samad wrote:
> Dear all,
> 
> the following ZS function is an analytical description of the transmittance
> of a laser beam through an Iris after propagating inside a nonlinear sample
> (Z-Scan curve):
> 
> \[Gamma][z_, z0_] := 1/2 (I/z0 (z + (z^2 + z0^2)/(DD - z)) + 1);
> 
> ZS[z_, z0_, \[Phi]_] :=
>   Abs[\[Gamma][z, z0] Gamma[\[Gamma][z, z0], 0,
>      I \[Phi]/(1 + (z/z0)^2)] /(I \[Phi]/(1 + (z/z0)^2))^\[Gamma][z,
>      z0]]^2;
> 
> Altough the function has imaginary arguments and is defined in terms of the
> incomplete Gamma function, it is well-behaved and Mathematica calculates an=
> d
> plots it without problems:
> 
> DD = 300;
> Plot[ZS[z, 1, 0.5], {z, -4, 4}]
> 
> The problem is that when I calculate its derivative in z, the result is
> given in terms of infinite quantities and DirectInfinity functions, and it
> is not possible to get numerical values of it neither plot its graph:
> 
> dZS = D[ZS[z, 1, 0.5], z];
> dZS /. z -> 1
> N[%]
> Plot[dZS[z, 1, 0.5], {z, -4, 4}]
> 
> Since the ZS function is well-behaved and has no discontinuities, its
> derivative should be easily evaluated to numerical values and also plotted.
> Does anybody has any idea on how to obtain the values? (I could easily writ=
> e
> a function to numerically calculate the derivative, but that=B4s not really
> what I want).
> 
> Thank you,
> 
> Ricardo
> 
> --
> ____________________________________
> Ricardo Elgul Samad
> [...]

Derivative (and D) really require analytic finctions in complex 
variables to do their work. In your example I think D gets thwarted by 
presence of Abs. One way around this would be to take explicit numeric 
differences, as below.

eps = 10^(-6);
dZS[z_Real] := Re[(ZS[z + eps, 1, 1/2] - ZS[z - eps, 1, 1/2])/(2*eps)]

Plot[dZS[z], {z, -4., 4.}]

Alternatively, you could load the numerical calc package:

Needs["NumericalCalculus`"]

and then use ND.

Daniel Lichtblau
Wolfram Research



  • Prev by Date: Re: Picking Off Lists That Have No Numbers
  • Next by Date: Re: Functions in partial differential equations with different number
  • Previous by thread: derivative of a well-behaved function
  • Next by thread: Re: derivative of a well-behaved function