Cet article décrit la fonction d'ajustement de la courbe d'ordre N implémenté par Java. Partagez-le pour votre référence, comme suit:
Dans l'article précédent, Java met en œuvre une méthode pour résoudre un seul polynôme d'ordre N. Après avoir pu résoudre un polynôme, il est nécessaire d'utiliser la classe pour prédire les données futures en fonction de plusieurs données de point d'échantillonnage. La matrice ajustée a été publiée dans l'article précédent, donc je n'en parlerai pas ici. Cet article se concentre principalement sur la façon de calculer la matrice du coefficient en fonction du point d'échantillonnage et de calculer la valeur du point prévu.
Le principe est très simple et la formule a également été trouvée dans l'article précédent. Je publierai directement le code ici.
La classe commonAlgorithm.PolynomiaSoluter écrite dans l'article précédent est utilisée.
Package CommonAlgorithm; Importer CommonAlgorithm.PolynomialSLuter; Importer java.lang.math; public class Leastsquare {private double [] [] matrixa; Double privé [] ArrayB; Facteurs privés doubles []; Ordre privé INT; public leasSquare () {} / * * Après l'instanciation, avant le calcul, vous devez d'abord saisir les paramètres et générer la formule Arrayx comme les coordonnées de l'axe X du point d'échantillonnage, et les organiser dans l'ordre d'échantillonnage * dans l'ordre de l'ajustement. Lors de l'adaptation des courbes d'ordre élevé avec des ordres faibles, il peut être inexact, mais un ordre trop élevé provoquera des calculs lents * / public booléen generateformula (double [] arrayx, double [] arrayy, int. this.order = ordre; int len = arrayx.length; // la matrice x et la matrice y dans la matrice d'opération d'ajustement = nouveau double [ordre + 1] [ordre + 1]; arrayB = nouveau double [ordre + 1]; // Générez la matrice Y et la partie de la puissance <= ordre dans la matrice x pour (int i = 0; i <ordre + 1; i ++) {double sumx = 0; pour (int j = 0; j <len; j ++) {double tmp = math.pow (arrayx [j], i); sumx + = tmp; arrayB [i] + = tmp * arrayy [j]; } pour (int j = 0; j <= i; j ++) matrixa [j] [i - j] = sumx; } // Générez la partie de la puissance> Ordre dans la matrice x pour (int i = ordre + 1; i <= ordre * 2; i ++) {double sumx = 0; pour (int j = 0; j <len; j ++) sumx + = math.pow (arrayx [j], i); pour (int j = i - ordre; j <ordre + 1; j ++) {matrixa [i - j] [j] = sumx; }} // instance polynomiasuluter et résoudre le système d'équations pour obtenir des séquences de coefficient de chaque facteur d'ordre PolynomialSuluer Soluter = new PolynomialSuluter (); facteurs = soluter.getResult (matrixa, arrayb); if (facteurs == null) renvoie false; sinon retourne vrai; } // Le résultat du calcul des coordonnées spécifiées sur la base des coordonnées d'entrée et des facteurs de séquence de coefficient Double calcul (double x) {double résultat = facteurs [0]; pour (int i = 1; i <= ordre; i ++) résultat + = facteurs [i] * math.pow (x, i); Résultat de retour; }}PS: Voici quelques outils de calcul à référence à:
Courbes polynomiales en ligne et outils d'ajustement des fonctions de courbe:
http://tools.vevb.com/jisuanqi/create_fun/
Dessiner des outils de graphiques de courbe polynôme / fonction en ligne:
http://tools.vevb.com/jisuanqi/fun_draw
Outil de calcul de la solution de fonction unary en ligne (EQ):
http://tools.vevb.com/jisuanqi/equ_jisuanqi
Calculatrice scientifique en ligne use_advanced calculator calculateur en ligne:
http://tools.vevb.com/jisuanqi/jsqkeexue
Calculatrice en ligne_standard Calculatrice:
http://tools.vevb.com/jisuanqi/jsq
Pour plus d'informations sur les algorithmes Java, les lecteurs qui sont intéressés par ce site peuvent afficher les sujets: "Structure de données Java et tutoriel d'algorithme", "Résumé des conseils de nœud de Dom Operation Java", "Résumé du fichier Java et des conseils d'opération de répertoire" et "Résumé des conseils d'opération Java Cache"
J'espère que cet article sera utile à la programmation Java de tous.