acer

21403 Reputation

29 Badges

15 years, 111 days

Social Networks and Content at Maplesoft.com

MaplePrimes Activity


These are replies submitted by acer

@Kitonum Perhaps I am missing something.

Why not   -exp(2)-1<x, x<=exp(2)-1  ?

(I don't mean just what solve returns.)

@snowman I just threw that in so that the procedure FF would return unevaluated if called with an argument that was not a number (eg. a name). That allows you to pass around FF(r), with r an unassigned name. It is not necessary here since the procedure returned by Interpolate (and assigned to F) already behaves like that. But when I started writing I didn't know for sure that I'd stick with the Interpolate approach.

The same mostly goes for that try...catch. I didn't know whether I'd need it, and I was suppressing potential difficulties.

Here is a copy of that worksheet which uses just F, and omits FF as wrapper. It works as well.
   polar_densityplot_modif.mw

Btw, I notice a slightly more even color gradient (visually more even, to my eye, at least) if I make the colorscheme progress through the Luv color space rather than the default. Another possibility is to adjust the grid resolution. Your opinion might differ. Eg,

plots:-densityplot(F(r), r=0..1, theta=0..2*Pi,
                   style=surface, axiscoordinates=polar,
                   labels=["", ""], grid=[101,51],
                   colorscheme=["zgradient",["White","Red"],
                                colorspace="Luv"]);

@Kitonum And for,

   simplify(expand(convert(Expr,exp)));

?

Sorry, you may have missed my interim edit, while responding. [edit] I updated it slightly before you posted your response. You might well have been submitting in the brief interim.

@snowman I did not understand before that you meant that f(r,theta) was independent of theta, sorry.

But I don't understand whether the numbers are supposed to relate to your given image. The data has r from 0..1, and f(r,theta) from 0.0..2.9. But your image shows x and y from -200..200 and values from 0.0..0.6.

Are the data and your image directly related? Or is the given image simply an example of a density plot with polar symmetry, but with values otherwise unrelated to your data?

I am going to suppose that the image is merely an example, since for one thing it is not independent of polar angle.

@nm I wrote that the (inner) call to odetest produces zero under the assumption. You have now left out the assumption, which is contrary to what I suggested.

That is the whole point of my answer. You have left out the key part of my answer.

In your first example,
   simplify(odetest(mysol,ode)) assuming x>0
invokes odetest under that assumption.

In your second example you were not calling odetest under the assumption.

That is the difference.

You quoted a sentence out of context. Here are the first two sentences in my Answer:

   "In the first case you are also calling odetest (and not just simplify)
    under the assumption.

    And that produces zero (in my Maple 2020.1 at least) even
    before simplify is called."

The "that" in the second sentence refers to the act (from the first sentence) of calling odetest under the assumption. You quoted the second sentence, ignored the first sentence and the context of "that", and then showed yet another call to odetest without the assumption.

There is nothing strange at all that the whole of the nested call is done under the assumption. This situation is neither uncommon not mysterious.

[edit] These examples are straightforward and normal instances of use of the assuming command, and follow its documentated description.

Please supply the more complete data:

      [r, theta, f(r,theta)]

for each (r,theta) pair.

If not, then it's pretty difficult to accomplish without knowing the f mapping.

@Bland3 I apologize for not being clear before.

I had written to someone about size formatting in pretty-printed subscripting by email, not in this forum. I apologize, as I see now that I gave the wrong impression.

I meant also that I have done several things like this and this old answer, but in greater detail and with some more programmatic flexibility. (The search facilities are so bad on this site, that I too have great difficulty finding some of the other related procedures I've posted on this site for very similar tasks.)

I would like to study your worksheets and requirements and use come up with a decent answer that is programmatically usable. I am just very busy right now.

I would also like to put together the kind of general description and example sheet that you suggest. But I don't know just when I'll have a next opportunity.

@Bland3 I am guessing that one of your requirements is the ability to have the nested sucscripting show with descreasing font sizes. (Coincidentally, I had just showed a method for that to someone else two days ago.)

I have written procedures that allow programmatic control over typesetting expressions (and even mixed math and text). I have done that in Answers in this forum, from scratch, a few times, as has Carl Love. Rather than duplicate the efforts from scratch, it might suffices to find some of the best prior responses, merge, and utilize to handle your own example(s). It'll take me a whirl, to locate and sift through.

Automatically decreasing font size for subscript-nesting might be new, though.

 

Yes, it is possible to do typesetting (within plots, or just as 2D Output) where there is control over the font size and color directly within the expressions and plotting "labels" themselves. (I'm not talking here about any new LaTeX importer, naturally.)  I'll try to come back to this soon, but busy right now...

@Carl Love Perhaps PDF export could be made to work. I don't really know enough to say.

But, even with some warts, I'd still like to get back the old inlining, and have that be the top priority. I especially liked that 1D input lines could be copied properly.

@Carl Love I'm going to try and ping the admins by email, about the worksheet inlining issue. I agree, it is very important to this forum.

My limited understanding is that this site uses (or did use) MapleNet technology for rendering worksheets. I believe that for a long time it was stuck back at an old version of that technology.

I know that there has been improvement to how the Maple Cloud renders worksheets. I would like to see an investment of development in improving this forum, including not only fixing worksheet inlining but improving it also.

I agree with you, that hearing different points of view on topics like this Question can help understanding. I'm glad you answered.

@Carl Love Yes, your examples and explanation reproduces most of what I had in my attachments and comments.

There is one minor wrinkle which your posted code does not account for, directly. The OP's goal is to call his ValveLaminarMassFlow_proc once more, at the computed root, and take the second value from its return value (of an expression sequence). His original choice was to make f an easy mechanism to get that value too. Hence my followup suggestion (in which like you I too had made f return unevaluated using 'procname' when x was not of type numeric) to allow f to accept the index as second argument. And I had it return both arguments in the unevaluated 'procname' call, to preserve the call appropriately.

There is one more wrinkle which I avoided describing in detail. The problem with premature evaluation of the call f(x) (within the original f(x)[1]=x argument passed to fsolve) can usually also be accomodated using uneval quotes. That works in the OP's worksheet if Units:-Simple is not loaded, but does not work directly if it is loaded. I didn't think that it would be to the OP's great benefit to discuss that problem variant in gory detail.

@rquirt Here are some more details.

Premature evaluation of a function call -- when passed as an argument to another procedure -- is a frequently encountered difficulty for new users. The error you encountered is common enough that it got its own Help page.

If you click on the magenta error message (which is in fact linked, as a URL) in your Document then your web browser can take you directly to this web page.

There are a number of straightforward ways that can usually be utilized to work around the issue. Some are described on that web page.

Another important workaround method is to rewrite your procedure f so that it returns unevaluated when its own passed argument x is not of type numeric. In other words, to rewrite f so that the call f(x) returns just f(x) itself, when x is just a name. Here is that approach, done for your Document.
   fsolve_if_then_not_evaluating_in_proc_ac_numeric.mw

Note that I also put the indexing of the expression sequence results from ValveLaminarMassFlow_proc inside procedure f, to prevent some internal confusion due to having Units:-Simple loaded.

[edit] I amended this, to make the indexing be done using an additional parameter on the f procedure. This allows f(answer, 2) to return 123.4183429 where answer is the root obtained from fsolve.

@grad_stu These names are options to the kernelopts command, which describes them to some extent.

Yes, the Help page for the CodeTools:-Usage command doesn't describe the terms very well (though it does have a cross-reference to kernelopts).

The call kernelopts(bytesalloc) provides a snapshot.

In modern Maple a garbage collection can sometimes free memory back to the OS. Since CodeTools:-Usage reports a start-to-end difference for bytesalloc the number reported may be negative in the case that more memory was freed than allocated during the computation.

Peak memory allocation is one possible way to represent OS memory use, but it's not the only meaningful number and it certainly doesn't tell a complete story about allocation over the duration of a computation. No single number can.

 

@adel-00 I will mention that -- because your code has no comments, and you gave no description -- I have very little idea what it's supposed to do.

In particular, lines such as,
    sum1[n]:=2*(L[n]+sum1[n-1])/3;
seem strange to me. I suspect that it doesn't do what you think it does, because the 2/3 factor is multiplied repeatedly against the earlier L[i] values. It's not just a simple summation.

So I'm going to exclude any multiplicative factors below. You can put them in, if you're certain you know what they mean and do.

You don't have to add up (all, or just some) of the L[i] while inside the loop. You can easily do that afterwards as well, using whatever formulas you choose. For example,

#odds := seq(2*n-1, n=-4..5);
for i from -4 to 5 do
  sumodd[i] := add(L[2*n-1], n=-4..i);
end do:

#plot([seq([d[i], Re(sumodd[i])], i=-4..5)],color=black);

#evens := seq(2*n, n=-5..5);
for i from -5 to 5 do
  sumeven[i] := add(L[2*n], n=-5..i);
end do:

#plot([seq([d[i], Re(sumeven[i])], i=-5..5)],color=black);

new_acc.mw

It's not clear (to me) that any of the code is doing what you expect. I suggest you go over it carefully.

1 2 3 4 5 6 7 Last Page 2 of 450