Carl Love

Carl Love

28035 Reputation

25 Badges

12 years, 318 days
Himself
Wayland, Massachusetts, United States
My name was formerly Carl Devore.

MaplePrimes Activity


These are replies submitted by Carl Love

@mmcdara Yes, that is why I knew that example off the top of my head.

Regarding your question from your last paragraph: The first argument of Eval can be anything:

Eval(A, x= b);

The could be replaced by any expression. There is nothing worth documenting about the case where A is a expression.

You need to choose as integers that can be represented in multiple ways as a sum of two 4th powers of integers. Those are rare. For context, the smallest integer that can be represented in two distinct ways as a sum of two 3rd powers of positive integers is 1729.

I think that the smallest possible c is

635318657 = 59^4 + 158^4 = 133^4 + 134^4,

which I found by brute-force search of all sums of 4th powers of distinct positive integers <= 200:

select[flatten](
    x-> nops(x)>1, 
    ListTools:-Classify(`+`@op, combinat:-choose([$200]^~4, 2))
);

And I'm not saying that this c will work, just that it's the smallest c for which there's even a chance.

Your update from today, with significant bug-producing examples, is quite important. I totally missed it when I reread this thread some hours ago. Note that MaplePrimes does not change the date in the top right corner of any post. You should repost that as a new Reply to the Question so that it gets its own date and hopefully wider readership.

Is there some good reason why your code is nearly identical to the code in the current basins-of-attraction Question thread initiated by @Danish Toheed?

Sorry, my previous title "6, or possibly 5" was wrong. It was based on a two-day-old memory of having played around with this graph. It should actually be "7, or possibly 6". Specifically,

  • I can easily show that the bondage number is <= 7 by removing all 7 edges from vertex 1 (and it probably would work for any vertex). Then it only takes miiliseconds (using my MinDominatingSets procedure) to show that the domination number is 5 instead of 4.
  • Using the technique that I described in the Answer above, it takes an average of only 54 microseconds to remove a subset of edges and check whether the domination number is still 4. Using this, I've checked all 31 million 5-subsets of edges, and they all leave the domination number at 4. Thus, the bondage number is > 5.
  • There are 406 million 6-subsets of edges. To check them all would take a little over 6 hours.
  • I am working on a heuristic search method to look for an "unbinding set" of size 6. The idea is to use the edges that individually give the greatest reduction to the set of 300 dominating sets. Since many reduce it by 56, and 6*56 > 300, I have some hope for this.

Although the numeric BVP solver does provide the feature that I mentioned above, it might not be a good idea to use it in this particular case. Two reasons:

  1. In this case, it is trivial to compute those three values after the system is otherwise solved. If sol is the solution returned by dsolve, they can be read off directly from sol(0).
  2. I'm not sure about this, but it's possible that including the symbolic variables significantly increases the computational burden and increases the chance of that most-dreaded of BVP errors "Newton iteration is not converging".

Regarding the label=  "dontexpand": At ?RootOf, it's explained that its last argument can be label= (almost anything). My guess is that some part of the solving process added this to your RootOf to convey some information to some other part of the process. Although I'm not sure, I don't think that this has anything to do with the error. It just happened to be inside the RootOf at the time the error occurred.

@tomleslie Maple's numeric BVP solver will solve for symbolic scalar variables in the system if you provide one extra boundary condition for each such variable. The OP wants a[1]a[2], and a[3] to be those variables. Thus 10 is the correct number of boundary conditions.

@lcz It's not specific to graphs. If L is any list, and is any permutation of its indices, then L[P] is the corresponding permutation of the elements. 

Thanks for catching the stray {My eyesight can't distinguish it from [ at the default type size.

@tomleslie The edges do not need to be passed to the Graph constructor. You can replace

G2:= Graph({seq( seq( {i, j}, j in op(4,s)[i]), i=1..30)}):

with

G2:= Graph(op(4,s)):

And  you don't need IsIsomorphic to get phi. You can do

phi:= op(3,s) =~ [$nops(op(3,s))];

These aren't just syntactic shortcuts; they're significantly more efficient. 

@lcz My algorithm's approach is a simple straightforward check-all-subsets approach. Since the subsets are checked in size order, this is guaranteed to work. Of course, "all subsets" could easily be impossibly large to check, and some heuristics for special cases will likely have a better average-case time. I saw a paper recently that claimed a polynomial-time algorithm for certain classes of graphs, including triangle-free graphs. The writing was dense and very technical for me, and I didn't have the mental energy to plow through it. I'll post a link to that paper if you're interested. 

Formulating the problem as an ILP seems cute and academically interesting, but I'd guess that it doesn't have much practical value because there aren't average-case efficient algorithms for general ILPs. (Not sure.) Formulation as an LP would be a different matter.

I think that it could also be formulated as a boolean satisfiability problem, which Maple has a great algorithm for. (See ?Logic,Satisfy.) But, if the general problem is NP-hard, these things can't really help with the computation time.

@Danish Toheed I suppose that you're already aware that the "raw" Newton's method converges very slowly at points where both the function and its derivative are 0 (a condition usually equivalent to "multiple roots"). In practice, I often divide a function by its own derivative, then simplify, before applying Newton's to avoid this. (Yes, I know there are cases where this itself causes problems.)

@vlineze Your Answer reads to me as if it were written by ChatGPT. Was it?

@lcz Yes, in most languages that have a goto, it is fast, and the only harm that it can cause is stylistic. But the Maple goto is particularly slow (CPU time). If you don't believe me, then just construct a timing test of it.

I urge you to never consider using Maple's goto again. Maple's main looping command, do, is the most sophisticated looping command that I'm aware of in any language, and its options allow you to control any situation without using goto.

First 49 50 51 52 53 54 55 Last Page 51 of 708