Mac Dude

1576 Reputation

17 Badges

14 years, 231 days

MaplePrimes Activity


These are questions asked by 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,

Hi, I have the feeling I ran into this before, but can't find the answer, so here goes:

I want to create an animated plot of a histogram, changing the range of data to be histogrammed. So I type:

plots:-animate(Statistics:-Histogram,[dR*~WindowN(RP0,Ci,CangleWidth+Ci),ignore=true],Ci=-0.5 .. 0.2);

The error I am getting is

Error, (in MathPad:-WindowN) cannot determine if this expression is true or false: Ci < HFloat(0.39995) and HFloat(0.0) <= -HFloat(0.34995000000000004)+Ci

What happens here is that dR is a Vector of data with RP0 being another Vector equally long. I have a library function called WindowN that returns a Vector of the same length as its argument, with 1. for the elements within the window, undefined for the elements outside. The windowing algorithm is just a straightforward if, in a loop over the elements. This all works and I get a correct Histogram plot if I set the window numerically and call Histogram. CangleWidth is preset to 0.05.

Here the window to use is supposed to be set by the animate command. I expect Ci to be set to numbers in the range given (25 points default) and prepare the plots. But it looks like the WindowN routine gets an unevaluated Ci. I tried evalf(Ci) or eval(Ci) in the arglist, to no avail. Ci is not used or set before this call to animate.

I can see how I can workaround this but I think this should work as is. plots:-animate works for me in other contexts.

Any ideas?

Mac Dude

I have two equations:

and I need to extract the coefficients of x0 and xp0 (to build a matrix; but that is not the issue). So I use coeffs:

coeffs(op(2,X),x0);

coeffs(op(2,XP),x0);

xp0

While I can live with the first result (for X) (not that I like it), the fact that the 2nd one (for XP) has a completely different structure prevents any kind of algorithmic extraction of the coefficients (and the second one of course is 0) for further use. I tried the form of coeffs with a third argument (a name which gets the result assigned) but the same result. This example is a real case, obviously a trivial one and others will be much more involved so I really would like this to work. And yes, I did "collect" before using coeffs (not that it was needed here).

Any ideas out there?

Mac Dude.

I have an expression of the following structure (the real case is much more complicate but this will illustrate):

expr:=(a+q)*A+b*q*B;

I am looking for a way to change only the first occurrence of q. In my specific case, q << a so I can approximate that instance of q with 0. This I cannot do for the second occurrence of q. Note that the trivial subs(a+q=a) does not work for my real case as a is too complicated (meaning that while in principle I can do it, it looks extremely messy and in any case would not be general).

I can probably concoct something using op(#,expr) and has, but I am wondering whether there is an easier and faster way.

TIA,

Mac Dude

An indefinite integral cancels out one differentiation:

int(diff(w(s),s,s),s)=diff(w(s),s);

But for a definite integral Maple does not recognize that:

int(diff(w(s),s,s),s=0..L) = int(diff(w(s),s,s),s=0..L);

What I would have expected is something like:

int(diff(w(s),s,s),s=0..L) = eval(diff(w(s),s),s=L)-eval(diff(w(s),s),s=0);

I cannot get Maple to recognize this even when assuming real or positive.

What I am really after is this: w(s...

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