Search code examples
maxima

how to assign numerical values to variables inside a product?


Let me start by saying I've just started using maxima, so I don't know much about it.

I've defined an expression

(%i77) f: 1 + exp(x(i,1) + x(i,2));
                              x(i, 2) + x(i, 1)
(%o77)                      %e                  + 1

which I want to evaluate in various contexts, for different values of x(i,1) and x(i,2).

(%i78) ev(f, x(i,1)=0, x(i,2)=0);
(%o78)                                 2

The problem is inside a product expression, ev does not do anything:

(%i79) product(f, i, 1, n);
                          n
                        /===\
                         ! !     x(i, 2) + x(i, 1)
(%o79)                   ! !  (%e                  + 1)
                         ! !
                        i = 1
(%i80) product(ev(f, x(i,1)=0, x(i,2)=0), i, 1, n);
                          n
                        /===\
                         ! !     x(i, 2) + x(i, 1)
(%o80)                   ! !  (%e                  + 1)
                         ! !
                        i = 1
(%i81) ev(product(f, i, 1, n), x(i,1)=0, x(i,2)=0);
                          n
                        /===\
                         ! !     x(i, 2) + x(i, 1)
(%o81)                   ! !  (%e                  + 1)
                         ! !
                        i = 1

How does one go about assigning numerical values to variables inside a product?


Solution

  • Maybe you have to add intermediate function:

    (%i1) f: 1 + exp(x(i,1) + x(i,2));
                                  x(i, 2) + x(i, 1)
    (%o1)                       %e                  + 1
    (%i2) g:product(f, i, 1, n);
                              n
                            /===\
                             ! !     x(i, 2) + x(i, 1)
    (%o2)                    ! !  (%e                  + 1)
                             ! !
                            i = 1
    (%i3) ev(g,x(i,1)=0,x(i,2)=0);
                                           n
    (%o3)                                 2