¿Cuál es la mejor manera de escribir un programa Java que pueda encontrar la derivada de una ecuación a partir de una cadena?

¿Quizás conectarlo a Matlab? Gracias por preguntar, pero para hacerlo genérico, sería difícil.

Ah, ahora leo la descripción. Si todas las ecuaciones son polinomios simples, ¡es más factible!

Las expresiones regulares son probablemente la peor herramienta para analizar expresiones. Sugiero procesar como lo hace un compilador: analizar la expresión, dividirla en tokens, construir un árbol a partir de ellos (por precedencia del operador, incluso si aquí no es crucial, a menos que desee manejar (x + 1)*(x - 7) ). Es más fácil manipular un árbol de objetos que una lista de cadenas.

Aunque nuevamente estoy complicando demasiado las cosas cuando sus requisitos son bastante simples.

Básicamente, loop string.length () veces. Obtenga el carácter en el índice, con el método charAt (). Si es un número, realice un bucle hasta llegar al final del número, calcule el valor y empújelo (en un objeto adecuado). Si hay espacio, solo sáltelo. Si x, empuja su objeto. Si es operador, empuje su objeto.

Por “empujarlo”, me refiero a “agregarlo a una lista”. Luego puede iterar en la lista y aplicar el algoritmo que describe.

Creo que la expresión regular da más complicaciones de las necesarias.

Paso 1: divide la ecuación usando
String ecationString = “1/7 * x + 32 – 2 * x + 7 / x ^ 4”;
Cadena [] partes = equationString.split (“+”);

Paso 2: recorre las partes de la cadena [] para obtener el coeficiente y la potencia de x (que es tu valor de b). Eliminar constantes. Este paso es complicado.

Paso 3: Multiplica cada coeficiente por la potencia de x.

Paso 4: repita nuevamente las partes de la Cadena [] , esta vez conecte el valor de x, multiplíquelo por el coeficiente, recuerde que la potencia de x se ha reducido en 1.

El usuario de Quora expuso un método para tener una función.

El siguiente paso es usar:

(f (x + d) -f (x)) / d

Dado “d” lo suficientemente pequeño, ¡tendrá una buena aproximación!

¡Mucho más fácil que hacer todas las sustituciones!

La resolución de una expresión simple donde se conoce X se puede lograr utilizando el algoritmo de yarda de derivación. Simplemente evalúe X y trabaje como si fuera un número. Plug descarado, escribí expresiones simples resolver en javascript basado en él. Estoy seguro de que hay implementaciones basadas en Java por ahí.

Si desea resolver una ecuación donde X es desconocida, necesitará una forma de averiguar el tipo de ecuación y consumir RPN por tipo.

More Interesting

¿Es útil leer 5 o más libros para algoritmos, o debería leer solo uno o dos y usar los otros como referencia para algún algoritmo en particular?

¿Cuál es el propósito de estudiar pequeñas mejoras (como usar dos hilos o evitar la basura) mientras puedo reducir la complejidad de los algoritmos?

¿En qué situación podemos usar el algoritmo EM para encontrar la probabilidad?

¿Qué son los algoritmos simples?

¿Cuál es el número esperado de pasos necesarios para que una entidad sin memoria atraviese un gráfico completo de 4 nodos?

Una función de densidad de probabilidad, f, no es cero cuando a <x 0. ¿Cuáles son las restricciones en a, by k?

¿Hay algún libro que tenga todos los códigos para todas las estructuras de datos? ¿Al menos para todas las estructuras de datos de árbol?

¿Cómo podría un algoritmo que crea un cambio en el comportamiento del consumidor crear valor?

¿Por qué los problemas NP completos son más difíciles que los problemas NP si un problema NP puede reducirse a un problema NP completo?

¿Cuál es el enfoque algorítmico para el problema spoj SPOJ.com - Problema ROBOTGRI?

¿Cuál es la forma más eficiente de clasificar 4 TB en una sola máquina con 4 GB de RAM?

¿Qué algoritmos pueden ordenar los datos que se dividen en varias máquinas?

¿Por qué no hablamos de O grande para algoritmos de aprendizaje automático?

¿Qué algoritmo debo usar para codificar un solucionador de Sudoku usando la teoría de grafos?

Si una computadora toma el control total del control del tráfico aéreo, ¿cómo será el algoritmo? ¿Cómo manejará los aterrizajes de emergencia y cómo manejará una pista paralela?