В этой статье описывается функция подгонки кривой N-порядка, реализованную Java. Поделитесь этим для вашей ссылки, следующим образом:
В предыдущей статье Java реализует метод решения одного полинома N-порядка. После возможности решить полином, необходимо использовать, какой класс для прогнозирования будущих данных на основе нескольких данных образца. Приспособленная матрица была опубликована в предыдущей статье, поэтому я не буду говорить об этом здесь. Эта статья в основном фокусируется на том, как вычислить матрицу коэффициента на основе точки выборки и рассчитать значение прогнозируемой точки.
Принцип очень прост, и формула также была найдена в предыдущей статье. Я выложу код здесь напрямую.
В предыдущей статье используется класс commonAlgorithm.PolynomiaSoluter написанный в предыдущей статье.
Пакет Commonalgorithm; импорт Commonalgorithm.polynomialsluter; импорт java.lang.math; public Class Leavstsquare {private Double [] [] matrixa; Частный двойной [] arrayb; частные двойные [] факторы; частный порядок int; Public Leastsquare () {} / * * После экземпляра перед расчетом вы должны сначала ввести параметры и генерировать формулу Arrayx в качестве координат оси X точки выборки и расположить их в порядке отбора проб * в порядке подгонки. При установке кривых высокого порядка с низкими заказами это может быть неточным, но слишком высокий порядок вызовет медленные расчеты*/ public boolean generateformula (двойной [] arrayx, двойной [] arrayy, int order) {if (arrayx.length! = Rasty.length) вернуть false; this.order = order; int len = arrayx.length; // Матрица X и Y в операции подгонки Matrixa = new Double [Order + 1] [ORDER + 1]; arrayb = новый двойной [заказ + 1]; // генерировать матрицу Y и часть мощности <= порядка в матрице x для (int i = 0; i <order+1; i ++) {double sumx = 0; for (int j = 0; j <len; j ++) {double tmp = math.pow (arrayx [j], i); sumx += tmp; arrayb [i] += tmp * arrayy [j]; } for (int j = 0; j <= i; j ++) matrixa [j] [i - j] = sumx; } // Сгенерировать часть Power> Заказ в матрице X для (int i = порядка+1; i <= order * 2; i ++) {double sumx = 0; for (int j = 0; j <len; j ++) sumx+= math.pow (arrayx [j], i); for (int j = i - order; j <order+1; j ++) {matrixa [i - j] [j] = sumx; }} // экземпляр Polynomiasuluterer и решить систему уравнений, чтобы получить коэффициенты последовательностей каждого порядок коэффициентов порядка полиномиалсулутера Soluter = new PolynomialSuluter (); Факторы = soluter.getResult (matrixa, arrayb); if (факторы == null) вернуть ложь; иначе вернуть правду; } // Результат вычисления указанных координат на основе входных координат и коэффициентов коэффициента последовательности Публичного двойного расчета (двойной x) {двойной результат = факторы [0]; для (int i = 1; i <= order; i ++) результат+= факторы [i] * math.pow (x, i); результат возврата; }}PS: Вот несколько инструментов расчета для вас, чтобы ссылаться на:
Онлайн полиномиальные кривые и инструменты подгонки функций кривой:
http://tools.vevb.com/jisuanqi/create_fun/
Нарисуйте полиномиальные/функциональные кривые графические инструменты онлайн:
http://tools.vevb.com/jisuanqi/fun_draw
Инструмент расчета решения для онлайн -функции (уравнение):
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.