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