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?

Metoda połowienia - Implementacja w Java
Ocena użytkownikóww: *****  / 5
SłabyŚwietny
Nadesłany przez Tomasz Lubiński, 08 sierpnia 2005 01: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.

Polowienie.java:
/**
 * www.algorytm.org
 * Tomasz Lubinski (c)2005
 * metoda polowienia - obliczanie zer funkcji nieliniowyh
 *  na przykladzie wielomianow
 */
public class Polowienie {

	private static int n,m;
	private static double a[];

	//	algorytm Hornera do obliczania wartosci wielomianu
	private static double w(int k, double x)	{
		if (k==n)
			return a[n];
		else
			return w(k+1,x)*x+a[k];
	}

	public static void main(String[] args) {
		int i;
		double p,k,s;
		s = 0;

		System.out.println("Metoda polowienia - obliczanie miejsc zerowych funkcji nie liniowych \nna przykladzie wielomianow\n\nPodaj stopien wielomianu\n");
		n = Console.readInt("?");
		a = new double[n+1];
		
		System.out.println("Podaj teraz kolejne wspolczynniki wielomianu.\nZaczynij od tego z najwieksza potega.\n");
		for(i=n; i>=0; i--) {
		  	a[i] = Console.readDouble("a" + i);
		}

		System.out.println("Podaj poczatek przedzialu");
		p = Console.readInt("?");
		System.out.println("Podaj koniec przedzialu");
		k = Console.readInt("?");
		System.out.println("Podaj liczbe iteracji");
		m = Console.readInt("?");

		for(i=1; i<m; i++) {
			s=(p+k)/2;
			if ((w(0,p)*w(0,s)<0)&&(w(0,s)*w(0,k)>0)) {
				k=s;
			}
			else if ((w(0,p)*w(0,s)>0)&&(w(0,s)*w(0,k)<0)) {
				p=s;
			}
		    else if (w(0,s)==0) {
		    	break;
		    }
		    else {
		    	System.out.println("Przedzial nie spelnia zalozen");
		    	return;
		    }
		}
		if (w(0,s)==0) {
			System.out.println("Dokladny pierwiastek wynosi " + s);
		}
		else {
			System.out.println("Przyblizony pierwiastek wynosi " + s);
		}

		return;
	}
}
Dodaj komentarz