abstract class Funktion {
/**
* @param args wird nicht verwendet
*/
double x, eps, xmax;
int i = 0;
abstract double f();
abstract double g();
abstract double e();
static Funktion[] rechnen = new Funktion[10];
public void tabelle() {
System.
out.
println("WERTETABELLE"); do {
double var1 = this.f();
System.
out.
printf("x:%5.1f",
this.
x); System.
out.
printf(" | y:%9.3f\n", var1
); this.x = this.x + this.e();
// this.i++;
}
while (this.x <= this.xmax);
}
public void newton() {
System.
out.
println("Startwert: " + this.
x); do {
this.x = this.x - this.f() / this.g();
System.
out.
printf("x:%12.8f",
this.
x); System.
out.
printf(" | y:%12.8f\n",
this.
f()); this.i++;
if (this.i == 25) {
System.
out.
println("max. Iterationsanzahl erreicht, keine Loesung gefunden!"); return;
}
}
while (Math.
abs(this.
f()) > this.
eps && this.
i < 25); System.
out.
println("Eine Nullstelle ist naeherungsweise: " + this.
x); }
public static void main
(String[] args
) { // Tabelle/Parabel (x-Wert[= Startwert], maximaler x-Wert, eps, a, b, c, d)
rechnen[0] = new Tabelle(1.0 , 0 , 0.00000001 , 2 , -20 , -6, 30);
rechnen[0].newton();
rechnen[1] = new Tabelle(-2.0 , 12.0 , 0.1 , 2.0 , -20.0 , -6.0, 30.0);
rechnen[1].tabelle();
rechnen[2] = new Parabel(0.5 , 0 , 0.00000001 , 1.0 , 3.0 , -5.0);
rechnen[2].newton();
rechnen[3] = new Parabel(0.5 , 12.0 , 0.1 , 1.0 , 3.0 , -5.0);
rechnen[3].tabelle();
/*
* Wertetabelle hat einen Vorzeichenwechsel bei -1.3 auf -1.2 -> Nullstelle
Wertetabelle hat einen Vorzeichenwechsel bei 1.1 auf 1.2 -> Nullstelle
Wertetabelle hat einen Vorzeichenwechsel bei 10.1 auf 10.2 -> Nullstelle
*/
rechnen[4] = new Tabelle(-2 , 0 , 0.00000001 , 2 , -20 , -6, 30);
rechnen[4].newton();
rechnen[5] = new Tabelle(1 , 0 , 0.00000001 , 2 , -20 , -6, 30);
rechnen[5].newton();
rechnen[6] = new Tabelle(50 , 0 , 0.00000001 , 2 , -20 , -6, 30);
rechnen[6].newton();
}
}
class Parabel extends Funktion {
double a, b, c;
public Parabel(double x, double xmax, double eps, double a, double b, double c) {
this.x = x;
this.xmax = xmax;
this.eps = eps;
this.a = a;
this.b = b;
this.c = c;
}
public double f() {
return this.a * x * x + this.b * x + this.c;
}
public double g() {
return 2 * this.a * x + this.b;
}
public double e() {
return eps;
}
}
class Tabelle extends Funktion {
double a, b, c, d;
Tabelle(double x, double xmax, double eps, double a, double b, double c, double d) {
this.x = x;
this.xmax = xmax;
this.eps = eps;
this.a = a;
this.b = b;
this.c = c;
this.d = d;
}
public double f() {
return this.a * x * x * x + this.b * x * x + this.c * x + this.d;
}
public double g() {
return this.a * 3 * x * x + this.b * 2 * x + this.c;
}
public double e() {
return eps;
}
}
YWJzdHJhY3QgY2xhc3MgRnVua3Rpb24gewogICAgLyoqCiAgICAgKiBAcGFyYW0gYXJncyB3aXJkIG5pY2h0IHZlcndlbmRldAogICAgICovCiAgICBkb3VibGUgeCwgZXBzLCB4bWF4OwogICAgaW50IGkgPSAwOwogICAgYWJzdHJhY3QgZG91YmxlIGYoKTsKICAgIGFic3RyYWN0IGRvdWJsZSBnKCk7CiAgICBhYnN0cmFjdCBkb3VibGUgZSgpOwogICAgc3RhdGljIEZ1bmt0aW9uW10gcmVjaG5lbiA9IG5ldyBGdW5rdGlvblsxMF07CiAgICAKICAgIHB1YmxpYyB2b2lkIHRhYmVsbGUoKSB7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJXRVJURVRBQkVMTEUiKTsKICAgICAgICBkbyB7CiAgICAgICAgICAgIGRvdWJsZSB2YXIxID0gdGhpcy5mKCk7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRmKCJ4OiU1LjFmIiwgdGhpcy54KTsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGYoIiAgfCAgeTolOS4zZlxuIiwgdmFyMSk7CiAgICAgICAgICAgIHRoaXMueCA9IHRoaXMueCArIHRoaXMuZSgpOyAKICAgICAgICAgICAvLyB0aGlzLmkrKzsKICAgICAgICB9IAogICAgICAgIHdoaWxlICh0aGlzLnggPD0gdGhpcy54bWF4KTsKICAgIH0KICAgIAogICAgcHVibGljIHZvaWQgbmV3dG9uKCkgewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU3RhcnR3ZXJ0OiAiICsgdGhpcy54KTsKICAgICAgICBkbyB7CiAgICAgICAgCXRoaXMueCA9IHRoaXMueCAtIHRoaXMuZigpIC8gdGhpcy5nKCk7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRmKCJ4OiUxMi44ZiIsIHRoaXMueCk7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRmKCIgIHwgIHk6JTEyLjhmXG4iLCB0aGlzLmYoKSk7CiAgICAgICAgICAgIHRoaXMuaSsrOwogICAgICAgICAgICBpZiAodGhpcy5pID09IDI1KSB7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIm1heC4gSXRlcmF0aW9uc2FuemFobCBlcnJlaWNodCwga2VpbmUgTG9lc3VuZyBnZWZ1bmRlbiEiKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB3aGlsZSAoTWF0aC5hYnModGhpcy5mKCkpID4gdGhpcy5lcHMgJiYgdGhpcy5pIDwgMjUpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRWluZSBOdWxsc3RlbGxlIGlzdCBuYWVoZXJ1bmdzd2Vpc2U6ICIgKyB0aGlzLngpOwogICAgfSAKICAgIAogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgCS8vIFRhYmVsbGUvUGFyYWJlbCAoeC1XZXJ0Wz0gU3RhcnR3ZXJ0XSwgbWF4aW1hbGVyIHgtV2VydCwgZXBzLCBhLCBiLCBjLCBkKQogICAgCXJlY2huZW5bMF0gPSBuZXcgVGFiZWxsZSgxLjAgLCAwICwgMC4wMDAwMDAwMSAsIDIgLCAtMjAgLCAtNiwgMzApOwogICAgCXJlY2huZW5bMF0ubmV3dG9uKCk7CiAgICAJcmVjaG5lblsxXSA9IG5ldyBUYWJlbGxlKC0yLjAgLCAxMi4wICwgMC4xICwgMi4wICwgLTIwLjAgLCAtNi4wLCAzMC4wKTsKICAgIAlyZWNobmVuWzFdLnRhYmVsbGUoKTsKICAgIAlyZWNobmVuWzJdID0gbmV3IFBhcmFiZWwoMC41ICwgMCAsIDAuMDAwMDAwMDEgLCAxLjAgLCAzLjAgLCAtNS4wKTsKICAgIAlyZWNobmVuWzJdLm5ld3RvbigpOwogICAgCXJlY2huZW5bM10gPSBuZXcgUGFyYWJlbCgwLjUgLCAxMi4wICwgMC4xICwgMS4wICwgMy4wICwgLTUuMCk7CiAgICAJcmVjaG5lblszXS50YWJlbGxlKCk7CiAgICAgICAgLyogCiAgICAgICAgICogV2VydGV0YWJlbGxlIGhhdCBlaW5lbiBWb3J6ZWljaGVud2VjaHNlbCBiZWkgLTEuMyBhdWYgLTEuMiAtPiBOdWxsc3RlbGxlCiAgICAgICAgICAgV2VydGV0YWJlbGxlIGhhdCBlaW5lbiBWb3J6ZWljaGVud2VjaHNlbCBiZWkgMS4xIGF1ZiAxLjIgLT4gTnVsbHN0ZWxsZQogICAgICAgICAgIFdlcnRldGFiZWxsZSBoYXQgZWluZW4gVm9yemVpY2hlbndlY2hzZWwgYmVpIDEwLjEgYXVmIDEwLjIgLT4gTnVsbHN0ZWxsZSAKICAgICAgICAgKi8KICAgIAlyZWNobmVuWzRdID0gbmV3IFRhYmVsbGUoLTIgLCAwICwgMC4wMDAwMDAwMSAsIDIgLCAtMjAgLCAtNiwgMzApOwogICAgCXJlY2huZW5bNF0ubmV3dG9uKCk7CiAgICAJcmVjaG5lbls1XSA9IG5ldyBUYWJlbGxlKDEgLCAwICwgMC4wMDAwMDAwMSAsIDIgLCAtMjAgLCAtNiwgMzApOwogICAgCXJlY2huZW5bNV0ubmV3dG9uKCk7CiAgICAJcmVjaG5lbls2XSA9IG5ldyBUYWJlbGxlKDUwICwgMCAsIDAuMDAwMDAwMDEgLCAyICwgLTIwICwgLTYsIDMwKTsKICAgIAlyZWNobmVuWzZdLm5ld3RvbigpOwogICAgfSAKfQoKY2xhc3MgUGFyYWJlbCBleHRlbmRzIEZ1bmt0aW9uIHsKICAgIGRvdWJsZSBhLCBiLCBjOwogICAgcHVibGljIFBhcmFiZWwoZG91YmxlIHgsIGRvdWJsZSB4bWF4LCBkb3VibGUgZXBzLCBkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjKSB7CiAgICAgICAgdGhpcy54ID0geDsKICAgICAgICB0aGlzLnhtYXggPSB4bWF4OwogICAgICAgIHRoaXMuZXBzID0gZXBzOwogICAgICAgIHRoaXMuYSA9IGE7CiAgICAgICAgdGhpcy5iID0gYjsKICAgICAgICB0aGlzLmMgPSBjOwogICAgfQogICAgcHVibGljIGRvdWJsZSBmKCkgewogICAgICAgIHJldHVybiB0aGlzLmEgKiB4ICogeCArIHRoaXMuYiAqIHggKyB0aGlzLmM7IAogICAgfQogICAgcHVibGljIGRvdWJsZSBnKCkgewogICAgICAgIHJldHVybiAyICogdGhpcy5hICogeCArIHRoaXMuYjsgCiAgICB9CiAgICBwdWJsaWMgZG91YmxlIGUoKSB7CiAgICAJcmV0dXJuIGVwczsKICAgIH0KfQoKY2xhc3MgVGFiZWxsZSBleHRlbmRzIEZ1bmt0aW9uIHsKICAgIGRvdWJsZSBhLCBiLCBjLCBkOwogICAgVGFiZWxsZShkb3VibGUgeCwgZG91YmxlIHhtYXgsIGRvdWJsZSBlcHMsIGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGRvdWJsZSBkKSB7CiAgICAgICAgdGhpcy54ID0geDsKICAgICAgICB0aGlzLnhtYXggPSB4bWF4OwogICAgICAgIHRoaXMuZXBzID0gZXBzOwogICAgICAgIHRoaXMuYSA9IGE7CiAgICAgICAgdGhpcy5iID0gYjsKICAgICAgICB0aGlzLmMgPSBjOwogICAgICAgIHRoaXMuZCA9IGQ7CiAgICB9CiAgICBwdWJsaWMgZG91YmxlIGYoKSB7CiAgICAgICAgcmV0dXJuIHRoaXMuYSAqIHggKiB4ICogeCArIHRoaXMuYiAqIHggKiB4ICsgdGhpcy5jICogeCArIHRoaXMuZDsKICAgIH0KICAgIHB1YmxpYyBkb3VibGUgZygpIHsKICAgIAlyZXR1cm4gdGhpcy5hICogMyAqIHggKiB4ICsgdGhpcy5iICogMiAqIHggKyB0aGlzLmM7CiAgICB9CiAgICBwdWJsaWMgZG91YmxlIGUoKSB7CiAgICAJcmV0dXJuIGVwczsKICAgIH0KfQoK