array functions



Dan Stanger <dan.stanger@ieee.org> writes:

> Following is the problem I am trying to solve.  This function will
> generate
> the weights for Gauss Hermite integration.
> hermite_w[n](r):='block(
> 
> map(lambda([x],(2^(n-1))*(n!)*bfloat(sqrt(%pi))/((n*hermite_h[n-1](rhs(x)))^2)),r))$
> 
> So I execute
> roots(hermite_h(4,x))
> and get
> (d7) [x =  - 1.65068012388578d0, x =  - 0.52464762327528d0, x =
> 0.52464762327528d0, x = 1.65068012388578d0]
> Then I execute hermite_w[4](d7);
> and get:
> [((1.7724538509055160273b0 * 2^(n - 1) * n!)/((hermite_h[n - 1]( -
> 1.65068012388578d0))^2 * n^2)),
> ((1.7724538509055160273b0 * 2^(n - 1) * n!)/((hermite_h[n - 1]( -
> 0.52464762327528d0))^2 * n^2)), ((1.7724538509055160273b0 * 2^(n - 1) *
> n!)/((hermite_h[n - 1](0.52464762327528d0))^2 * n^2)),
> ((1.7724538509055160273b0 * 2^(n - 1) * n!)/((hermite_h[n -
> 1](1.65068012388578d0))^2 * n^2))]
> 
> So for some reason n is not known in the function. What I want is that
> this expression should evaluate to a list of floating point numbers
> only.

Perhaps

(C1) hermite_w[n](r):=buildq([n,c:2^(n-1)*(n-1)!*bfloat(sqrt(%pi))/n],
makelist(c/hermite_h[n-1](rhs(x))^2,x,r));
				      n - 1
				     2	    (n - 1)! BFLOAT(SQRT(%PI))
(D1) hermite_w (r) := BUILDQ([n, c : ---------------------------------], 
	      n					     n

							   c
					MAKELIST(----------------------, x, r))
							  2
						 hermite_h     (RHS(x))
							  n - 1
(C2) hermite_w[4]([x =  - 1.65068012388578d0, x =  - 0.52464762327528d0, x =
0.52464762327528d0, x = 1.65068012388578d0]);
	   2.126944621086619B1		   2.126944621086619B1
(D2) [------------------------------, ------------------------------, 
	       2			       2
      hermite_h (- 1.65068012388578)  hermite_h (- 0.52464762327528)
	       3			       3

			2.126944621086619B1	      2.126944621086619B1
		    ----------------------------, ----------------------------]
			     2				   2
		    hermite_h (0.52464762327528)  hermite_h (1.65068012388578)
			     3				   3
(C3) hermite_w[4];
				    2.126944621086619B1
(D3) 	       LAMBDA([r], MAKELIST(-------------------, x, r))
					     2
				    hermite_h (RHS(x))
					     3
(C4) 

Wolfgang