HP Prime and Strings



Post: #6

Since the HP Prime is able to handle strings, is it possible to take strings and convert them into functions? I know back in the TI-85 there was such a command. Does/will the HP Prime have the ability to ask users to input a function to be used as a symbolic object like equations in the HP48 series?

I tried using the INPUT command but it seems to only accept numerical inputs.


Post: #7

What I found to be the most successful is to pass functions as strings as arguments. Example:


\\ calculate the numerical derivative of f(X) at X = N

EXPORT NDER(str1, N)
BEGIN
X:=N + .000001;
D:=EXPR(str1)
X:=N - .000001;
D:= D - EXPR(str1);
D:= D/(.000002);
RETURN D;
END;

EXPR - numerical evaluation of the string with the appropriate variables substituted.

f(X) = 3*e^X - 3*X^2. Find f'(1).

NDER("3*e^X - 3*X^2",1) returns 2.15484.

We could also use strings to store functions into graphing functions or equations. Example: "3*X+4" - > F1

Hope this helps, Eddie

Post: #8

Quote:
I tried using the INPUT command but it seems to only accept numerical inputs.

INPUT allows all type of argument but you have put the right delimiters:

" "

[ ]

{ }

etc.

be carefull that A..Z variables are only numericals

The INPUT command is very powerfull (default value, on line help ...)


Post: #9

Could you give me an example of how to ask the user to enter in a function that can be used as a function? Ideally I would like to have something like:

f(x,y)=

and have the user enter in a formula that can be used later on.

Post: #10

Here is an example of a Newton method that uses a string parameter sFx to pass a string image for a function:

EXPORT Newton(sFx,xguess,toler)
BEGIN
LOCAL h,f,fp,diff;
REPEAT
h:=0.001*(ABS(xguess)+1);
X:=xguess;
f:=EXPR(sFx);
X:=xguess+h;
fp:=EXPR(sFx);
diff:=h*f/(fp-f);
xguess:=xguess-diff;
UNTIL ABS(diff)<toler;
RETURN xguess;
END;

Samples calls are:

Newton("EXP(X)-3*X^2",-1,.00000001)
-.458962267537
Newton("EXP(X)-3*X^2",1,.00000001)
.910007572489
Newton("EXP(X)-3*X^2",4,.00000001)
3.73307902863

The function uses the predefined variable X to store values of xguess (the guess for the root) and xguess+h, before calling function EXPR(sFx).

Namir


Post: #11

Thank you for sharing your example, Namir. What I was looking for in particular, however, was an example on how to use INPUT in order to get a function. My goal is to create an interactive app, as opposed to a function like yours in which everything is entered at once. My attempt below results in an input-form-like interface (much like the HP48 series) but the default value is 0, and not a formula.

EXPORT EXAMPLE()
BEGIN

INPUT(F,"Graph 3D","f(x,y)=","Enter the function to graph","1/390*(X^3*Y-X*Y^3");

END;

If I do enter a new formula "X*Y" or 'X*Y' -- with the quotes -- I get a syntax error. If I take out the quotes, then (as expected), the value of F is whatever X*Y is equal to the moment the program was run. However, this is not what I want, since I cannot evaluate F at different values of X and Y later within my program.

Secondly, if such a procedure should work, then presumably F is a string. How would I then convert a string object into a function?

Edited: 20 Sept 2013, 10:16 a.m.

Post: #12

Quote:
INPUT allows all type of argument but you have put the right delimiters:

" "

[ ]

{ }

etc.

be carefull that A..Z variables are only numericals

The INPUT command is very powerfull (default value, on line help ...)


To clarify, I was not referring the the arguments of the INPUT command. Instead the INPUT command -- when in use -- seems to only allow the user to enter in numerical values when the program is running.


Forum Jump: