algorytm.org

Implementacja w Java



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Interpolacja odwrotna - Implementacja w Java
Ocena użytkownikóww: *****  / 1
SłabyŚwietny
Nadesłany przez Michał Ładanowski, 02 marca 2011 21: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 odwrotna
// www.algorytm.org

public class Main {

	// Interpolacja oparta o 3 węzły:
	private static double a = -2,b= -1,c = 4;

	public static void main(String[] args) {
		// Szukamy miejsce zerowe funkcji x^3 - 1 
		double x = inverseInterpolation();
		System.out.println("Miejsce zerowe w x="+x+" f(x)="+ function(x));
	}	

	// interpolacja odwrotna
	public static double inverseInterpolation(){
		double x = 100;
		while(Math.abs(function(x)) > 1E-20){
			x = (lagrangeInterpolation(new double[]{function(a),function(b),function(c)},
					new double[]{a,b,c},0.0));
			a = b;
			b = c;
			c = x;
		}
		return x;
	}

	// funkcja x^3 - 1 
	public static double function(double x){
		return Math.pow(x, 3) - 1;
	}

	// interpolacja Lagrange'a
	public static double lagrangeInterpolation(double[] xs, double[] ys, double x ){ 
		double t; 
		double y = 0.0; 

		for(int k = 0; k< xs.length; k++){ 
			t = 1.0; 
			for(int j = 0; j < xs.length ; j++){ 
				if(j != k ){ 
					t=t*((x-xs[j])/(xs[k]-xs[j]));  
				} 
			} 
			y += t*ys[k]; 
		} 
		return y; 
	}

}
Dodaj komentarz