Ocena użytkownikóww: ***** / 7
Nadesłany przez Michał Ładanowski, 28 lutego 2011 22:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
Main.java:
/** Interpolacja wielomianowa
* Michał Ładanowski (c) 2011
* www.algorytm.org
*/
// Celem tego przykładu jest przedstawienie interpolacji wielomianowej
// dla przejrzystości implementacji używam gotowej biblioteki do operowania
// na macierzach: JAMA (math.nist.gov/javanumerics/jama/)
import Jama.Matrix;
public class Main {
public static void main(String[] args){
// przykład tabelka:
// 2 3 6 7 8 10
// 0 2 3 5 1 2
//
// węzły interpolacji z tabelki
double[] x = {2, 3,6,7,8,10};
// wartości zapiszemy tak jakby to była macierz nx1, wektor
// potrzebny w tej postaci do rozwiązania równania przy użyciu Jamy
double[][] y = {{0}, {2}, {3}, {5}, {1}, {2}};
Matrix a = polynomialInterpolation(x,y);
for(int i = 0; i < x.length; i++){
System.out.println("a"+i+" = " +a.get(i, 0) );
}
//Sprawdzenie czy dla x = 3 => y = 2
double y1 = 0;
for(int i = 0; i < x.length;i++){
y1 += a.get(i,0)*Math.pow(x[1], i);
}
System.out.println("x = 3 y ="+y1);
}
public static Matrix polynomialInterpolation(double[] x, double[][] y){
int n = x.length;
Matrix A = new Matrix(n,n);
for(int i =0; i< n; i++)
for(int j = 0; j< n; j++)
A.set(i, j, Math.pow(x[i], j));
// rozwiązanie układu, wspolczynniki - macierz nx1
Matrix a = A.solve(new Matrix(y));
return a;
}
}