# HP Forums

Full Version: HP Prime and Strings
You're currently viewing a stripped down version of our content. View the full version with proper formatting.

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.

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

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 ...)

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.

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

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.

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.