jakubi

1384 Reputation

12 Badges

20 years, 2 days

MaplePrimes Activity


These are replies submitted by jakubi

is available in the system. In your steps this can be used instead:

FunctionAdvisor(identities,GAMMA(z))[1]:
G:=unapply(eval(rhs(%),z=-z),z);

                                  Pi csc(Pi z)
                        G := z -> ------------
                                  GAMMA(1 - z)

So, the meaning of my question was actually about setting an option for making 'product' use this identity.

is available in the system. In your steps this can be used instead:

FunctionAdvisor(identities,GAMMA(z))[1]:
G:=unapply(eval(rhs(%),z=-z),z);

                                  Pi csc(Pi z)
                        G := z -> ------------
                                  GAMMA(1 - z)

So, the meaning of my question was actually about setting an option for making 'product' use this identity.

I think because it gets expressed in a form that cannot handle further. Eg:

product((a-n)/a, n=1..N);
eval(%,a=365);


                  (N + 1)                       (N + 1)
              (-1)        GAMMA(N + 1 - a) (1/a)        a
            - -------------------------------------------
                             GAMMA(1 - a)

Error, (in GAMMA) numeric exception: division by zero

I wonder whether there is an option to make 'product' produce the result as 1/GAMMA(-N+a)/(a^N)*GAMMA(a).

I think because it gets expressed in a form that cannot handle further. Eg:

product((a-n)/a, n=1..N);
eval(%,a=365);


                  (N + 1)                       (N + 1)
              (-1)        GAMMA(N + 1 - a) (1/a)        a
            - -------------------------------------------
                             GAMMA(1 - a)

Error, (in GAMMA) numeric exception: division by zero

I wonder whether there is an option to make 'product' produce the result as 1/GAMMA(-N+a)/(a^N)*GAMMA(a).

This seems very interesting though I am not finding a hint about it in ?convert/to_special_function > The Optional Arguments. I hope that it will be documented in the next version.

Somewhat related to this issue, I was looking today on simplification of Heun functions and though directly does not work:

simplify(HeunC(1,1,1,-3,7/2,-z));
                     HeunC(1, 1, 1, -3, 7/2, -z)

presumably as there is no 'simplify/HeunC', I have found that a by-pass through eg 'hypergeom' works:

FunctionAdvisor(specialize,HeunC(1,1,1,-3,7/2,-z),hypergeom):
map(simplify,op(1,%));


                                                       2
                                            6 - 6 z + z
              HeunC(1, 1, 1, -3, 7/2, -z) = ------------
                                             6 (z + 1)


This seems very interesting though I am not finding a hint about it in ?convert/to_special_function > The Optional Arguments. I hope that it will be documented in the next version.

Somewhat related to this issue, I was looking today on simplification of Heun functions and though directly does not work:

simplify(HeunC(1,1,1,-3,7/2,-z));
                     HeunC(1, 1, 1, -3, 7/2, -z)

presumably as there is no 'simplify/HeunC', I have found that a by-pass through eg 'hypergeom' works:

FunctionAdvisor(specialize,HeunC(1,1,1,-3,7/2,-z),hypergeom):
map(simplify,op(1,%));


                                                       2
                                            6 - 6 z + z
              HeunC(1, 1, 1, -3, 7/2, -z) = ------------
                                             6 (z + 1)


Plots and other other output with locals that use commas are shown with commas (eg here). May be that the ps files are also generated with commas when using these locals?

 

But very bad design. I wonder why this is not set by default. And where is the list of operations affected by this setting. More than unintuitive, it is inconsistent that, by default an error is issued here:

0/0;

Error, numeric exception: division by zero

while for arctan(0,0), which is basically a "0/0" operation, the default output is 0.

I do not know a way to make that work for x-1 instead. Ie using the complex option and x^(1/3).

Ie that I want 'factor' to use 1 as the "prefered" cubic root of 1. Indeed, adding 1 does not work:

factor(x-1,{x^(1/3),1});

Error, (in factor) 2nd argument, {1, x^(1/3)}, is not a valid algebraic extension

Hi Richard

Thank you for this hint. I find that this "flag" stuff is a quite strange implementation. I read in ?NumericStatus:

User code can check the NumericStatus after a sequence of operations to determine if any numeric events were triggered (resulting in either default values or trapped exceptions) during the computation.
...
If the status flags are set, they remain set until they are explicitly cleared

So, at interacting level, the execution of this statement produces no message, while the state of the system may change in a hidden way, and you do not know about this change unless you had the "inspiration" to execute NumericStatus() immediately before and immediately after the execution of this statement (as some other statements in the session may also change this flag).

Yes, I see it as an undocumented and not well implemented "feature".

I wonder why 'factor' seems unable to recognize that 1=1^3, bypassing somehow the automatic simplification, as this seems to be the missing the step to make it work, instead of the current behavior:

factor(x-1,x^(1/3));

                                x - 1

subs(a=x^(1/3),(factor@subs)(x=a^3,x-1));
                    (1/3)        (2/3)    (1/3)
                  (x      - 1) (x      + x      + 1)

If an extension of the syntax is made here for conditions, I would appreciate that it is made consistent and uniform. Eg. elsewhere '&where' or 'And' are used for similar purposes:

PDEtools[dpolyform](y(x) = sin(  f(x)), no_Fn);
   /d      \2         2      /d      \2
  [|-- y(x)|  = (-y(x)  + 1) |-- f(x)| ] &where
   \dx     /                 \dx     /

         d             d
        [-- y(x) <> 0, -- f(x) <> 0]
         dx            dx

FunctionAdvisor(specialize,BesselJ)[1];

           [BesselJ(a, z) = AngerJ(a, z), And(a::integer)]

Maple does not have yet very good tools for this kind of manipulations. Some steps towards the desired form may be:

eq2:=8*(-(-If*(q*ks^4/If^(1/2))^(3/5)+Tcr*Delta*Ds*ks^3)/Delta/Ds/ks^3)^(3/2) = qs/(Delta*GRAVIT*Ds^3)^(1/2);
assume(If>0,ks>0,q>0,Tcr>0,Delta>0,Ds>0,qs>0,GRAVIT>0);;
use RealDomain in solve(eq2,If) end use:
p:=%;
s:=op(indets(p,`+`)):
subs(s=u,p);
simplify(%) assuming u>0;
If=subs(u=s,%);
map(x->x^(7/10),%);
simplify(%);


    (7/10)
  If       =

                 (1/3)             (1/3)     (2/3)       2/3   3/5
        (4 GRAVIT      Tcr Ds Delta      + qs     ) Delta    ks
        ----------------------------------------------------------
                                     1/3  3/5
                             4 GRAVIT    q

 

First 67 68 69 70 71 72 73 Last Page 69 of 123