Items tagged with product


Dear all,

I have the following question, this code:

eq1 := ExteriorDerivative(w1);  
eq2 := ExteriorDerivative(w1) &wedge ExteriorDerivative(w2);
eq1 &wedge eq2;

Gives the error:
Error, (in DifferentialGeometry:-Tools:-DGzero)  given degree, 3, exceeds that of frame dimension, 2

Unfortunately, I am not so familiar with differential geometry but as far as I know dw1 \wedge  (dw1 \wedge  dw2) = 0 should be correct.

Thank you for your help

The following product


(product(mu^x[i]/factorial(x[i]), i = 1 .. n))


does not simplify to the most obvious form whatever I try


mu^(sum(x[i], i = 1 .. n))/(product(factorial(x[i]), i = 1 .. n))


What can it be?



I'm trying to compute the tensor product of two column vectors as






And the output is a column vector with entries: "16 x 1 Matrix", "Data Type: Anything", "Storage: rectangular", "Order: Fortran_order"


The Maple documentation indicates that this function should output the result of the kronecker tensor product of the input matrices, and I've followed the same form as the examples in the documentation... Does anyone know why this isn't working as it should?

Hi everybody

In the attached file, when I run the code, a confusing error message appears. Obviously, the product of a 3*2 matrix by a 2*1 matrix is possible, but Maple gives an error. These 2 matrices are multiplied correctly in another worksheet. What's the source of this error?

Thanks in advance

I want calcule the product of this function for x = x1, x2, ... xn:
    fx:= theta*exp(-theta*x)

I tried this:

    prod:= product(fx, x=1..n)

However this consider the integer values of x's, i.e, x = 1,2,3...,n.

I don't know how to make x values undefined. Is there anyway?


Hope a nice day for all


#  *%   define the product of between two operators, and q real number
a*%b = q*b*%a+1;

# First I would like to give a simple for

# and                                    

them deduce a general for                                      


 where n, k and k greater than 1 and  n geater than k


Thanks for your help


I thought I would share some code for computing sparse matrix products in Maple.  For floating point matrices this is done quickly, but for algebraic datatypes there is a performance problem with the builtin routines, as noted in

Download spm.txt

The code is fairly straightforward in that it uses op(1,A) to extract the dimensions and op(2,A) to extract the non-zero elements of a Matrix or Vector, and then loops over those elements.  I included a sparse map function for cases where you want to map a function (like expand) over non-zero elements only.

# sparse matrix vector product
spmv := proc(A::Matrix,V::Vector)
local m,n,Ae,Ve,Vi,R,e;
n, m := op(1,A);
if op(1,V) <> m then error "incompatible dimensions"; end if;
Ae := op(2,A);
Ve := op(2,V);
Vi := map2(op,1,Ve);
R := Vector(n, storage=sparse);
for e in Ae do
n, m := op(1,e);
if member(m, Vi) then R[n] := R[n] + A[n,m]*V[m]; end if;
end do;
return R;
end proc:
# sparse matrix product
spmm := proc(A::Matrix, B::Matrix)
local m,n,Ae,Be,Bi,R,l,e,i;
n, m := op(1,A);
i, l := op(1,B);
if i <> m then error "incompatible dimensions"; end if;
Ae := op(2,A);
Be := op(2,B);
R := Matrix(n,l,storage=sparse);
for i from 1 to l do
Bi, Be := selectremove(type, Be, (anything,i)=anything);
Bi := map2(op,[1,1],Bi);
for e in Ae do
n, m := op(1,e);
if member(m, Bi) then R[n,i] := R[n,i] + A[n,m]*B[m,i]; end if;
end do;
end do;
return R;
end proc:
# sparse map
smap := proc(f, A::{Matrix,Vector})
local B, Ae, e;
if A::Vector then
B := Vector(op(1,A),storage=sparse):
B := Matrix(op(1,A),storage=sparse):
end if;
Ae := op(2,A);
for e in Ae do
B[op(1,e)] := f(op(2,e),args[3..nargs]);
end do;
return B;
end proc:

As for how it performs, here is a demo inspired by the original post.

n := 674;
k := 6;
A := Matrix(n,n,storage=sparse):
for i to n do
  for j to k do
    A[i,irem(rand(),n)+1] := randpoly(x):
  end do:
end do:
V := Vector(n):
for i to k do
  V[irem(rand(),n)+1] := randpoly(x):
end do:
C := CodeTools:-Usage( spmv(A,V) ):  # 7ms, 25x faster
CodeTools:-Usage( A.V ):  # 174 ms
B := Matrix(n,n,storage=sparse):
for i to n do
  for j to k do
    B[i,irem(rand(),n)+1] := randpoly(x):
  end do:
end do:
C := CodeTools:-Usage( spmm(A,B) ):  # 2.74 sec, 50x faster
CodeTools:-Usage( A.B ):  # 2.44 min
# expand and collect like terms
C := CodeTools:-Usage( smap(expand, C) ):

As the year draws to a close, we start looking forward to a new year and a new release of Maple. With every new release comes many new features and updates to explore.

We are looking for several new beta testers with a good working knowledge of Maple; We need your input, your ideas, and your experience with our products to help us improve the software and get it ready for general release.

There are many benefits to becoming a beta tester:

  • You’ll get to use the new software before anyone else does.
  • You’ll help us make our software better in ways that work for you.
  • Your suggestions could determine the future direction of the software.
  • You’ll get feedback right from the development team.

If you are interested in becoming a beta tester for the next version of Maple, please email: beta (at) for more information.

Is there any Maple command for computing the product of two set A and B?

For example if A={a,b,c} and B={x,y} then we have A*B={ax,ay,bx,by,cx,cy}.

I want to make a dot product like

Eq6 := (sum(delta[i].v[i], i = 1 .. 3)).(sum(delta[j].w[j], j = 1 .. 3))

and get the complete result like

Eq7 := v[1].w[1]+v[2].w[2]+v[3].w[3]

but instead I get

Eq6 := ((Vector(3, {(1) = 1, (2) = 0, (3) = 0})).v[1]+(Vector(3, {(1) = 0, (2) = 1, (3) = 0})).v[2]+(Vector(3, {(1) = 0, (2) = 0, (3) = 1})).v[3]).((Vector(3, {(1) = 1, (2) = 0, (3) = 0})).w[1]+(Vector(3, {(1) = 0, (2) = 1, (3) = 0})).w[2]+(Vector(3, {(1) = 0, (2) = 0, (3) = 1})).w[3])

Is there a way to force the dot product operation all the way?


I have a question: why does the following not work and how can I make it work:


The result is f(x) a b but I want f(x) y. What can I do? I also tried eval.

Thanks and best regards.

I'd like to implement this in Maple, but being a newbie having hard time getting the syntax right:

This is what I tried:

f:= i->product( `if`(evalb(i<>j),(a-z(j))/(z(i)-z(j)),NULL),j=1..3);

but it is not skipping the i=j case, since when I call it with f(1) I get division by zero.

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

Tried also

f:= i->product(`if`(evalb(not(i=j)),(a-z(j))/(z(i)-z(j)),NULL),j=1..3);
and few other things. I think the reason it fails is deeper than my level of Maple undertstanding.

How would you do this in Maple?

the question


I already finished part a, my question is how do i define the function g with the variable k being any real value so that maple will find <f,g> = 0 (using the inner product defined)?


I have computed the infinite multiplication using Maple, $\Pi_{k=3}^{\infty} ( \cos (\frac{\pi}{k} ))$, as follows, but it resulted in 0! I wonder why this happened, although maple was using exact arithmetic.

    P := Product(cos(Pi/k), k = 3 .. infinity)   


Note that if I use floating-point instead, it gives me the right answer, 0.1149420449.

By the way, I did not expect such a situation! Exact arithmetic should be exact! I am multiplying non-zero numbers to each other, starting from $1/2$ to $1$ as $n \rightarrow \infty$. So it should not be zero! Why such a thing happened?

I am running into what looks like an interference between the Physics package and linear algebra, specifically when using the . (dot operator) to stand for matrix-vector multiplication:

I have a column vector and a matrix and need to evaluate the product matrix.vector. Usually this works fine and gives me the column vector with the result, just as expected. In this particular case (having with(Physics[Vectors]) at the top of the sheet) I get an error message:

Error, (in Typesetting:-delayDotProduct) invalid input: Physics:-Vectors:-`.` expects its 1st argument, a, to be of type Or({algebraic, procedure}, `=`), but received Matrix(3, 3, ...)

The Matrix it complains about is in fact the one I am sending it. It was created from a Physics:-Vectors object using the Component function (so it should be a regular Maple Matrix). In fact, the Matrix is the result of a LinearAlgebra:-MatrixInverse operation.

The weird thing is: This works when I am using 1-d input in Worksheet mode (which I am usually doing). In this case I am creating a sheet in Document mode using 2-d input as it is a sheet I will use in some teaching activity later this year, so I want it to look more polished. I can replace the dot with the relevant MatrixVectorMultiply function and it will work, but that is a kludge I don't think  should be necessary.

Anybody ever seen this? BTW, I am doing this on Maple 15 using the version of Physics that came with it.


Mac Dude


1 2 3 Page 1 of 3