 
 
 
 
 
 
Re: RealValued functions and derivatives
- To: mathgroup@smc.vnet.net
- Subject: [mg10753] Re: RealValued functions and derivatives
- From: Allan Hayes <hay@haystack.demon.co.uk>
- Date: Mon, 2 Feb 1998 00:44:49 -0500
- References: <6as9r0$f9v@smc.vnet.net>
Ernesto Rico-Schmidt wrote:
> 
> Hello Mathematica Group!
> 
>   I'm having some troubles with some symbolic differential equations
> that include functions with real and complex parts.  I'm marking these
> functions as RealValued but the mark doesn't seem to remain valid if I
> apply derivatives to the function.  Marking them with RealValued
> doesn't work, I get a message "Recursion depth of 256 exceeded".
> 
.......[Ernesto's example is used below]
> 
>   Is there any way to convince Mathematica that the derivatives are also
> real valued?
Ernesto:
Here is a trick that should work in more general situations:
In[1]:=
<<Algebra`ReIm`;
Im[t] ^= 0;
RealValued[ux, uy, u1, u2, u3];
The trick is this:
Make two lists of replacement rules; the first list {u1'-> du1, u2'->
du2,u3'-> du3,u4'-> du4}, replaces derivatives with symbols that have
been made RealValues and the second list reverses this (use replacement
rather than assignments (= and :=) to avoid circularity)
In[2]:=
RealValued[du1,du2, du2,du3];
rl1={u1'-> du1, u2'-> du2,u3'-> du3,u4'-> du4};
In[3]:=
rl2= Reverse/@rl1;
Having made these, proceed as before:
In[4]:=
u = 2/3 (Exp[I phi1] u1[t] + Exp[I phi2] u2[t] + Exp[I phi3] u3[t])/.
         {phi1->0, phi2->2/3 Pi, phi3->4/3 Pi};
In[5]:=
 u = ExpToTrig[u];
In[6]:=
us[t_] := Re[u] + I Im[u];
In[7]:=
Re[D[us[t],t]]
Out[7]=
  Im[u2'[t]]    Im[u3'[t]]   2 Re[u1'[t]]   Re[u2'[t]] -(----------) +
---------- + ------------ - ---------- - 
   Sqrt[3]       Sqrt[3]          3             3
 
  Re[u3'[t]]
  ----------
      3
Finally use the rules
In[8]:=
%/.rl1/.rl2
Out[8]=
2 u1'[t]   u2'[t]   u3'[t]
-------- - ------ - ------
   3         3        3
-- 
Allan Hayes
Training and Consulting
Leicester, UK
hay@haystack.demon.co.uk
http://www.haystack.demon.co.uk
voice: +44 (0)116 271 4198
fax: +44 (0)116 271 8642

