       Re: real valued function from complex

• To: mathgroup at smc.vnet.net
• Subject: [mg37401] Re: [mg37354] real valued function from complex
• From: Daniel Lichtblau <danl at wolfram.com>
• Date: Sat, 26 Oct 2002 02:04:12 -0400 (EDT)
• References: <200210250646.CAA18072@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```strgh at mimosa.csv.warwick.ac.uk wrote:
>
> I want to define a real-valued function f[t_] from the
> values of a complex-valued function on a line parametrised
> by t, and then be able to handle f like any other real
> function (differentiate it etc.)
>
> A cute example is:
>
>   Clear[rz, drz];
>   rz[t_] := Re[Zeta[1/2 + I*t]];
>   drz[t_] := D[rz[t], t]     (* the sort of thing I want to do *)
>
> so that
>
>   Plot[{drz[t], Im[Zeta[1/2 + I*t]]}, {t, 0, 40},
>     PlotStyle -> {RGBColor[1, 0, 0], RGBColor[0, 0, 1]}]
>
> will work (it doesn't).
> I can get a quick & dirty numerical approximation in this case
> (including, as a reality check, the original function I'm
> differentiating) using something like
>
>   Clear[rz, iz, rztable, plotzeta];
>   rz[t_] := Re[Zeta[1/2 + I*t]];
>   iz[t_] := Im[Zeta[1/2 + I*t]];
>   rztable[tmin_, tmax_] :=
>     Table[{t, rz[t]}, {t, tmin, tmax, (tmax - tmin)/50}];
>   plotzeta[tmin_, tmax_] := Module[{rzapprox},
>     rzapprox = Interpolation[rztable[tmin, tmax]];
>     Plot[{rzapprox'[t], rz[t], iz[t]}, {t, 0, 40},
>       PlotStyle -> {RGBColor[1, 0, 0], RGBColor[0, 1, 0],
>                     RGBColor[0, 0, 1]}]
>     ]
>
>   plotzeta[0, 40]
>
> However I'd prefer to leave the numerical approximations
> till the last minute (i.e. plotting), and the interpolation
> table would need tweaking on a case-by-case basis.
> Any other suggestions?  (sorry if there is an "obvious" answer).
>         -- Ewart Shaw
> --
> J.E.H.Shaw   [Ewart Shaw]        strgh at uk.ac.warwick     TEL: +44 2476 523069
>   Department of Statistics,  University of Warwick,  Coventry CV4 7AL,  U.K.
>   http://www.warwick.ac.uk/statsdept/Staff/JEHS/
> 3  ((4&({*.(=+/))++/=3:)@([:,/0&,^:(i.3)@|:"2^:2))&.>@]^:(i.@[)  <#:3 6 2

You can "commute" Re with D. To make use of this we'll unprotect Re and
place an UpValue for D on it.

rz[t_] := Re[Zeta[1/2 + I*t]];

Unprotect[Re];
D[Re[a_],x_] ^:= Re[D[a,x]]

We also want to work with a dummy variable even when we pass in a number
so we do a temporary substitution.

drz[t_] := D[rz[x],x] /. x->t

Now your plot should work fine.

Daniel Lichtblau
Wolfram Research

```

• Prev by Date: Re: real valued function from complex
• Next by Date: Re: Off by 0.00000001, Why?
• Previous by thread: real valued function from complex
• Next by thread: Re: real valued function from complex