Mac Dude

1576 Reputation

17 Badges

14 years, 120 days

MaplePrimes Activity


These are questions asked by Mac Dude

I need to get rid of the type "constant" for gamma. In Maple, gamma is defined as Euler's constant by default. While it is easy enough to unprotect(gamma) and then get rid of its value, Maple will refuse to solve an equation for gamma, as it remains of type constant even after deassigning it. So I need to regain gamma as a variable.

Some may feel this is an unwise thing to do. But it actually is not: I am writing a document involving physics, and gamma is the accepted symbol for the relativistic energy. I cannot avoid using that, lest mass confusion ensues (this involves students). I really don't want to write gammar instead. Euler's constant, otoh, does not figure at all in my document.

Note that I need a solution that works in Maple 15 and later as I am working in a heterogeneous environment as far as Maple versions are concerned.

Thanks in advance,

Mac Dude

 

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.

Thanks,

Mac Dude

 

I have an equation as follows:

By inspection one can see that the last three terms can be simplified (factored) to

How can I coerce Maple to do this? None of the available tools seem to be getting close to this. A partial solution is like this: Writ a procedure as follows:

Fac:=proc(xpr,a,b);
  tmp:=xpr+(a^2+2*a*b+b^2);
  return tmp-(a+b)^2;
end proc;

and then call it:

Fac(lhs(eq),k0,2*Pi*n/L)=rhs(eq);

to get

which is what I want. But procedure Fac() is not general at all; e.g. it fails if the overall sign of the polynomial terms are different. There does not seem to be any way in Maple to determine the sign of a term in the sum of lhs(eq), I can only find ways to determine signs of a simple indeterminate. I'd like to make this procedure more general (which is trivial enough for a human) but I just cannot find any tools in Maple to support this.

Any ideas out there?

Mac Dude.

 

I have the following expression (obtained from an earlier calculation):

I want to collect all the terms under one summation. So I define a rule:

collectf:=proc(f)
A::algebraic*f(a::algebraic)+B::algebraic*f(b::algebraic)\
 +C::algebraic*f(c::algebraic)+D::algebraic*f(d::algebraic)=f(A*a+B*b+C*c+D*d);
end proc:

and then

applyrule(collectf(Sum),%);

I get

Error, (in +) unable to identify A::algebraic

I used similar constructs before so I think the rule is constructed correctly. I should, however, mention that I use the Physics:-Vectors package and in fact the expression I start up with here reads, in 1-d Maple inputform:

Physics[Vectors][`+`](Physics[Vectors][`+`](Physics[Vectors][`+`](-y*(Sum((diff(a[n](r), r))/(exp(I*Pi*n/L))^2, n))/r, (2*I)*(Sum(a[n](r)/(exp(I*Pi*n/L))^2, n))*k0), y*(Sum(a[n](r)/(exp(I*Pi*n/L))^2, n))*k0^2), -y*(Sum((diff(a[n](r), r, r))/(exp(I*Pi*n/L))^2, n)))

Is my problem related to the use of Physics:-Vectors? If so, how can I get around that?

TIA,

Mac Dude

I have a diff equation in cartesian coordinates I need to transform to a certain cylindrical system. The de looks like this:

I define my new system with addcoords like this:

addcoords('AccCylinder',[r,theta,y],[r*cos(theta),y,r*sin(theta)]); # Note: y is the longitudinal axis here!

and also do

VectorCalculus:-AddCoordinates('AccCylinder'[r,theta,y],[r*cos(theta),y,r*sin(theta)],overwrite) assuming r >= 0;

and note that I had to overwrite as my system was already known, so maybe addcoords is reduncant(?)

I then do the transformation ("(7)" is the label of my above de):

changecoords((7),[x,y,z],AccCylinder,[r,theta,y]);

and get

This may be correct, but it has the expressions in the differentials, which diff does not know how to handle. I need to convert things like diff(xpr,r*cos(theta)) = diff(xpr,x)*diff(x,r) where x would be r*cos(theta). I can do this "by hand", but that seems overly tedious and error-prone. Somehow I'd expect the coordinate transforms to be able to do this but I can't figure out how.

Any idea?

Thanks,

Mac Dude,

First 13 14 15 16 17 18 19 Last Page 15 of 24