Mac Dude

1576 Reputation

17 Badges

14 years, 223 days

MaplePrimes Activity


These are questions asked by Mac Dude

I have a polynomial expression that I would like to cast into a specific form. The expression is

and I know that it can be simplified into a form involving squares of (A[Qi]-Pi). It is trivial to do this on paper; how can I convince Maple to do this.

The solution I came up with was to use mtaylor and expand about the forms I know to be there:

mtaylor((3),[A[Q1]=P1,A[0]=P2*rho/(rho+Q1),A[Q3]=P3],6);

which is what I want (close to, anyway). Now, I consider this to be a bit of a dirty trick that works here as the expression is simple and no higher-order terms are present so in fact the solution is exact. But, are there methods along simplify and friends that can do this? I have not been successfull with those...

This is a part of a much longer worksheet and part of a lecture, so I need Maple to be able to do this. The mtaylor trick works, but I would not want to miss an obvious approach that may work where mtaylor would get confused.

Thanks,

M.D.

test.mw

I ran into a problem with define that I traced to the 'linear' option in the define statement, and I would like to know whether this is my lack of understanding define, or a bug.

I want to define a function called avg(parm) (which I never will need to use explicitly but  I need to be able to manipulate). This function has the property of being linear, and terms not depending on x can be pulled out. Also, avg(parm)=parm unless parm depends on x. (Yes, it stands for a kind of averaging, but that is not relevant here).

So I programmed it in this way:

define(avg,'linear','conditional'(avg(a::algebraic) = a, _type(a, freeof(x))),\
'conditional'(avg(a::(nonunit(algebraic))*b::(nonunit(algebraic))) = a*avg(b), _type(a, freeof(x))));

For the heck of it I could not get it to work. Basically, none of the equations in the definition were ever used, except that constant numeric factors were pulled out, as they should.

Eventually I found that the 'linear' option was the culprit. Once I got rid of that, the definition of avg did what I wanted it to do (like avg(a*x) => a*avg(x); avg(a) => a). The reason a constant numeric factor was pulled out before is because the 'linear' option does that; it never gets to my definitions (one can see that when printing avg).

Am I missing something fundamental here, or is define not working right?

For the record, I did this in Maple 15 on a PPC Mac. I don't have my Maple 2015 handy to test on that version.

Any insights?

Mac Dude

I have run into a "funny" feature of 2-D input: It seems to convert something like k/2 into this k*`^`(2,-1). While this would often not be an issue (it is correct after all), it becomes a problem when used in an argument list to a procedure. It becomes even more of a problem when, by chance, I have overloaded `^` to act on specific types that I have defined.

Let me try to explain briefly. I have a package called "Lattice" that does whatever it does (not of relevance here). I am writing a little manual for this package, for which I use 2-D input so I can write it in Maple and have the examples right in it and "live".

Here is what happens:

with(Lattice) # load the package

QFh:=Quad(0,kf/2) # Define an element for Lattice

Error, invalid input: Lattice:-`^` expects its 1st argument, element, to be of type Element, but received 2

Copy-pasting kf/2 into a 1-d worksheet, I get

QFh := Quad(0, kf*Lattice[`^`](2, -1));

So it uses Lattice[`^`] which actually appears to bypass the overload I have in the Lattice package. `^` is defined like this in Lattice:

`^`:=proc(element::Element,n::algebraic) option overload; # Element is a defined type in Lattice
...
end proc;

How can I possibly rewrite `^` to fall-back to Maple's ^ operator when called as Lattice[`^`] ?? I know there is a function overload() but have no experience with it. Would it even help?

Or am I missing something completely here? I do not use 2-D input for my usual work, but in this case I want and need to use it. The reason for its bizarre rewrite of "/2" is beyond me. Note that I can replace /2 by *0.5; but that causes problems later on for algebraic work as 1/2 is not 0.5 in Maple. I tried *1/2 but that has the same problem.

Has anyone a clean solution for this? I assume this effect is not limited to my own package but would affect others as well.

M.D.

PS: I ran into this using Maple 15 but I doubt it is specific to this particular version.

I ran into a problem with the physics package that I subsequently solved. But I am wondering whether this would be a candidate for an SCR and/or be considered a bug.

The calculation I am trying is actually (so far) very simple.

I define a Hamiltonian H:

H := sqrt(p_^2*c^2+m^2*c^4); # note the square of vector p_

p_:=p1*_i+p2*_j+p3*_k;

H;

So far so good. Now I want to take the differentials of H against the components of p:

diff(H,p1) assuming c::real;

Hmm... I am not sure why the p2 and p3 still show up; but then, the product between the unit vectors should be 0 for different ones and one for equal unit vectors so maybe this is ok.

But H behaves weird: I can simplify it:

but if I try to do anything with it, it barfs:

dH+0;

Error, (in Physics:-Vectors:-+) invalid operation * between vectors _i and _j

As it turns out the issue is the square of the vector p_. Maple (or rather, Physics) does not recognize that it needs to expand p_^2 as p_.p_ and seems to treat is like p_*p_.

I would like Edgardo---& others more experienced with the Physics package than I am---to look at this. I do not understand the Physics package well enough to judge whether overloading the exponentiation operator to make this work is the right thing.

The example works once I replace p_^2 by p_.p_. But the ^2 notation is fairly standard usage so it feels slightly awkward.

Thanks,

Mac Dude.

Derivation_of_H.mw

I know this has been dealt with before here, but I have forgotten the proper way to trim a small imaginary round-off from a result. I cannot locate the proper answer in MaplePrimes; and the Mapledocs are either quiet about it or it is hidden in a difficult-to-find place.

What I want is to ignore ny imaginary part below a certain threshold. Ideally, it takes the threshold in relation to the real part but I am not particular about this.

Thanks in advance,

Mac Dude

 

First 7 8 9 10 11 12 13 Last Page 9 of 24