Re: Simplify by Recurrence Relations
- To: mathgroup at smc.vnet.net
- Subject: [mg75756] Re: Simplify by Recurrence Relations
- From: dimitris <dimmechan at yahoo.com>
- Date: Thu, 10 May 2007 05:06:03 -0400 (EDT)
- References: <f1s3n1$h2g$1@smc.vnet.net>
Hello Ajit.
As always your queries are very good and make me think.
(and I learn/recall a couple of things!)
So...
What you want can be achieved as follows:
--->Add a rule about BesselJ function
BTW since you were interested in the function convert of another CAS
in Mathematica you can try
In[37]:=
FullSimplify[BesselJ[n, x], ComplexityFunction -> (If[Head[#1] ===
BesselJ, 1, 0] & )]
Out[37]=
(x^n*Hypergeometric0F1Regularized[1 + n, -(x^2/4)])/2^n
End of parenthesis
Before adding a rule for a built in command, you must first unprotect
it.
In[42]:=
Attributes[BesselJ]
Out[42]=
{Listable, NumericFunction, Protected}
In[43]:=
Unprotect[BesselJ];
Now
In[44]:=
Attributes[BesselJ]
Out[44]=
{Listable,NumericFunction}
It is time to add the rule
In[45]:=
BesselJ[n_, z_] := 2*(n/z)*BesselJ[n - 1, z] - BesselJ[n - 2, z] /; n
>= 2
In this way
In[46]:=
(BesselJ[#1, z] & ) /@ Range[5]
(Collect[#1, {BesselJ[0, z], BesselJ[1, z]}] & )[%]
Out[46]=
{BesselJ[1, z], -BesselJ[0, z] + (4*BesselJ[1, z])/z, -BesselJ[1, z] +
(6*(-BesselJ[0, z] + (4*BesselJ[1, z])/z))/z,
BesselJ[0, z] - (4*BesselJ[1, z])/z + (8*(-BesselJ[1, z] + (6*(-
BesselJ[0, z] + (4*BesselJ[1, z])/z))/z))/z,
BesselJ[1, z] - (6*(-BesselJ[0, z] + (4*BesselJ[1, z])/z))/z +
(10*(BesselJ[0, z] - (4*BesselJ[1, z])/z + (8*(-BesselJ[1, z] +
(6*(-BesselJ[0, z] + (4*BesselJ[1, z])/z))/z))/z))/z}
Out[47]=
{BesselJ[1, z], -BesselJ[0, z] + (4*BesselJ[1, z])/z, -((6*BesselJ[0,
z])/z) + (-1 + 24/z^2)*BesselJ[1, z],
(1 - 48/z^2)*BesselJ[0, z] + (192/z^3 - 12/z)*BesselJ[1, z], (-(480/
z^3) + 16/z)*BesselJ[0, z] +
(1 + 1920/z^4 - 144/z^2)*BesselJ[1, z]}
and so on.
Watch the desirable factoring and the rule is not applied for n<2. The
role of n>=2, because otherwise
$RecursionLimit::reclim messeges "fill" the screen! (Which is normal
of course.)
What about derivatives?
In[54]:=
(D[BesselJ[#1, z], z] & ) /@ Range[3]
(Collect[#1, {BesselJ[0, z], BesselJ[1, z]}] & )[%]
Out[54]=
{(1/2)*(2*BesselJ[0, z] - (4*BesselJ[1, z])/z), BesselJ[1, z] -
(4*BesselJ[1, z])/z^2 +
(2*(2*BesselJ[0, z] - (4*BesselJ[1, z])/z))/z, (1/2)*(-2*BesselJ[0,
z] + (4*BesselJ[1, z])/z) -
(6*(-BesselJ[0, z] + (4*BesselJ[1, z])/z))/z^2 +
(6*(BesselJ[1, z] - (4*BesselJ[1, z])/z^2 + (2*(2*BesselJ[0, z] -
(4*BesselJ[1, z])/z))/z))/z}
Out[55]=
{BesselJ[0, z] - (2*BesselJ[1, z])/z, (4*BesselJ[0, z])/z + (1 - 12/
z^2)*BesselJ[1, z],
(-1 + 30/z^2)*BesselJ[0, z] + (-(96/z^3) + 8/z)*BesselJ[1, z]}
and so on!
Hope that these are helpful.
Regards
Dimitris
=CF/=C7 Mr Ajit Sen =DD=E3=F1=E1=F8=E5:
> Dear Mathgroup,
>
> Could someone please show me how to simplify a
> function by using its recurrence relations.
>
> As a simple example, let's take the Bessel
> recurrence
> relation
>
> BesselJ[n+1,z]= 2n/z BesselJ[n,z]-BesselJ[n-1,z].
>
> How do I get Mathematica (5.2 !) to evaluate
>
> D[BesselJ[2,x],x]
>
> as (1-4/x^2)BesselJ[1,x]+ 2/x BesselJ[0,x]
>
> instead of (BesselJ[1,x]-BesselJ[3,x])/2 ?
>
> [Basically, reduce the order to 0 &/or 1, so that
> all
> J0 and J1 can be factored out later.]
>
> Thanking you in advance.
>
> Ajit.
>
>
>
>
> ___________________________________________________________
> To help you stay safe and secure online, we've developed the all new Yaho=
o! Security Centre. http://uk.security.yahoo.com