Este artículo describe el método de implementación de Java para resolver un solo polinomio de N-Degre. Compártelo para su referencia, como sigue:
El proyecto debe hacer predicciones de tendencias, utilizando algoritmos como el ajuste lineal, el ajuste de la curva de 2 orden y el ajuste exponencial. Varios algoritmos de ajuste lineal se escriben en matrices de esta forma:
Donde x es el valor de muestreo de coordenadas horizontal, y es el valor de muestreo de coordenadas verticales, i es el número de secuencia del punto de muestreo, A es el coeficiente, n es el número de puntos de muestreo, y N es el orden, por lo que la ajuste lineal finalmente se convierte en un problema de resolver el sistema de ecuaciones de orden superior.
No sé si hay algún paquete de operación de matriz Java fácil de usar. No soy bueno para recopilar este tipo de información, así que tuve que recoger el álgebra lineal que había dejado durante muchos años y escribí un programa Java para usar el algoritmo de la matriz aumentada para resolver ecuaciones de orden superior. Simplemente pegue el código:
Paquete CommonAlgorithm; public class PolynomialSoluter {private double [] [] matrix; resultado privado doble []; orden privada int; public PolynomialSoluter () {} // verifique la longitud de entrada y genere la matriz aumentada boolean init (double [] [] matrixa, double [] arrayb) {orden = arrayb.length; if (matrixa.length! = orden) return false; matriz = nuevo doble [orden] [orden + 1]; for (int i = 0; i <orden; i ++) {if (matrixa [i] .length! = orden) return false; for (int j = 0; j <orden; j ++) {matrix [i] [j] = matrixa [i] [j]; } matrix [i] [orden] = arrayb [i]; } resultado = new Double [orden]; devolver verdadero; } public doble [] getResult (double [] [] matrixa, double [] arrayb) {if (! init (matrixa, arrayb)) return null; // Eliminación gaussiana-For (int i = 0; i <orden; i ++) {// Si el término diagonal de la fila actual es 0, se intercambiará con la fila con la misma columna de las siguientes filas que no son 0 if (! Swithifzero (i)) return null; // Eliminación para (int j = i+1; j <orden; j ++) {if (matrix [j] [i] == 0) continuar; doble factor = matrix [j] [i] / matrix [i] [i]; para (int l = i; l <orden+1; l ++) matriz [j] [l] = matrix [j] [l] - matriz [i] [l] * factor; }} // Cálculos redundantes de eliminación-reverso-reverso-reverso de gaussiano para (int i = orden-1; i> = 0; i--) {resultado [i] = matrix [i] [orden] / matrix [i] [i]; para (int j = i -1; j> -1; j--) matrix [j] [orden] = matrix [j] [orden] -resultado [i] * matrix [j] [i]; } resultado de retorno; } booleano privado swethifzero (int i) {if (matrix [i] [i] == 0) {int j = i + 1; // Encuentra la columna que no es cero en la posición correspondiente, mientras que (j <orden && matrix [j] [i] == 0) j ++; // Si todas las posiciones correspondientes son 0, no hay solución si (j == orden) return false; else SwitchRows (i, j); } return verdadero; } private void switchRows (int i, int j) {double [] tmp = matrix [i]; matriz [i] = matriz [j]; matriz [j] = tmp; }}Bienvenido a comunicarse si hay un algoritmo mejor o un paquete de operación de matriz adecuado.
PD: Aquí hay algunas herramientas de cálculo para que se consulte:
Herramienta de cálculo de la solución de la función unary (ecualización):
http://tools.vevb.com/jisuanqi/equ_jisuanqi
Calculadora científica en línea use_advanced calculadora en línea:
http://tools.vevb.com/jisuanqi/jsqkeexue
Calculadora en línea_standard Calculadora:
http://tools.vevb.com/jisuanqi/jsq
Para obtener más información sobre los algoritmos de Java, los lectores interesados en este sitio pueden ver los temas: "Estructura de datos Java y tutorial de algoritmo", "Resumen de las puntas de nodo de operación de Java DOM", "Resumen de Java Archivo y TIPS de operación de directorio" y "Summary of Java Cache Operation Tips" TIPS ""
Espero que este artículo sea útil para la programación Java de todos.