Carl Love

Carl Love

16959 Reputation

24 Badges

7 years, 234 days
Mt Laurel, New Jersey, United States
My name was formerly Carl Devore. I was in the PhD math program at University of Delaware until 2005. I was very active in the Maple community at that time.

MaplePrimes Activity

These are replies submitted by Carl Love

@AHSAN Don't repost this same Question in other threads. And stop using the title "ODE solution".

@Carl Love Alas, specifying gridlines= false no longer works as a workaround for uploaded worksheets.

If you post some of those exercises, preferably with your solution attempts, people here will surely be able to respond.

@dantopa But note that you get the correct results with the 'col' option, as VV showed. When you examine 'col' after running the command, you'll get the color assignments, and you can easily verify that it's a valid coloring. What's more difficult to verify (indeed NP-complete difficult) is whether it's a minimal coloring. 

In Maple's 2D Input, you need to put a space after Pi. Without the space, there is no implied multiplication.

@Anthrazit Actually, using evalindets, it's trivial to generalize any procedure that acts on of some particular (nonrecursive) type into a procedure that performs the same action on all x of that type contained in almost any superstructure, such as a Unit expression. Like this:

rnd2:= (x::realcons, n::integer)-> evalf[length(trunc(x))+n](round(x*10^n)/10^n): #Tom's original
Rnd2:= (super, n::integer)-> evalindets(super, float, x-> rnd2(x,n)): #massive generalization

I changed realcons to float because you'd probably not want to round exact constants (such as exponents) that may appear in some superstructures. Decimal exponents are nasty.


I believe that Maple's first several generations were as an academic project. Now it's a corporate product. I believe that there were some generations where it was in an in-between state. So, the phrase "it's own product history" is ambiguous, and I think that that's the crux of the issue. It could be that the Maplesoft product history of Maple is complete as far as the versions of Maple that were produced by Maplesoft.

This is just to clarify both the Question and Kitonum's Answer regarding inverse. There is no command named inverse that applies in this situation. The inverse of Matrix is S^(-1). For the uncommon cases where you need to use options with the inverse (e.g., for the pseudoinverse), you can use LinearAlgebra:-MatrixInverse(S, options)

You may see a command inverse in some old code or old books. That command no longer applies, and it won't work on a Matrix.

@Joe Riel Thanks, Joe. You can find the most-recent code in the most-recent Reply to the most-recent Answer 

Now much faster and exports a procedure to check

below. All of the errors related compiled, multi-threaded, split-rank Iterators still occur. I also sent the code to you via email.

@Carl Love For your work today, please use this newest and fastest version:

@Tyttemus It's mathematically impossible to do what you want.

Looking through the help pages (in Maple 2020) whose names begin "updates," the oldest that I found was for Maple 4.0. At least that's something older than Maple 6.

@acer I failed to consider that in my definitions, although I was aware of that in the back of my mind! Thanks for pointing that out, and I'm glad to know that you're still reading this thread and monitoring the accuracy of what I say.

Fortunately, for the situation in this program, we are dealing only with sets of sets of lists of integers (type set(set(list(integer)))), and certainly all that I said applies to those. Agree? Would you be able to modify my definitions to encompass your example? Or is my whole thesis irreparably flawed?


1. Feasibility: Since evalf(7*binomial(60,7)) = 2.7*10^9, I'd guess that that's feasible, but near the upper limit of feasibility.

2. nterms: Yes, it totally makes sense. It's standard combinatorics.

7. Keep me updated on any need for new conditions. And be wary that I'm not sure that I've implemented the conditions correctly.

8. One problem at a time: Suppose that you wanted to use CondCheck with two (or more) different configurations of the index permutations and\or condition tables. Using a "basic" module (which is what we have), you need to re-call OrbitPartition every time that you want to change the configuration. With an object module, you can set different configurations and assign them to names, and those "objects" will exist simultaneously in memory, so that you can switch configurations for CondCheck just by using the different names.

9. I'd like to know the "parallel efficiency", which I define as  "cpu time" / ("real time" * "number of processors").


@emendes It's an excellent question, really the key to the whole working of the program, and fundamental to the working of Maple itself as a whole. Consider the return-value line from Orbit:

    {indices(R, 'nolist')}[1] #Return lexicographic min as representative.

At the time that this line is executed, table contains (as its indices) all of the counterparts of as well as S itself (i.e., the orbit of S). (In our case, there can only be one counterpart, but this code will work for any number of counterparts, i.e., any orbit length.) The {...} forms those indices into a set. (The nolist avoids adding extra [...], which are not needed here and just contribute to garbage.) Now notice the [1]: That gets the first element of the set as the return value. Now, you may ask, "How do you define the first element of a set?" Given any two immutable[*1] objects and y in Maple, it has an ordering scheme that is consistent across sessions[*2], even across different computers, such that if x precedes y, then x will come before y in any set whatsoever. It's an absolutely brilliant piece of design on the part of the Maple kernel authors. Thus, I know that that [1] will always select the desired member of the orbit, and thus leave out what you called S'. 

[*1] Immutable objects: For the purpose of this post, immutable objects are those whose "identity" is based solely (by design!) on "content" rather than by memory address. Immutable objects include all numbers, names, algebraic expressions, and lists, sets, and sequences whose elements are themselves immutable. Objects that are not immutable (aka mutable) include tables and all types of arrays (Vectors, Matrices, Arrays, rtables).

[*2] For the purpose of rigorous testing of programs (and pretty much only for that purpose), it's possible to choose different ordering schemes. I think that there are 8 choices. See help page ?maple.



2 3 4 5 6 7 8 Last Page 4 of 513