Dieser Artikel beschreibt die Java-Implementierungsmethode, um ein einzelnes Polynom-Negree zu lösen. Teilen Sie es für Ihre Referenz wie folgt weiter:
Das Projekt muss Trendvorhersagen unter Verwendung von Algorithmen wie linearer Anpassung, 2-Ordnung-Kurvenanpassung und exponentieller Anpassung vornehmen. Verschiedene lineare Anpassungsalgorithmen werden in dieser Form in Matrizen geschrieben:
Wenn x der horizontale Koordinaten-Stichprobenwert ist, ist y der vertikale Koordinaten-Stichprobenwert, I ist die Sequenznummer des Stichprobenpunkts, A ist der Koeffizient, n ist die Anzahl der Abtastpunkte, und n ist die Reihenfolge, sodass lineare Anpassung schließlich in ein Problem der Lösung des Systems höherer Bestellungen wird.
Ich weiß nicht, ob es ein benutzerfreundliches Java-Matrix-Betriebspaket gibt. Ich bin nicht gut darin, diese Art von Informationen zu sammeln, daher musste ich die lineare Algebra abholen, die ich viele Jahre lang abgelegt hatte, und schrieb selbst ein Java-Programm, um den Algorithmus der erweiterten Matrix zu verwenden, um Gleichungen höherer Ordnung zu lösen. Fügen Sie einfach den Code ein:
Paket Commonalgorithmus; Polynomialsoluter für öffentliche Klasse {private double [] [] matrix; privates Doppel [] Ergebnis; private int order; public polynomialsoluter () {} // Überprüfen Sie die Eingangslänge und generieren Sie die erweiterte Matrix private boolean init (double [] [] matrixa, double [] arrayb) {order = arrayB.Length; if (matrixa.length! = order) return false; matrix = new double [order] [order + 1]; für (int i = 0; i <order; i ++) {if (matrixa [i] .Length! = order) return false; für (int j = 0; j <order; j ++) {matrix [i] [j] = matrixa [i] [j]; } matrix [i] [order] = arrayb [i]; } result = new Double [Order]; zurückkehren; } public double [] getResult (double [] [] matrixa, double [] arrayb) {if (! init (matrixa, arrayb)) return null; // Gaußsche Elimination-for (int i = 0; i <order; i ++) {// Wenn der diagonale Term der aktuellen Zeile 0 beträgt, wird sie mit der Zeile mit derselben Spalte der folgenden Zeilen ausgetauscht, die nicht 0 sind, wenn (! Swithifzero (i)) null zurückgegeben wird; // Eliminierung für (int j = i+1; j <order; j ++) {if (matrix [j] [i] == 0) Fortsetzung; Doppelfaktor = Matrix [j] [i] / matrix [i] [i]; für (int l = i; l <order+1; l ++) matrix [j] [l] = matrix [j] [l] - matrix [i] [l] * faktor; }} // Gaußsche Elimination-Reverse-Remote-Remote Redundante Berechnungen für (int i = order-1; i> = 0; i--) {result [i] = matrix [i] [order] / matrix [i] [i]; für (int j = i -1; j> -1; j-) matrix [j] [order] = matrix [j] [order] -result [i] * matrix [j] [i]; } Rückgabeergebnis; } private boolean swethifzero (int i) {if (matrix [i] [i] == 0) {int j = i + 1; // Die Spalte finden, die an der entsprechenden Position nicht Null ist (j <order && matrix [j] [i] == 0) J ++; // Wenn alle entsprechenden Positionen 0 sind, gibt es keine Lösung, wenn (j == order) false zurückgeben; sonst Switchrows (i, j); } Return true; } private void switchrows (int i, int j) {double [] tmp = matrix [i]; matrix [i] = matrix [j]; matrix [j] = tmp; }}Willkommen zu kommunizieren, wenn es einen besseren Algorithmus oder ein geeignetes Matrixbetriebspaket gibt.
PS: Hier sind einige Berechnungswerkzeuge, auf die Sie sich beziehen können:
Online -Berechnungsinstrument der Unarm Function (EQ) Lösung:
http://tools.vevb.com/jisuanqi/equ_jisuanqi
Online -Taschenrechner des Wissenschaftlichen Taschenrechners Online -Taschenrechner Online -Taschenrechner:
http://tools.vevb.com/jisuanqi/jsqkeexue
Online -Rechner_Standard Taschenrechner:
http://tools.vevb.com/jisuanqi/jsq
Für weitere Informationen zu Java -Algorithmen können Leser, die an dieser Website interessiert sind, die Themen "Java -Datenstruktur und Algorithmus -Tutorial", "Zusammenfassung der Java -Operation DOM -Knoten -Tipps", "Zusammenfassung der Java -Datei- und Verzeichnisoperationstipps" und "Zusammenfassung der Java -Cache -Operation Tipps" anzeigen
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.