Este artigo descreve a função de ajuste da curva de ordem N implementada por Java. Compartilhe -o para sua referência, como segue:
No artigo anterior, Java implementa um método para resolver um polinômio de ordem N única. Depois de poder resolver um polinômio, é necessário usar qual classe prever dados futuros com base em vários dados de pontos de amostra. A matriz ajustada foi publicada no artigo anterior, então não vou falar sobre isso aqui. Este artigo se concentra principalmente em como calcular a matriz do coeficiente com base no ponto de amostra e calcular o valor do ponto previsto.
O princípio é muito simples e a fórmula também foi encontrada no artigo anterior. Vou postar o código aqui diretamente.
A classe commonAlgorithm.PolynomiaSoluter escrita no artigo anterior é usada.
Pacote comum do CommonalGorithm; importação CommonalGorithM.PolynomialSluter; importar java.lang.math; classe pública Menosquare {Private Double [] [] Matrixa; Private Double [] Arrayb; fatores duplos privados; Private Int Order; Public MenosSquare () {} / * * Após a instanciação, antes do cálculo, você deve primeiro inserir os parâmetros e gerar o Arrayx da fórmula como as coordenadas do eixo x do ponto de amostragem e organizá-las na ordem de amostragem * na ordem de ajuste. Ao ajustar as curvas de alta ordem com pedidos baixos, pode ser impreciso, mas a ordem alta causará cálculos lentos*/ público Booleano GenerateFormula (Double [] Arrayx, Double [] Arrayy, Int Order) {if (Arrayx.length! = Arrayy.length) retornar false; this.Order = Order; int len = arrayx.length; // a matriz x e a matriz y na operação de ajuste Matrixe = new Double [Order + 1] [Ordem + 1]; Arrayb = novo duplo [ordem + 1]; // gera a matriz y e a parte da potência <= ordem na matriz x para (int i = 0; i <ordem+1; i ++) {duplo sumx = 0; for (int j = 0; j <len; j ++) {duplo tmp = math.pow (Arrayx [j], i); sumx += tmp; Arrayb [i] += tmp * Arrayy [j]; } for (int j = 0; j <= i; j ++) matrixe [j] [i - j] = sumx; } // Gere a parte do poder> ordem na matriz x para (int i = order+1; i <= order * 2; i ++) {duplo sumx = 0; for (int j = 0; j <len; j ++) sumx+= math.pow (Arrayx [j], i); for (int j = i - order; j <ordem+1; j ++) {matrixe [i - j] [j] = sumx; }} // instância polinomiasuluter e resolva o sistema de equações para obter sequências de coeficiente de cada ordem fatores polinomialsuluter soluter = new PolinomialSuluter (); fatores = soluter.getResult (Matrixa, Arrayb); if (fatores == null) retorna false; mais retornar verdadeiro; } // O resultado do cálculo das coordenadas especificadas com base nas coordenadas de entrada e nos fatores de sequência de coeficientes públicos calcular (x) {resultado duplo = fatores [0]; for (int i = 1; i <= order; i ++) resultado+= fatores [i] * math.pow (x, i); resultado de retorno; }}PS: Aqui estão algumas ferramentas de cálculo para você se referir a:
Curvas polinomiais on -line e ferramentas de ajuste de função de curva:
http://tools.vevb.com/jisuanqi/create_fun/
Desenhe ferramentas gráficas de curva polinomial/função online:
http://tools.vevb.com/jisuanqi/fun_draw
Ferramenta de cálculo da solução de função on -line (eq):
http://tools.vevb.com/jisuanqi/equ_jisuanqi
Calculadora científica online use_advanced calculadora online calculadora:
http://tools.vevb.com/jisuanqi/jsqkeexue
Calculadora Online_Standard Calculadora:
http://tools.vevb.com/jisuanqi/jsq
Para obter mais informações sobre os algoritmos Java, os leitores interessados neste site podem visualizar os tópicos: "Estrutura de dados Java e tutorial de algoritmo", "Resumo das dicas de nó da operação Java Dom", "Resumo de dicas de operação de Java e Operação de Java" e "Resumo de Java cache" Tips "TIPS"
Espero que este artigo seja útil para a programação Java de todos.