maybe I am reading too much into this, but the idea grabbed me just as an interesting challenge.
you will need to parse the input string to determine the constants, variables and operators - cut the input string into several parts so that you can allocate the numbers and functions in your code, as well as your 'x' variable.
i.e. find out where the operators are (operator is ^ + - * / etc) - check out the TEXT command menu commands for help, then use those positions to 'cut' your string
with maths formulae it is long winded but not too complex, although you DO need to build in the basic interpretation rules: Brackets, then indices, multiplication, division, addition, subtraction (I think that's the priority order they go in?)
I have cheated a hell of a lot with this code, (i.e. I have only included the operators I already know I need just for this one example. to expand it to deal with general geometric, trigonometric or plain wierd functions you will need to build them in using IF's or CASE statements) but it should be enough to show you ONE WAY of doing it (it is late so I don't doubt other people can see a better way to do it

) I also only concentrated on parsing the input string, getting user input for the xmin, xmax and xstep values are relatively simple.
`preformatting the xmin, xmax and step values, but you can get user input for them easy
xmin = 10
xmax = 40
xstep = 2
print "enter your function in the form 'y=ax^b+c' (no spaces)"
print "note: you must enter the 'y='"
input formulastring$
stringlength = len(formulastring$)
`this line gets rid of the "y=" out of our string
formulastring$ = right$(formulastring$,stringlength-2)
stringlength = len(formulastring$)
`find where the 'x' variable lies in the string
xpos = find first char$(formulastring$,"x")
`avars is the number of digits in the 'a' constant
avars = xpos-1
`aval# is the numeric value of the numbers in the 'a' constant
aval# = val(left$(formulastring$, avars))
`now we get rid of everything up to the first operator (leaving ^b+c)
formulastring$ = right$(formulastring$,stringlength-xpos)
stringlength = len(formulastring$)
`the first operator is now the first character of the remaining string
operatorone$ = left$(formulastring$,1)
`remove the operator from our string (leaving b+c)
formulastring$ = right$(formulastring$,stringlength-1)
stringlength = len(formulastring$)
`We would go through a whole bunch of if/then or case statements here to find
`ANY operator rather than just the '+' sign, but I am cheating
operatortwopos = find first char$(formulastring$,"+")
`bvars is number of digits in the 'b' constant
bvars = operatortwopos-1
`bval# is the numeric value of the 'b' constant
bval# = val(left$(formulastring$, bvars))
`get 'b' out of our input string
formulastring$ = right$(formulastring$,stringlength-bvars)
stringlength = len(formulastring$)
`leftmost character in the remianing string is the second operator
operatortwo$ = left$(formulastring$,1)
`all the characters but the leftmost are now equal to 'c' constant
cval# = val(right$(formulastring$,stringlength-1))
`now we have our input string seperated into
`y= aval# * X (operatorone$) bval# (operatortwo$) cval#
`in a normal maths program we would then go through a whole host
`of if/then or case statements to determine exactly what to do
`but it is getting late tonight and I need sleep so I am going to cheat, I added the if/then statements to start you off tho
print operatorone$
print operatortwo$
IF operatorone$="^"
IF operatortwo$="+"
for x = xmin to xmax step xstep
y = aval#*x^bval#+cval#
print y
NEXT x
ENDIF
ENDIF
do
LOOP
the way it is written the user needs to input y=ax^b+c, and a,b and c need to be entered even if they are zero i.e. y=x^2 needs to be entered as y=1x^2+0
if you want to take the time you can put the extra effort into eliminating the need for it, but this should at least give you a starting point
if you want to include SIN for example, you could tell your code to look for the text "SIN" and assign that as an operator
This is not the Sig you are looking for....