acer

32353 Reputation

29 Badges

19 years, 331 days
Ontario, Canada

Social Networks and Content at Maplesoft.com

MaplePrimes Activity


These are answers submitted by acer

Consider your first example. It is not working for the reason you think, I suspect. What seems more likely is that plot3d is receiving as its first argument the list of three scalar expressions in x and y that is returned by the evaluation of se(x,y) where x and y have no assigned values. In this way that call plot3d(se(x,y),x=0..2,y=-2..3) matches a valid and documented calling sequence of the plot3d command.

For your second example plot3d(td(x,t),x=0..2,t=0..3) your should first execute the call td(x,t) and see what it returns. That is what you are passing to the plot3d command here.

The plot3d command, like most Maple commands, follow the so-calling standard evaluation rules of evaluating arguments before they are passed to the procedure.

A procedure (of say two arguments) which returns a list of three elements is not one of the valid calling sequences of the plot3d command. An unevaluated function call, like say the single right-quoted call 'td(x,t)' , which might evaluate to a 3 element list when x and t take on values, is also not a valid calling sequence of the plot3d command.

For Question 1:

Depending on your specific architecture hyperthreading may or may not interfere with  the efficiency of Grid computations.

You could see what happens if you disable hyperthreading in your machine's BIOS.

One scenario in which the derivatives appearing in the prettyprinting of a "Vector" do not get formatted in dot-notation is when it is handling a VectorCalculus:-Vector. I don't see mention of that package in your Question.

If you are using the global constructor :-Vector when you use the shortcut <...> (by virtue of not having loaded VectorCalculus, say) then it seems to work OK in Maple 2016.2. See attachment.

If you do indeed want VectorCalculus loaded and/or want its results to be prettyprinted with dot-notation, then you could get dot-notation for its "Vector" results by wrapping them in the command :-Vector(...) . That would give you the BasisFormat(false) appearance. I don't see any easy way to get the dot-notation displayed in the BasisFormat(true) style in Maple 2016.2.

usedot20162.mw

 

Your posted example suffers from computational issues (e.g roundoff error), rather than a display-driver problem.

Short workaround:

restart;
CodeTools:-Usage( plot(x->eval(evalf[20]((1-x)^(10^9))), 0..10^(-15)) ):
memory used=6.48MiB, alloc change=33.00MiB, cpu time=36.00ms, real time=39.00ms, gc time=0ns

Usually a more natural way to deal with such an issue is simply to raise Digits at the level at which you are calling plot. But, as seen at the end of the following code, there are some unexpected issues with that approach for your example as given.

(Link to the attached worksheet is at the end.)

restart;

# This is the simplest workaround I know to the computational
# difficulties and bugs under the `plot` code here.
#
# You can read all the material later on, for details. The
# essence is that we seem currently stuck between these choices:
#
# A) Allow `evalhf` mode.
# B) Disable `evalhf` mode but then get stuck within `plot/adaptive/drive`.
#
# Since B) goes away for a very long time, we'll have to use A).
# Since `evalhf` now allows one to raise `Digits` within a procedure (but then
# ignores it!) we'll have to use `eval` to escape the procedure and make its
# own forcing call to `evalf[25]` with higher working precision.

plot( proc(x)
        eval(evalf[25]( (1-x)^(10^9) ));
      end proc,
      0..10^(-15) );
            

restart;

interface(rtablesize=20):
N:=19;

19

# Let's attempt to force higher working precision by:
#
# 1: Using so-called operator/procedure form for the thing to plot.
# 2: Setting `UseHardwareFloats` to `false`.
# 3: Raising Digits within the procedure to be plotted.
#

G:=proc(x) Digits:=25; (1-x)^(10^9); end proc:

G(1e-11);

# Note that the following does not produce an error from `evakhf`,
# even though G contains a line which assigns to Digits.
# That became possible some major releases ago.

evalhf( G(1e-11) );

.9900498337491185510822182

.990049832929947637

# Something to investigate late on is whether the following computes
# the plot data under `evalhf` or not!

Digits:=15:
UseHardwareFloats:=false:

P:=plot(G, 0..10^(-15), adaptive=false, numpoints=N):
P;

W:=op([1,1],P);

_rtable[18446883879575052646]

#Let's create the Vector of independent data ourselves;
#
# This is perhaps the simplest workaround to the problem under discussion.

V:=Vector(N,(i)->evalhf(0+(1e-15-0)*(i-1)/(N-1)),datatype=float[8]):
Y:=Vector(map( proc(x) Digits:=25; (1-x)^(10^9); end proc, V), datatype=float[8]):
<V|Y>;

plot(<V|Y>);

_rtable[18446883879575060838]

# So it's a little weird that the independent data is not evenly spaced,
# while we forced `adaptive`=false and `numpoints`.
#
# But that doesn't seem to be the problem. The problem is that the
# dependent data in the bad PLOT doesn't seem to match what we get when
# we apply the very same procedure to its independent data.
#

# Let's take the independent data (first column) in the bad PLOT
# structure and compute the dependent data from it (at higher precision).
#
# The compare this with the original bad plot.

U:=Vector(map( proc(x) Digits:=25; (1-x)^(10^9); end proc, W[..,1]), datatype=float[8]):
W[..,2], U;

plots:-display(plot(<W[..,1]|U>,color=green), plot(<W[..,1]|W[..,2]>,color=red) );

Vector(19, {(1) = 1., (2) = .99999988897770375, (3) = .99999988897770375, (4) = .99999988897770375, (5) = .99999977795541972, (6) = .99999966693314812, (7) = .99999966693314812, (8) = .99999966693314812, (9) = .99999955591088874, (10) = .99999944488864179, (11) = .99999944488864179, (12) = .99999944488864179, (13) = .99999933386640705, (14) = .99999922284418474, (15) = .99999922284418474, (16) = .99999922284418474, (17) = .99999911182197476, (18) = .99999911182197476, (19) = .99999900079977699}), Vector(19, {(1) = 1., (2) = .99999994187425734, (3) = .99999989129936195, (4) = .99999983442260587, (5) = .99999977716883703, (6) = .99999972018718852, (7) = .99999966735790924, (8) = .99999961265625337, (9) = .99999955608372570, (10) = .99999949969263013, (11) = .99999944168746024, (12) = .99999939059647791, (13) = .99999933308013567, (14) = .99999927532762922, (15) = .99999921967239114, (16) = .99999916913210574, (17) = .99999910903482137, (18) = .99999905812454137, (19) = .99999900000050002})

# This "runs away" inside `plot/adaptive/driver`.
# But surely it should even get there, because we supply `adaptive`=false and `numpoints`.
#
# I suspect that the control code is mistakenly dispatching to `plot/adaptive/driver`
# when it encounters the following error while trying `evalhf` mode.
#
# nb. The lists creation in this procedure is there to make `evalhf` emit an error.
#
# I'll submit a bug that it's going in to `plot/adaptive/driver` at all.

F := proc(x) Digits:=25; []; (1-x)^(10^9); end proc:
F(1e-10);

evalhf(F(1e-10));

.9048374180314353860737790

Error, unable to evaluate expression to hardware floats: []

# This now runs amok and requires computation to be interrupted.

plot(F, 0..10^(-15), adaptive=false, numpoints=N):

Warning,  computation interrupted

restart;

# Similarly, it also runs amok (again, within `plot/adaptive/driver` even
# though we supply `adaptive`=false and `numpoints`) with the following.
#
# This too requires computation to be interrupted.
#
# I'll submit a bug that it's going in to `plot/adaptive/driver` at all.

Digits:=25:

plot( x->(1-x)^(10^9), 0..10^(-15), adaptive=false, numpoints=19):

Warning,  computation interrupted

 

 

plotprob.mw

The attached worksheet contains code (in its Startup Code Region) which will programatically embed an animation (or a sequence of plots) in a Plot Component along with control buttons.

It also provides an example using an option to automatically play the animation when embedding it.

I created this is Maple 2017.2, but it seems to work also in Maple 2015.2 (but it won't work in Maple 18.02 or older, as is).

embedanim01.mw

[edited] Here's a revision with a few more bells and whistles such `width` and `height` options, suppression of Table borders, scaling/zooming (useful for constrained 3D plots),  and examples with suppression of the button controls.

I removed use of the OrthogonalExpansions package, so someone without that could still run the sheet.

embedanim02.mw

 

I'm not really sure what you are trying to obtain.

But is it something like any of these (inside a plot call)?

labels=["x",typeset(Beta[0]=2.345*10^(-``*9)/Unit(cm^3))]
labels=["x",typeset("y", [2.345*10^(-``*9)/Unit(cm^3)])]
labels=["x",typeset(Beta[0]=2.345*10^(-``*9)*Unit(cm)^(-``*3))]

Does the following call (which assigns to res) get you what you want?

restart;

kernelopts(version);

`Maple 16.01, X86 64 LINUX, May 6 2012, Build ID 744592`

result_of_int := int((-5+3*x)^2/(2*x-1)^(7/2),x):

res := cat("",`latex/print`(result_of_int));

"-1/5\,{\frac {41-80\,x+45\,{x}^{2}}{ \left( 2\,x-1 \right) ^{5/2}}}"

printf("%s", res);

-1/5\,{\frac {41-80\,x+45\,{x}^{2}}{ \left( 2\,x-1 \right) ^{5/2}}}

latex(result_of_int);

-1/5\,{\frac {41-80\,x+45\,{x}^{2}}{ \left( 2\,x-1 \right) ^{5/2}}}

 

Download latex16.mw

 

I have some evidence that the result might be approximately -1.413e14  (obtained in about 6 minutes on a fast machine). I have to rush off, but I'll try and upload details, after a few more checks, hopefully this evening.

There have been many reports over the years from Danish students who have encountered worksheet/document corruption problems. I assembed a list a while back, and added it here.

There appears to be at least two sorts of problem:
1) entire loss of content, with saved .mw file becoming all null characters.
2) chopped XML in the .mw file, where the GUI does an imcomplete job of closing all tags reasonably when re-opening. (This can often be ameliorated by editing with a separate program by an expert, to recover more from the trailing chopped portion.)

I have previously submitted the whole set of links as a bug report. I'll also submit this (and another from a week or so ago).

Mapleprimes seems to see such reports soon after the start each school year, as new students get their assignments.

I don't know whether there is one or more causes. Use of Danish characters seems a likely culprit, but clearly that is difficult for the students to avoid. But I have also noticed that many of the "repairable" chopped worksheets contain several very large images, constructed and edited inplace with the drawing canvas functionality of the GUI. I suspect that those large canvas structures may trip up the GUI when saving. It's unclear.

Here is a suggestion for the Danish students. First, turn off auto-save, but save frequently. Save each time to a new and distinct file name, where I mean distinct from all previously saved instances. Each time you save, double-check that the newly saved document is not corrupted, by doing by Close and then re-Open on it. I realize that this would involve a great deal more effort.

expr:=-((-(1/20)*sqrt(5)-1/20)*cos((1/5)*Pi)-(1/20)*sqrt(2)*sqrt(5-sqrt(5))           
      *sin((1/5)*Pi))*24^(1/5)*5^(3/5)-I*((1/20)*sqrt(2)*sqrt(5-sqrt(5))*cos((1/5)*Pi)
      +(-(1/20)*sqrt(5)-1/20)*sin((1/5)*Pi))*24^(1/5)*5^(3/5):
                       
simplify(abs(simplify(expr)));

                            3/5   1/5
                           5    24
                           ----------
                               5

Having said that, Markiyan's suggestion to convert first to radical does very well here. Several commands will produce the short positive radical result for that even without use of the abs command.

simplify(convert(expr,radical));

                             1/5  3/5
                           24    5
                           ----------
                               5

radnormal(convert(expr,radical));

                             1/5  3/5
                           24    5
                           ----------
                               5

evala(convert(expr,radical));

                             1/5  3/5
                           24    5
                           ----------
                               5

This is slightly awakward, and I wouldn't be surprised if there is a much simpler way, but...
 

restart;

kernelopts(version);

`Maple 14.01, X86 64 LINUX, Oct 15 2010, Build ID 535952`

f[0] := sin:

plot( f[0](x), x=-2..2,
      labels=["x",`#mrow(msub(mn("f"),mn("0")),mfenced(mn("x"))`] );

K:=(expr::uneval)->subs(Typesetting:-mi=Typesetting:-mn,
              Typesetting:-mo=Typesetting:-mn,
              Typesetting:-Typeset(expr)):

plot( f[0](x), x=-2..2,
      labels=[K(x), K(f[0](x))] );

plot( f[0](x), x=-2..2,
      labels=[K(x), K(f[0](x))],
      labelfont=["Times", bold, 11] );

 

 

Download upright.mw

restart;

kernelopts(version);

   Maple 2016.2, X86 64 LINUX, Jan 13 2017, Build ID 1194701

SolveTools:-SemiAlgebraic( {x^2+y^2+z^2 = 3, x+y+z = 3} );

                    [[z = 1, y = 1, x = 1]]

solve( {x^2+y^2+z^2 = 3, x+y+z = 3}, real, parametric, allsolutions );

                    [[z = 1, y = 1, x = 1]]

[edit] As for unloading the RealDomain package, try calling,

unwith(RealDomain);

Note that the RealDomain package also exports things like `^`, so it matters if you constructed expressions before you unloaded the package. You can also force use of the so-called global commands, even when that package is loaded, using the colon-dash syntax. (It can get hard to read, though.)   RDstuff.mw

I've been meaning to put this into a Maple 2017 cloud-package, after clean-up, re-factoring, and adding a Help page.

But attached below is a Document with your example.

The code which does the "degree-polar" stuff in in the Startup Region of the Document.

(I have to make some more adjustments, I see, since while revising to handle units in this "version" of it I've managed to make it lose some float-contagion. That just means that it keeps turning floats into exact rationals when combining the quantities. That's why I use evalf below. You could also use the right-click content-menu item "Approximate" when you want to turn results into float approximations. Earlier versions were here.)

In Maple 2017's GUI itself the units display more nicely.

restart

interface(displayprecision = 5)

with(Phasors)

[`&angle;`]

Units:-UseUnit(Unit('Omega'))

L := 200*`&angle;`(Unit('mH'), 90)

_m140617803301152

C := 100*`&angle;`(Unit('`&mu;F`'), 90)

_m140617802022272

R := 30*`&angle;`(Unit(Unit('Omega')), 0)

_m140617800529312

U := 230.0*Unit('V')

230.0*Units:-Unit(V)

f := 50*Unit('Hz')

50*Units:-Unit(Hz)

XL := evalf(2*Pi*f*L)

_m140617828414208

XC := simplify(evalf(1/(2*Pi*f*C)))

_m140617817951904

Z := R+XC+XL

_m140617809542272

``


Download degreepolarexample.mw

 

Perhaps one of these two (similar) approaches would work for you.

(Sorry, Mapleprimes doesn't seem to want to inline this attachment).

cross.mw

for i from numelems(arr) to 1 by -1 do
    # do something
end do

Or,

for i from numelems(arr) while i>0 by -1 do
    # do something
end do
First 191 192 193 194 195 196 197 Last Page 193 of 336