acer

32343 Reputation

29 Badges

19 years, 328 days
Ontario, Canada

Social Networks and Content at Maplesoft.com

MaplePrimes Activity


These are replies submitted by acer

In future please use the green up-arrow in the Mapleprimes editor to upload and attach your worksheet .mw file.

Providing only an image of your code is unhelpful. Nobody else should have to retype it.

@Carl Love I understand now, you wanted longer subtickmarks. Thanks.

And you don't like multiplying by `°` because the ensuing spacing is too wide. (I think you could get by with `if`(irem(k,4)=0, cat(k*45/4,"°"), "") in Maple 2018/2021, though it's not a great deal terser.)

@Carl Love I'm not sure that I understand why that use of `if` and irem are used. For flexibility? Perhaps more straightforward for the common case might be, say,

plots:-polarplot(phi, phi=0..2*Pi,
                 axis[angular]=[tickmarks=[seq(i*Pi=i*180*`°`,
                                               i=0..2,1/4)],
                                gridlines=[32,majorlines=4]]);

I don't mean this as any kind of criticism.

@Kitonum As Carl mentioned, a mix of both approaches looks nice and it reasonably legible.

And Unit(degree) could be used in the range, instead of using the Pi/180 factor for each occurrence of the variable.

polaraxisdesgrees.mw

This also works in Maple 2018.2,

plots:-polarplot(cos(3*phi*Pi/180), phi=0..360,
                 axis[angular]=[tickmarks=[seq(i=cat(i,"°"),
                                               i=0..360,45)],
                                gridlines=[32,majorlines=4]],
                 angularunit=degrees);

plots:-polarplot(cos(3*phi), phi=0..360*Unit(degree),
                 axis[angular]=[tickmarks=[seq(i=cat(i,"°"),
                                               i=0..360,45)],
                                gridlines=[32,majorlines=4]],
                 angularunit=degrees, labels=["",""]);

@tarik_mohamadi Substituting Bi=1 after simplifying/computing under the assumption Bi>1 seems to me like the kind of thing that can lead to invalid results.

@tarik_mohamadi You could divide out that multiplicative factor Bi-1, although I don't see what mathematical justification you have for doing so. The results of that are no longer identically zero when Bi=1, but only you would know what meaning they'd provide.

Determinant_ac.mw

@PsiSquared I see the same problematic effect when exporting to PDF in Maple 2021.0 for 64bit Linux.

@nm I do not understand why you would not provide one of your actual LaTeX string examples when originally submitting the Question.

Here is some more, trying to represent multiple x-y pairs across various numeric E-values.

Once the roots for a fixed set of E values are computed (first plot with that numpoints) then repeated calls are quick for those same E-values, allowing easier customiztion of view, slicing/dicing,etc. Hence the use of adaptive=false and common numpoints.

There is a simple approach, putting all x-red and y-blue together. This shows some ostensible curves, but loses the x-y groupings.

There is also an attempt at "tracking", keeping the colors but using different point symbols. A similar thing could be done with, say, 3 shades of red, and 3 shade of blue. This kind of identification of roots is difficult. The differing scales don't help. Sorting is an alternative scheme. But all schemes can be defeated by some example.

If you know the expected ranges for x and y then this is the time to say so,,,

Error_John2020_acc.mw

 

@John2020 You have attempted to utilize the name Z as a dummy variable, for the plot call.

But you have already assigned a numeric value to Z, as one of the parameters in your equations set up. So your call to plot is invalid.

So you could try unassigning to Z just before plotting, or use another dummy variable name for the plot call, or use operator-form calling sequence of the plot command, etc. In the attachment I show one simple alternative.

Error_John2020_a.mw

I do not make any effort for efficiency through memoization in this attachment. It can be done, and it ought to be done, but first you need to figure out how you want to handle the fact that your equations might have multiple x-y solution pairs for each E value in your domain. Do you how to "track" solution pairs that appear to be along curves, or point-plot them all together (but still with x=red and y=blue), etc, etc.

@John2020 Please don't submit it as another, separate Question thread.

@Carl Love I do not prefer that mechanism using ToInert,specfunc,pointto because it has less direct connection to the nature (or location or details) of the mystery procedure.

Your comment about reliance on opaquemodules=false is not really an accurate description of that code. I favor a mechanism, where that doesn't setting come into play if unrelated; it's not needed for the routine to be accessed at runtime, so a mechanism to reveal it independent of that setting is less kludgey.

Also, your comment about results from LibraryTools is not very on target here, since it describes far more usual procedures than the very special case considered here for partition1.

Please don't repost this in an entirely separate thread. If you still want an iterative process then you can put any followup details or worksheets in Replies/Comments here.

@vv The procedure can be part of the lexical table because of how Maple internally stores procedures and references.

An example of how this might arise, for fun:

restart;

M := module() export foo;

   # The following is an anonymous module, that is
   # neither a local nor an export member of M.
   #
   module() local hidden1;
      
      # Here is an assignment to foo, an export of M.
      #
      foo := proc(x) cos(x) + hidden1(x); end proc:

      # Here is an assignment to hidden1, a local of
      # this anonymous module.
      #
      hidden1 := proc(x) sin(x)^2; end proc;

   end module;

end module:

M:-foo(77);

cos(77)+sin(77)^2

eval(M:-foo);

proc (x) cos(x)+hidden1(x) end proc

eval(hidden1);  # nope

hidden1

kernelopts(opaquemodules=false):
eval(M:-hidden1);  # nope

Error, module does not export `hidden1`

#dismantle(eval(M:-foo));

blah := [op(7, eval(M:-foo))]

[_thismoduledefinition, module () local hidden1; end module, hidden1, hidden1]

map(eval, blah[3..4]);

[hidden1, proc (x) sin(x)^2 end proc]

 

Download moduleanonfun.mw

I don't know why combinat:-partition and partition1 are organized as they are. It might be a coding choice of whoever converted combinat from an older table-based package to the more modern module-based package. But I don't know whether that was a stylistic choice or based on some functionlity/compatibility need.

@vv The partition1 procedure called inside the combinat:-partition procedure is referred to in the lexical table of the latter. It can be  by examined via the 7th operand of the procedure assigned to combinat:-partition. Eg,

interface(verboseproc=3):
foo := [op(7, eval(combinat:-partition))];
map(eval, foo[3..4]);

You could also step into partition1 by running a call to combinat:-partition in the debugger and then issuing the debugger command list 1..10 to see all its lines of code.

If you'd like I can show a small example of a way to construct such an "anonymous" reference.

First 133 134 135 136 137 138 139 Last Page 135 of 592