Cálculo numérico

E aí pessoal, vamos ver se vcs conseguem me ajudar…hehe
Estou desenvolvendo o algoritmo de Newton-Raphson para encontrar aproximações de zeros de funções…em Java, o problema que eu tenho é an hora de calcular a derivada entre outros…Tipo,eu precisaria de dois métodos bem complicados de implementar, e queria saber se já existe algo desse tipo implementado:
Primeiro:
Preciso de um método que passada uma função algébrica (passada como String), retorne sua derivada…
Exemplo: derivada(“x^3”) = “3x^2”;
Complicado né, teria que implementar todas as regras de derivação no algoritmo…

Segundo:
Preciso de um método que, passada uma função algébrica como parâmetro (em forma de String), e um determinado valor, o método retorne o valor da função, substituindo o valor nas variáveis da função.
Exemplo: sustitui(“x/2+15x-x^2”,4) = 4/2+15*4-4^2 = 2+60-16 = 46

Alguém conhece alguma coisa disso?
Já ouviram falar do pacote advancedMath? eu já ouví falá mas nunca encontrie…

Cara é o seguinte, eu ja desenvolvi estas paradinha em pascal, mais faz muito tempo, foi no meu 2º ano da faculdade…

mas o seguinte, se for para fazer a derivada de polinômios fica facil eu posso te ajudar…

pode ser???

Acho que pode ser cara, mas vai dá um puta trabalho, hehe, meu, eu nem me lembro de todas as regras de derivação…hehe…
E o método de substituição vc tem idéia de como fazer, sem termos que criar um analisador sintático (ou semânctico, sei lá, hehe) pra ficar analisando a expressão?