Further improvements to integral property code



Hello David,

nice to see that the generalizations of the code for integrals on the property
list works so nice.

Concerning the Hypergeometric functions I would suggest to introduce a
simplifying functions which can use hgfred to simplify and have the following
notation:

hypergeometric([a1,a2,...],[b1,b2,....],z)

This general function could be specialized for the most important cases like:

hypergeometric_2f1(a1,a2,b,z)

We can support the hypergeomtric representation on the property list too. This
representation could be looked up by the integrator and then integrated. One big
problem is that hgfred produces a lot of asksign. I think the code of hgfred can
be improved.

The technique to lookup the hypergeometric representation would be very
interesting for the Laplace transformations in $specint too. The code of
$specint can be much simplified using a lookup algorithm. By the way I think it
would be nice a feature for the Maxima User to get the hypergeometric
representation of a function.

Dieter Kaiser

-----Urspr?ngliche Nachricht-----
Von: maxima-bounces at math.utexas.edu [mailto:maxima-bounces at math.utexas.edu] Im
Auftrag von Billinghurst, David (RTATECH)
Gesendet: Sonntag, 4. Januar 2009 04:46
An: maxima at math.utexas.edu
Betreff: Re: [Maxima] Further improvements to integral property code

> From: David Billinghurst
> 
> I have spent some time tidying up the integral property code 
> that Dieter and I have been working on recently.  It now 
> works for functions with an arbitrary number of arguements.
> 
> I then extended it to work for:
>  - cases where the integral property is a function, and
>  - subscripted functions.
>
> As a further test I had a go at the 0F1 hypergeometric 
> function with the following code (which is not in CVS).

... and here is naive code for a pFq hypergeometric function.
I don't know enough about these functions to know if we should
do if any of the terms in the denominator are zero.


(defprop $%f
  ((p q p-list q-list z)
   nil
   nil
   nil
   nil
   (lambda (p q p-list q-list unused)
     (cond 
      ((and ($integerp p) 
	    ($integerp q)
	    (= ($length p-list) p)
	    (= ($length q-list) q))
       (let* ((p-list-1 
	       `((mlist) ,@(map 'list (lambda (x) (sub x 1)) (cdr
p-list))))
	      (q-list-1 
	       `((mlist) ,@(map 'list (lambda (x) (sub x 1)) (cdr
q-list)))))
	      `((mtimes)
		,(div
		  `((mtimes) ,@(cdr q-list-1))
		  `((mtimes) ,@(cdr p-list-1)))
		((mqapply) (($%f array) ,p ,q) 
		 ,p-list-1
		 ,q-list-1
		 z))))
      (t nil))))
  integral)

With this:

(%i31) integrate(%f[2,2]([a1,a2],[b1,b2],x),x);
        %f    ([a1 - 1, a2 - 1], [b1 - 1, b2 - 1], x) (b1 - 1) (b2 - 1)
          2, 2
(%o31)  ---------------------------------------------------------------
                               (a1 - 1) (a2 - 1)

(%i33) integrate(x*%f[2,2]([a1,a2],[b1,b2],x^2),x);
                                                   2
       %f    ([a1 - 1, a2 - 1], [b1 - 1, b2 - 1], x ) (b1 - 1) (b2 - 1)
         2, 2
(%o33) ----------------------------------------------------------------
                             2 (a1 - 1) (a2 - 1)

This email is confidential and may also be privileged.  If you are not the
intended recipient, please notify us immediately and delete this message from
your system without first printing or copying it. Any personal data in this
email (including any attachments) must be handled in accordance with the Rio
Tinto Group Data Protection Policy and all applicable data protection laws.

_______________________________________________
Maxima mailing list
Maxima at math.utexas.edu
http://www.math.utexas.edu/mailman/listinfo/maxima