Ocena użytkownikóww: ***** / 2
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.
Hornerp.java:
/**
* www.algorytm.org
* Algorytm Hornera - obliczanie znormalizowanych
* pochodnych wielomianow
* Tomasz Lubinski (c)2005
*/
public class Hornerp {
private static int n;
private static double a[],b[],c[];
private static double x;
// wartosc wielmianu
private static double wart(int k) {
if (k==n)
return b[n];
else
return wart(k+1)*x+b[k];
}
// wspolczynniki wielmianu po podzieleniu
private static double wspol(int k) {
if (k==n) {
c[k-1]=b[k];
return b[k];
}
else {
if (k>0) {
c[k-1]=wspol(k+1)*x+b[k];
}
return
wspol(k+1)*x+b[k];
}
}
public static void main(String[] args) {
int i,j,s;
double tmp;
System.out.println("Algorytm Hornera - obliczanie wartosci znormalizowanych pochodnych wielomianu\nPodaj stopien wielomianu\n");
n = Console.readInt("?");
a = new double[n+1];
b = new double[n+1];
c = 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 punkt x");
x = Console.readInt("?");
System.out.println("Podaj stopien pochodnej\n");
s = Console.readInt("?");
if ((s<0)||(s>n)) {
System.out.println("Zle wpisany stopien pochodnej");
return;
}
for (i=0; i<=n; i++) {
b[i]=a[i];
}
for (j=1; j<=s; j++) {
tmp=wspol(0);
for (i=0; i<=n; i++) {
b[i]=c[i];
}
}
System.out.println("Wartosc pochodnej znormalizowanej " + s + " stopnia wynosi: " + wart(0));
return;
}
}
PS Poza tym uwielbiam tą stronę i wszystkie artykuły jakie czytałem!