В этой статье описывается метод реализации Java для решения одного полинома N-графики. Поделитесь этим для вашей ссылки, следующим образом:
Проект должен делать прогнозы трендов, используя такие алгоритмы, как линейная фитинга, подгонка кривой 2-х порядка и экспоненциальная подгонка. Различные алгоритмы линейной подгонки записаны в матрицы в этой форме:
Если x является горизонтальным значением выборки координат, y является значением выборки вертикальной координат, я является номером последовательности точки выборки, а является коэффициентом, n-количество точек отбора проб, а n-порядок, поэтому линейное подготовительное подготовилось, наконец, превращается в проблему решения системы уравнений более высокого порядка.
Я не знаю, есть ли какой-нибудь простой в использовании операционный пакет Java Matrix. Я не умею собирать такую информацию, поэтому мне пришлось забрать линейную алгебру, которую я отложил в течение многих лет, и сам написал программу Java, чтобы использовать алгоритм дополненной матрицы для решения уравнений более высокого порядка. Просто вставьте код:
Пакет Commonalgorithm; Public Class Polynomialsoluter {private Double [] [] matrix; частный двойной [] результат; частный порядок int; Public PolynomialSoluter () {} // Проверьте длину ввода и генерируйте дополненную матрицу Private Boolean Init (Double [] [] matrixa, Double [] arrayb) {order = arrayb.length; if (matrixa.length! = Заказ) вернуть false; matrix = new Double [ORDER] [Порядок + 1]; for (int i = 0; i <order; i ++) {if (matrixa [i] .length! = Заказ) вернуть false; for (int j = 0; j <order; j ++) {matrix [i] [j] = matrixa [i] [j]; } matrix [i] [order] = arrayb [i]; } result = new Double [order]; вернуть истину; } public Double [] getResult (double [] [] matrixa, double [] arrayb) {if (! init (matrixa, arrayb)) return null; // Гауссовое устранение-for (int i = 0; i <order; i ++) {// Если диагональный термин текущей строки составляет 0, он будет обменен с строкой с тем же столбцом из следующих строк, которые не являются 0 if (! Swithifzero (i)) return null; // Устранение для (int j = i+1; j <order; j ++) {if (matrix [j] [i] == 0) продолжить; Double Factor = matrix [j] [i] / matrix [i] [i]; for (int l = i; l <порядка+1; l ++) Матрица [j] [l] = Матрица [j] [l] - Матрица [i] [l] * Фактор; }} // Гауссовая элиминация-reverse-remote-remote резервные вычисления для (int i = order-1; i> = 0; i--) {result [i] = matrix [i] [order] / matrix [i] [i]; for (int j = i -1; j> -1; j--) matrix [j] [order] = matrix [j] [order] -result [i] * matrix [j] [i]; } return Result; } private boolean swethifzero (int i) {if (matrix [i] [i] == 0) {int j = i + 1; // Найти столбец, который не является нулевым в соответствующей позиции, в то время как (j <order && matrix [j] [i] == 0) j ++; // Если все соответствующие позиции равен 0, нет решения, если (j == order) вернуть false; else Switchrows (i, j); } вернуть true; } private void SwitchRows (int i, int j) {double [] tmp = matrix [i]; Матрица [i] = Матрица [j]; Матрица [j] = TMP; }}Добро пожаловать, чтобы общаться, если существует лучший алгоритм или подходящий матричный пакет.
PS: Вот несколько инструментов расчета для вас, чтобы ссылаться на:
Инструмент расчета решения для онлайн -функции (уравнение):
http://tools.vevb.com/jisuanqi/equ_jisuanqi
Научный калькулятор онлайн use_advanced Calculator Online Calculator:
http://tools.vevb.com/jisuanqi/jsqkeexue
Онлайн Calculator_standard Calculator:
http://tools.vevb.com/jisuanqi/jsq
Для получения дополнительной информации об алгоритмах Java, читатели, которые заинтересованы в этом сайте, могут просмотреть темы: «Учебное пособие по структуре данных Java и алгоритм», «Сводка операции Java Dom Node», «Сводка Java File и каталог
Я надеюсь, что эта статья будет полезна для всех Java Programming.