using the Root function with Algebraic and RPL

I am attempting to learn some of the finer but simple details of the

HP50g.

The calculator mode is set to rpn.

I have created 2 objects:

A << X X * 1 - >> according to the manual this is type 8 object in

User RPL language

and

B ' X^2-1' according to the manual this is a type 9 algebraic object

The numeric solver (item 4 under apps then item 1 solve equation)

readily finds the 2 roots of -1 and 1 for both A and B.

Then I used the graph function to graph A and B one at a time. First

I deleted the X object created by the numeric solver.

Both show the correct graph but the RPL example (graph A) has a

difference. When I use the graph functions Root and Isect they

cannnot find a root. The message constant? is displayed for both Root

and Isect.

The plot setup is set to function and the independent variable is set

to X.

Do I have another setting set incorrectly or is there a deeper meaning

here?

Any insight would be much appreciated.

Randy

Re: using the Root function with Algebraic and RPL

On Tue, 15 Jul 2008 11:59:37 -0500, Randy wrote:

[color=blue]

> I am attempting to learn some of the finer but simple details

> of the HP50g.

>

> The calculator mode is set to rpn.

>

> I have created 2 objects:

>

> A \<< X X * 1 - \>>according to the manual this is type 8 object in User RPL language

>

> and

>

> B 'X^2-1' according to the manual this is a type 9 algebraic object

>

> The numeric solver (item 4 under apps then item 1 solve equation)

> readily finds the 2 roots of -1 and 1 for both A and B.

>

> Then I used the graph function to graph A and B one at a time.

> First I deleted the X object created by the numeric solver.[/color]

That's a very good precaution, but just for everyone's info,

the graphing functions employ a neat trick,

creating their own private 'X' anyway,

even if it is a duplicate of an existing variable,

and when they conclude, they will delete their own variable,

leaving either an original 'X' or no 'X' just as before,

which is intended to make them completely independent

of any pre-existing "independent variable."

[color=blue]

> Both show the correct graph but the RPL example (graph A)

> has a difference. When I use the graph functions

> Root and Isect, they cannnot find a root.

> The message constant? is displayed for both Root and Isect.[/color]

This might be a good point to re-inspect EQ and PPAR.

[color=blue]

> The plot setup is set to function

> and the independent variable is set to X.

>

> Do I have another setting set incorrectly

> or is there a deeper meaning here?[/color]

Starting with default setup (no existing 'PPAR'),

I've tried each of the following separate plots:

\<< X X * 1 - \>> STEQ ERASE DRAX DRAW PICTURE

and

'X^2-1' STEQ ERASE DRAX DRAW PICTURE

Both plots find ROOTs for me.

Could you supply detailed steps for reproducing exactly what you are doing?

Best wishes.

[r->] [OFF]

Re: using the Root function with Algebraic and RPL

On Jul 15, 5:32*pm, "John H Meyers" <jhmey...@nomail.invalid> wrote:[color=blue]

> On Tue, 15 Jul 2008 11:59:37 -0500, Randy wrote:[color=green]

> > I am attempting to learn some of the finer but simple details

> > of the HP50g.[/color]

>[color=green]

> > The calculator mode is set to rpn.[/color]

>[color=green]

> > I have created 2 objects:[/color]

>[color=green]

> > A *\<< X X * 1 - \>>according to the manual this is type 8 object in User RPL language[/color]

>[color=green]

> > *and[/color]

>[color=green]

> > B 'X^2-1' *according to the manual this is a type 9 algebraic object[/color]

>[color=green]

> > The numeric solver (item 4 under apps then item 1 solve equation)

> > readily finds the 2 roots of -1 and 1 for both A and B.[/color]

>[color=green]

> > Then I used the graph function to graph A and B one at a time.

> > First I deleted the X object created by the numeric solver.[/color]

>

> That's a very good precaution, but just for everyone's info,

> the graphing functions employ a neat trick,

> creating their own private 'X' anyway,

> even if it is a duplicate of an existing variable,

> and when they conclude, they will delete their own variable,

> leaving either an original 'X' or no 'X' just as before,

> which is intended to make them completely independent

> of any pre-existing "independent variable."

>[color=green]

> > Both show the correct graph but the RPL example (graph A)

> > has a difference. *When I use the graph functions

> > Root and Isect, they cannnot find a root.

> > The message constant? is displayed for both Root and Isect.[/color]

>

> This might be a good point to re-inspect EQ and PPAR.

>[color=green]

> > The plot setup is set to function

> > and the independent variable is set to X.[/color]

>[color=green]

> > Do I have another setting set incorrectly

> > or is there a deeper meaning here?[/color]

>

> Starting with default setup (no existing 'PPAR'),

> I've tried each of the following separate plots:

>

> \<< X X * 1 - \>> STEQ ERASE DRAX DRAW PICTURE

>

> and

>

> 'X^2-1' STEQ ERASE DRAX DRAW PICTURE

>

> Both plots find ROOTs for me.

>

> Could you supply detailed steps for reproducing exactly what you are doing?

>

> Best wishes.

>

> [r->] [OFF]- Hide quoted text -

>

> - Show quoted text -[/color]

Thanks for your comments and suggestions.

I looked up the commands in your example (steq, erase, drax, draw,

picture) in the manual. Altho I don't have the experience to put

those together myself, their sequence made sense. More importantly, I

was able to repeat your steps and get roots (as expected) for both of

the examples.

So, my steps must have a mistake in them. Basically, the steps are

taken from chapter 12 (graphics) in the manual.

These steps are: configure plot setup (2d/3d button), configure plot

window (win button), configure plot function (Y= button)

I don't think I changed anything under 2d/3d or win. Type is set to

function and independent variable is set to X.

Starting without Eq, Ppar, or y1, y2, ... in the var list, the steps

under Y= are:

choose Add

the 50g responds with Y1(X)=

I enter A to make the line look like Y1(X)=A

Erase

Draw

fcn

root

constant?

One of your suggestions was to examine the contents of eq and ppar.

And, I will add y1 to the list.

eq = Y1(X)

y1 = << right arrow X 'A' >>

ppar - I see no difference between the contents of your example and my

example

the contents of eq in your working example IS different: eq = << X X

* 1 - >> perhaps this is a clue

I repeat this same set of steps above for the var B (X^2-1) which does

find the roots.

In this case :

Y1 = << right arrow X 'B" >>

eq = Y1(X)

ppar - I see no difference in the values between the examples

So, looks like the difference is somewhere in my set of steps.

Randy

Re: using the Root function with Algebraic and RPL

On Wed, 16 Jul 2008 08:38:51 -0500, Randy wrote:

[color=blue]

> Basically, my steps are taken from chapter 12 (graphics) in the manual..[/color]

[color=blue]

> These steps are: configure plot setup (2d/3d button), configure plot

> window (win button), configure plot function (Y= button)[/color]

We can reproduce it:

\<< X X * 1 - \>> 'A' STO

In "Y=" window, press ADD and enter 'Y1(X)=A'

Press ERASE and DRAW; the graph is correctly drawn.

If we press TRACE, the graph can be correctly traced.

FCN followed by ROOT or ISECT, however,

may result in no solution ("Constant?")

Looking at the user variables which were created

by the "Y=" window, we find:

'EQ' contains 'Y1(X)'

'Y1' contains \<< \-> X 'A' \>>

'A' contains \<< X X * 1. - \>> (as we created it)

The menu solver (30 MENU) and ROOT command

also find similar difficulties solving this 'EQ',

even if we "bracket" a root

by pre-storing "guesses" { .9 1.1 } into 'X'

In fact, even 'A' 'X' 0 ROOT fails here

(sometimes giving _wrong_ answer 0.

and other times "Error: Constant?")

while \<< X X * 1. - \>> 'X' 0 ROOT works fine

(this seems to isolate the central problem).

Note that the solver's "EXPR=" menu key

does evaluate 'EQ' properly, however,

for any individual stored real value of 'X'

including .9 and 1.1,

further heightening the discrepancy

as to why the solver can not find the root(s).

If we replace 'A' with 'X^2-1', however, then everything

(both graphical root and solver) works fine.

Have we done anything wrong?

I would say that no, we have not.

To illustrate why not, let's store the identical

'EQ' and 'Y1' and 'A' shown above into variables on an HP48G[X],

and try both the graphical and menu solvers,

which seem the same, so far as we know,

on all HP48/49/50 calculators.

Well, on the HP48G[X], they all work fine,

as do both 'A' 'X' 0 ROOT and \<< X X * 1. - \>> 'X' 0 ROOT

even when 'A' contains a program, rather than a formula.

We can even compare the content of the variables,

using the SysRPL viewer on each calculator,

and they will be found exactly the same.

I've also tried flipping flag -3 each way in both calculators,

observing no difference in either case.

The fact that in the full 'Y1(X)' case

an extra "local" variable 'X' is created

(but never used by the program, nor by its algebraic equivalent,

where the latter works anyway) seems completely irrelevant,

particularly since trying 'A' 'X' 0 ROOT directly

bypasses all that, yet still fails when 'A' contains a program.

That's as far as I've progressed; suspicion seems to fall

upon how ROOT internally evaluates its expression (or variable),

given what's been observed.

We can sidestep the entire problem, of course,

by directly storing our program into 'EQ'

instead of 'EQ' evaluating 'Y1'

then 'Y1' invoking 'A'

which finally contains our program

(which apparently was fine on the HP48S[X]/G[X] anyway,

before those were remodeled into the HP49/50 series with CAS).

I didn't find this reported on [url]http://bugs.hpcalc.org/[/url]

after a quick search on "root" (not that any further action

would ever arise from it now, even if it had earlier been reported);

too bad Randy hadn't been here while bugs were still being worked on :)

[r->] [OFF]

Re: using the Root function with Algebraic and RPL

Previously:

[color=blue]

> We can reproduce it [apparent bug on HP49/50 series]

>

> \<< X X * 1 - \>> 'A' STO

>

> In "Y=" window, press ADD and enter 'Y1(X)=A'

>

> Press ERASE and DRAW; the graph is correctly drawn.

>

> If we press TRACE, the graph can be correctly traced.

>

> FCN followed by ROOT or ISECT, however,

> may result in no solution ("Constant?")[/color]

[whereas it's fine on original HP48[S/G] series]

Here's how to pacify the HP49/50 series' CAS:

\<< \-> X \<< X X * 1 - \>> \>> 'A' STO

In "Y=" window, press ADD and enter 'Y1(X)=A(X)'

Now you can both graph _and_ numerically solve (ROOT, ISECT).

Why did the CAS butt in to mess with the _numeric_ root finder,

particularly when there was even nothing algebraic whatsoever involved?

I.E. even 'A' 'X' 0 ROOT worked on HP48S/G

but failed on HP49/50 in the original case;

after above modification of 'A' we must instead try

'A(X)' 'X' 0 ROOT (now pacified, even on HP49/50)

[r->] [OFF]

Re: using the Root function with Algebraic and RPL

On Jul 17, 7:10*pm, "John H Meyers" <jhmey...@nomail.invalid> wrote:[color=blue]

> Previously:

>[color=green]

> > We can reproduce it [apparent bug on HP49/50 series][/color]

>[color=green]

> > \<< X X * 1 - \>> 'A' STO[/color]

>[color=green]

> > In "Y=" window, press ADD and enter 'Y1(X)=A'[/color]

>[color=green]

> > Press ERASE and DRAW; the graph is correctly drawn.[/color]

>[color=green]

> > If we press TRACE, the graph can be correctly traced.[/color]

>[color=green]

> > FCN followed by ROOT or ISECT, however,

> > may result in no solution ("Constant?")[/color]

>

> [whereas it's fine on original HP48[S/G] series]

>

> Here's how to pacify the HP49/50 series' CAS:

>

> \<< \-> X \<< X X * 1 - \>> \>> 'A' STO

>

> In "Y=" window, press ADD and enter 'Y1(X)=A(X)'

>

> Now you can both graph _and_ numerically solve (ROOT, ISECT).

>

> Why did the CAS butt in to mess with the _numeric_ root finder,

> particularly when there was even nothing algebraic whatsoever involved?

>

> I.E. even 'A' 'X' 0 ROOT worked on HP48S/G

> but failed on HP49/50 in the original case;

> after above modification of 'A' we must instead try

>

> 'A(X)' 'X' 0 ROOT (now pacified, even on HP49/50)

>

> [r->] [OFF][/color]

John-

Thanks very much for the detailed discussion, testing results, and

solution.

I was able to modify my variables per your solution and make the

addition using Y=.

Works every time. Also tried a couple other examples as well which

also work.

More importantly, I have learned a lot.

Randy