数学代数中的公式问题

[b]数学代数中的公式问题[/b]
在高中,经常有根据公式,画出坐标抛物线。

我现在想弄一个程序,输入一个公式,程序可以自动将xy相应的值给我输出来,我规定一个x的数值范围,同时规定x的精定,或者其它条件(必须是整数等等条件),那么程序应该是可以输出一定数量的结果(x,y坐标组成的点)

这个还不难,难点是,公式是动态的,由外界输入,如 y= x*x + 2* +1 如2y=x*x + 4x + 1/x,然后程序给我输入xy值的结果。

这个问题不知道哪在哪一个频道里好一些,我先放在ruby频道试试。

我要的是思路和方向。

[b]问题补充:[/b]
[quote]其实很容易,把抛物线看成很多点组成,
可以假设x取值维度(即x向正负方向变化的值),维度越小,你的抛物线越接近真实,
你可以利用AWT在画布上递归打点,最后生成图片,就是你想要的效果了[/quote]
你说的这些,在高中的时候就讲到了,我现在是想要程序动态解析数学公式。

不知道有没有这样的现成的关于这方面的解决方案。gem or java lib

是这样吗
[code="ruby"]irb(main):011:0> func = gets.chomp
x*x + 2 * x + 1
"x*x + 2 * x + 1"
irb(main):012:0> function = lambda{|x,y| eval(y.gsub("x", x.to_s))}
#Proc:0x00007fad0a763068@(irb):12
irb(main):013:0> function.call(2,func)
9
irb(main):014:0>
[/code]

[code="ruby"]
irb(main):015:0> function = lambda{|x,y| eval(y)}
#Proc:0x00007fad0a750aa8@(irb):15
irb(main):016:0> function.call(2,func)
9
irb(main):017:0> (1..10).map{|i| [i,function.call(i,func)]}
[
[0] [
[0] 1,
[1] 4
],
[1] [
[0] 2,
[1] 9
],
[2] [
[0] 3,
[1] 16
],
[3] [
[0] 4,
[1] 25
],
[4] [
[0] 5,
[1] 36
],
[5] [
[0] 6,
[1] 49
],
[6] [
[0] 7,
[1] 64
],
[7] [
[0] 8,
[1] 81
],
[8] [
[0] 9,
[1] 100
],
[9] [
[0] 10,
[1] 121
]
]

[/code]