En general, este es un problema difícil. Para las clases de expresiones para las que existe una forma canónica, como los polinomios (en cualquier número de variables), la respuesta es sencilla: dos expresiones son iguales si y sólo si tienen la misma forma canónica. (Una forma canónica significa que para cada expresión hay una y sólo una expresión canónica a la que es igual, y existe un procedimiento eficaz para calcular la forma canónica de cualquier expresión dada). Entonces se puede obtener un algoritmo para comparar dos expresiones: calcular la forma canónica de cada expresión y comprobar si las formas canónicas son idénticas.
Los estudiantes de álgebra aprenden a hacer exactamente esto para decidir ellos mismos si dos polinomios son iguales. (Los estudiantes de aritmética aprenden un método análogo para decidir si dos expresiones aritméticas son iguales, por ejemplo convirtiendo la expresión 2⋅(3+4) en la forma canónica 14 ; este algoritmo es una subrutina del que reduce las expresiones polinómicas a la forma canónica). Una forma canónica para polinomios es combinar todos los términos similares, listar los términos en orden descendente de grado, con los términos de igual grado listados en orden lexicográfico por las variables que contienen, o algo por el estilo. Calcular una forma canónica para un polinomio arbitrario no es un asunto difícil. Es el tipo de cosa que un programador competente puede producir en un par de horas; o, como han sugerido otras personas aquí, puedes poner las soluciones en un sistema de álgebra computacional, que contendrá exactamente este tipo de algoritmo para varios tipos de expresiones diferentes.
Pero para expresiones más generales puede ser extremadamente difícil, o incluso imposible, decidir si las dos expresiones son iguales. No existe una forma canónica, y reconocer cuándo dos expresiones concretas son iguales puede ser un teorema importante. Por ejemplo, consideremos las expresiones cos2x y (cosx)2−(sinx)2 . Son iguales, pero no es evidente. O para un ejemplo más difícil, considere las dos expresiones 0 y ∑a,b,c>1n>2I(an+bn−cn) (donde I(x) denota la función que tiene I(0)=1 y I(x)=0 para x≠0 ). Se conjeturó durante algún tiempo que estas dos expresiones eran iguales, pero la prueba resultó ser algo complicada.
El párrafo anterior era una broma, pero es una broma seria: una parte sustancial de las matemáticas es precisamente cómo realizar esos cálculos y reconocer cuándo dos expresiones que parecen diferentes son iguales. Euler es famoso (entre otras cosas) por reconocer que eix y cosx+isinx son expresiones iguales. Dejando de lado las bromas, un teorema de Daniel Richardson dice que para una clase bastante pequeña y bastante natural de expresiones, hay no que pueda determinar de forma fiable la igualdad en todos los casos.
Por lo tanto, para obtener una respuesta, tiene que ser más específico sobre cuál es su pregunta. Si sólo necesitas comparar polinomios, la respuesta es bastante sencilla. Si tus expresiones son más complicadas que eso, puede que haya o no una respuesta; depende de lo que contengan.
[ Addendum: Veo que has añadido comentarios diciendo que sólo te interesan los polinomios, y que quieres saber si tu idea de sustituir los valores de prueba por x es sólida. Es sólido, pero introducir un número no es suficiente, ni siquiera para los polimios simples. Los polinomios x+1,3x−1 y 3−x todos tienen el mismo valor en x=1 . Pero puede evitar fácilmente los falsos positivos comprobando n+1 diferentes valores para un n polinómico de tercer grado. Un polinomio de grado n está completamente determinada por sus valores en n+1 puntos, por lo que si dos polinomios de grado n estar de acuerdo en n+1 diferentes puntos puede estar seguro de que son idénticos; ni siquiera importa qué n+1 valores de la muestra. (En el ejemplo anterior, cualquier valor de x que no sea x=1 es suficiente para distinguir los tres polinomios). Del mismo modo, si el polinomio tiene tres variables x , y y z de grados nx,ny, y nz basta con seleccionar nx+1 valores para x , ny+1 valores para y y nz+1 valores para z , y luego comprueba todos los (nx+1)(ny+1)(nz+1) triples de esos valores. ]