Você está na página 1de 2

Nome: Alexandre Santos Gomes 4SEM

BCC

Algoritmo Interpolao por Spline (Linear) Notas sobre as variveis: Antes deste trecho de cdigo (que de fato o responsvel por fazer todos os clculos) foram obtidas entradas e segue uma breve descrio das mesmas, que sero encontradas abaixo: vetPontos[][] = Como o prprio nome sugere, um vetor que contm todos os pontos conhecidos da funo onde est sendo calculado o mtodo de Interpolao por Spline; a primeira coluna o Px e a segunda coluna Py, onde cada par ordenado definido como P(Px,Py); Para o bom funcionamento do algoritmo o vetor deve estar ordenado conforme Px, onde no menor ndice est o menor Px, e no maior ndice, o maior Px; npontos = Varivel que contm a quantidade de pontos conhecidos da funo estudada; x = Varivel que inicia com o x equivalente ao comeo do intervalo e varia conforme a quantidade de parties definida pelo usurio; subi = Varivel que contm a quantidade de parties ou subintervalos que o usurio define no comeo do algoritmo; incx = Varivel que contm o tamanho de cada partio; Seu valor (vetPontos[npontos][0]-vetPontos[0][0])/subi; resul = Varivel que contm o resultado da Interpolao por Spline (linear), calculado no x (que por sua vez varia, conforme o lao de repetio While); arredondar.format(varivel) = Mtodo definido no comeo do algoritmo que apenas tem a funo de arrendondar as variveis para facilitar a visualizao; Pode ser removido na exibio de resultados, para aumentar a preciso de 2 casas decimais para 16 casas decimais; menor = Varivel que contm o ndice do vetor, onde est o nmero menor ou igual, mais prximo de cada x calculado;

Nota: As linhas com // na frente representam comentrios no algoritmo, que pode ser conferido abaixo:
//CALCULAR A INTERPOLAO POR SPLINE (LINEAR) while(x<vetPontos[npontos-1][0]){ //Verificar se o x especificado est contido no intervalo conhecido if(x<vetPontos[0][0]){ JOptionPane.showMessageDialog(null, "O ponto que deseja obter, precisa estar contido no intervalo conhecido!"); }else{ if(x>vetPontos[npontos-1][0]){ JOptionPane.showMessageDialog(null, "O ponto que deseja obter, precisa estar contido no intervalo conhecido!"); }else{ //Verificar qual ponto menor que x, e por consequncia, qual maior for(int i=0; i!=npontos; i++){ if(vetPontos[i][0]<=x){ menor = i; } } //Calcular o splaine para o intervalo localizado resul = vetPontos[menor][1]*(((vetPontos[(menor+1)][0])-(x))/((vetPontos[menor+1][0])(vetPontos[menor][0]))); resul = resul+(vetPontos[menor+1][1]*((x)-(vetPontos[menor][0]))/((vetPontos[menor+1] [0])-(vetPontos[menor][0]))); System.out.println("X:"+arredondar.format(x)+"\tY:"+arredondar.format(resul)); }

} x = x+incx;

Você também pode gostar