acer

32323 Reputation

29 Badges

19 years, 316 days
Ontario, Canada

Social Networks and Content at Maplesoft.com

MaplePrimes Activity


These are replies submitted by acer

@MapleUser3214 You didn't state before that you wanted them in an array. That's not quite the same as having two plots printed serially.

Please provide a complete example of the actual kinds of non-empty plots that you want to look better in some array configuration, and the grouping command currently attempted (and which exhibits the problem).

 

@Kitonum Shorter is the following (and related variants),

    collect(expr, exp, simplify);

But these are techniques appropriate to only a subclass of problems, and are also ad hoc in that the collected terms (here, exp calls) are manually chosen. They don't address the matter of whether desired trig-only simplifications can in general be attained without some measure of factoring/expand that the OP seems to wish to avoid.

@nm You have provided a different example from your original Question.

A similar approach may be take, for `*` as was done for `^`.

restart;

TypeTools:-AddType('specprod',(e,etype,ptype)->type(e,{etype,'`*`'({etype,ptype})}));

type(2*sin(x), 'specprod(specfunc(sin),anything)');

            true

type(sin(x), 'specprod(specfunc(sin),anything)');

            true

This could be used together with the earlier auxiliary type (for `^`) from my Answer. For example,

restart;

# Once these are done, we may add further new types which
# utilize them.
TypeTools:-AddType('specprod',(e,etype,ptype)->type(e,{etype,'`*`'({etype,ptype})}));
TypeTools:-AddType('specpow',(e,etype,ptype)->type(e,{etype,etype^ptype}));

# For example,

TypeTools:-AddType('my_type',
                   'specprod'('specpow'(specfunc({sin,cos}),rational),rational));

type(cos(x), my_type);

            true

type(sin(x)^(3/2), my_type);

            true

type(cos(x)*sin(x), my_type);

            true

If you wanted you could do a similar thing for `+`.

You could call those auxiliary types something else. Perhaps something that didn't look at all like "specfunc" might be less confusing. It's your choice.

@mmcdara I'm not entirely sure I understand where you're going here. Allowing arithmetic operators to be used directly in composing/constructing operators provides for a richer yet also legible syntax. I suppose one could call that a concession of sorts..

@mmcdara I'm afraid that you have missed the main point, and your results are incorrect.

If one is going to work with the result from computing the integral at a symbolic name for upper endpoint then working precision needs to be at least as high as 24 prior to both performing that integration as well as calling plot. Here is one simple way to revise your worksheet, to illustrate my point: PrecisionIssue_ac.mw

However, there are several other interesting aspects, even on top of that corrected approach. There are actually at least three ways to compute the plot with decent accuracy, and the hit-and-miss raising of Digits is only one of them. They include:
1) the fact that exact lowercase symbolic int actually produces accurate results here (using even default-precision float coefficients for the integrand) using exact methods carefully after it detects the floats. That's what happens in my Answer's two suggestions, to use operator form or to delay evaluation (until the passed argument is actually numeric).
2) Forcing purely numeric integration, which happens to work decently accurately here even at its defaults.
3) Raising working precision (eg. Digits>=24) prior to an allowed computation of the integral at a symbolic name for its upper endpoint.

Number 3) is my least favourite, because a better/adequate choice of Digits was found by experiment. (Using shake/evalr/whatever to programmatically ascertain a minimally working precision would take me much longer than trial-and-error...)

Here is my analysis and details which I promised earlier, and examples of the various approaches outlined in the bullet points immediately above.

int_q_details.mw

@BenOve I'm away from a computer, today. But I do have more explanatory details to add, and I'll do so soon. Thanks for your patience.

Why post this followup query as a new Question thread, instead of adding it to your earlier Question here? Now all the details from the two threads are unnecessarily split, and readers and answerers in one thread may miss content from the other. (If you want to avoid cluttering the earlier thread then you ought to have been able to use its Question's Branch link. That automatically adds cross-reference note and url.)

Also, recall that in your previous Question there was a problematic ambiguity in use of the term "extract". That denotes that the pieces are to be taken out (ie. extracted) as separate items (as indets does). But in your earlier thread you later accepted responses which utilized select/remove so that the result was still a sum, or the accepted terms. So which do you want here, the accepted items separately, or a sum of with only the accepted terms remaining? 

Please don't post duplicates of this in separate Question threads. If you have followup examples then you can simply add them here as a Reply to the original.

(I have just deleted a duplicate thread that had the same kind of error message due to the same kind of problem -- which is addressed below.)

@lekcha Please see the attachment.

One simple approach is (as I mentioned before) to ensure that fs and de had values prior to entering your while-do-loop, so that the conditional could actually be tested on the first iteration. (I did not implement an alternative of using until instead of while.)

I also cleaned up some things: making f1 be computed inside your procedure, allowing the working precision, maximum allowed iteration, and tolerance to be passed in as options (with some defaults), fixing what you had as "n" for part of the return, adding all the iterates to the return, etc.

Also, you were making no use of the second derivative f2, so I commented out the double-application. Perhaps you are intending to fix up the formula (for Newton's method, making use of both f1 and f2 appropriately).

lekcha_ac.mw

 

@Frankoldstudent Please see the following attachment, in which I make another attempt to explain the fact that action-code of Embedded Components will never directly change or replace previously displayed regular/usual output.

In the attachment I include two additional components which are dynamically changed by the slider's action-code: a math container, and another math-container with its borders hidden.

CreatingSlider_ac_ac_ac.mw

Note that new values may be programmatically assigned to a variable (such as the name `a`), which is a description of how the Maple computational engine stores things in memory. That is not the same as the various ways (some more dynamic, and some more of a snapshot in time) in which a value can be displayed/printed/used-programmatically at some given moment.

[edit] An analogy: Two days ago a bank balance was written down on a piece of paper. Yesterday a mortgage payment was made from the account. The value in the account really has changed, but the piece of paper doesn't show that. Fancy online banking apps might be able to show the running value, dynamically, as they update. But the value written down on the piece of paper is static (unless I erase/overwrite it manually). The banking apps are more like the embedded components. The piece of paper is more like usual output in a worksheet.

note. You keep attaching your Replies (to me) onto your original Question, instead of my Answer. I keep moving them, approppriately.

@Frankoldstudent The value assigned to `a` does also change when you move the slider. That's one of the two things that my example does.

If you re-execute the line that (previously) printed a prior value of `a` then it should reflect that last attained position of the slider -- when it subsequently prints the current value.

But the previously printed output of that same input line is static output, in the sense that it won't change unless you also re-execute that separate input line (or delete the output).

That's why I also included a textarea component, to illustrate how the running values of the slider may be used to dynamically update other embedded components.

The action-code of embedded components may also alter the appearance of other embedded components (Text Area Component, Math Expression Component, etc). But action-code of embedded components don't alter regular output that has been printed already to the worksheet.

That is also related to why I mentioned that the action-code of the slider may pass the running slider value to some other command (eg. a procedure that you have written yourself, or another stock command).

@Marvin Ray Burns Please do not repost reformulations of your results here, in a separate Post.

Could you lprint it, in Maple, and the copy that?

Hello Andreas, was this posting in another forum by you, or by someone else? Thanks.

It might be useful if you could mention your OS platform, whether this happens in a fresh session, whether it is using a 1D plaintext command or a context-menu action on 2D input or output, and whether you have any special Maple commands in personal initialization file.

@mmcdara I think the scenario you describe is esoteric and unlikely to represent this case.

If the Questioner merely wants the intersecting dashed lines using values 0.5, 1.0, 1.5 for `t` then a straightforward, usual, easy and accurate way to find the corresponding intersection points is to simply evaluate at those values (using whatever made tha smooth plot).

There is, as yet, no evidence that your esoteric scenario applies here. If a formula or function/operator for the curve is available (very common, no evidence yet to the contrary) then using a copied point-probe is relatively poor. It would fail to provide instruction in common and reusable Maple usage skills.

The dashed lines get produced and added programmatically, regardless.

First 128 129 130 131 132 133 134 Last Page 130 of 591