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(double s) {
System.
out.
println("Startwert: " + s
); do {
s = s - this.f() / this.g();
System.
out.
printf("x:%12.8f", s
); 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: " + s
); }
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(1.0);
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(0.5);
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(-2);
rechnen[5] = new Tabelle(1 , 0 , 0.00000001 , 2 , -20 , -6, 30);
rechnen[5].newton(1);
rechnen[6] = new Tabelle(50 , 0 , 0.00000001 , 2 , -20 , -6, 30);
rechnen[6].newton(50);
}
}
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;
}
}
CmFic3RyYWN0IGNsYXNzIEZ1bmt0aW9uIHsKICAgIC8qKgogICAgICogQHBhcmFtIGFyZ3Mgd2lyZCBuaWNodCB2ZXJ3ZW5kZXQKICAgICAqLwogICAgZG91YmxlIHgsIGVwcywgeG1heDsKICAgIGludCBpID0gMDsKICAgIGFic3RyYWN0IGRvdWJsZSBmKCk7CiAgICBhYnN0cmFjdCBkb3VibGUgZygpOwogICAgYWJzdHJhY3QgZG91YmxlIGUoKTsKICAgIHN0YXRpYyBGdW5rdGlvbltdIHJlY2huZW4gPSBuZXcgRnVua3Rpb25bMTBdOwogICAgCiAgICBwdWJsaWMgdm9pZCB0YWJlbGxlKCkgewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiV0VSVEVUQUJFTExFIik7CiAgICAgICAgZG8gewogICAgICAgICAgICBkb3VibGUgdmFyMSA9IHRoaXMuZigpOwogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50ZigieDolNS4xZiIsIHRoaXMueCk7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRmKCIgIHwgIHk6JTkuM2ZcbiIsIHZhcjEpOwogICAgICAgICAgICB0aGlzLnggPSB0aGlzLnggKyB0aGlzLmUoKTsgCiAgICAgICAgICAgLy8gdGhpcy5pKys7CiAgICAgICAgfSAKICAgICAgICB3aGlsZSAodGhpcy54IDw9IHRoaXMueG1heCk7CiAgICB9CiAgICAKICAgIHB1YmxpYyB2b2lkIG5ld3Rvbihkb3VibGUgcykgewogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU3RhcnR3ZXJ0OiAiICsgcyk7CiAgICAgICAgZG8gewogICAgICAgIAlzID0gcyAtIHRoaXMuZigpIC8gdGhpcy5nKCk7CiAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRmKCJ4OiUxMi44ZiIsIHMpOwogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50ZigiICB8ICB5OiUxMi44ZlxuIiwgdGhpcy5mKCkpOwogICAgICAgICAgICB0aGlzLmkrKzsKICAgICAgICAgICAgaWYgKHRoaXMuaSA9PSAyNSkgewogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJtYXguIEl0ZXJhdGlvbnNhbnphaGwgZXJyZWljaHQsIGtlaW5lIExvZXN1bmcgZ2VmdW5kZW4hIik7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgd2hpbGUgKE1hdGguYWJzKHRoaXMuZigpKSA+IHRoaXMuZXBzICYmIHRoaXMuaSA8IDI1KTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkVpbmUgTnVsbHN0ZWxsZSBpc3QgbmFlaGVydW5nc3dlaXNlOiAiICsgcyk7CiAgICB9IAogICAgCiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAJLy8gVGFiZWxsZS9QYXJhYmVsICh4LVdlcnRbPSBTdGFydHdlcnRdLCBtYXhpbWFsZXIgeC1XZXJ0LCBlcHMsIGEsIGIsIGMsIGQpCiAgICAJcmVjaG5lblswXSA9IG5ldyBUYWJlbGxlKDEuMCAsIDAgLCAwLjAwMDAwMDAxICwgMiAsIC0yMCAsIC02LCAzMCk7CiAgICAJcmVjaG5lblswXS5uZXd0b24oMS4wKTsKICAgIAlyZWNobmVuWzFdID0gbmV3IFRhYmVsbGUoLTIuMCAsIDEyLjAgLCAwLjEgLCAyLjAgLCAtMjAuMCAsIC02LjAsIDMwLjApOwogICAgCXJlY2huZW5bMV0udGFiZWxsZSgpOwogICAgCXJlY2huZW5bMl0gPSBuZXcgUGFyYWJlbCgwLjUgLCAwICwgMC4wMDAwMDAwMSAsIDEuMCAsIDMuMCAsIC01LjApOwogICAgCXJlY2huZW5bMl0ubmV3dG9uKDAuNSk7CiAgICAJcmVjaG5lblszXSA9IG5ldyBQYXJhYmVsKDAuNSAsIDEyLjAgLCAwLjEgLCAxLjAgLCAzLjAgLCAtNS4wKTsKICAgIAlyZWNobmVuWzNdLnRhYmVsbGUoKTsKICAgICAgICAvKiAKICAgICAgICAgKiBXZXJ0ZXRhYmVsbGUgaGF0IGVpbmVuIFZvcnplaWNoZW53ZWNoc2VsIGJlaSAtMS4zIGF1ZiAtMS4yIC0+IE51bGxzdGVsbGUKICAgICAgICAgICBXZXJ0ZXRhYmVsbGUgaGF0IGVpbmVuIFZvcnplaWNoZW53ZWNoc2VsIGJlaSAxLjEgYXVmIDEuMiAtPiBOdWxsc3RlbGxlCiAgICAgICAgICAgV2VydGV0YWJlbGxlIGhhdCBlaW5lbiBWb3J6ZWljaGVud2VjaHNlbCBiZWkgMTAuMSBhdWYgMTAuMiAtPiBOdWxsc3RlbGxlIAogICAgICAgICAqLwogICAgCXJlY2huZW5bNF0gPSBuZXcgVGFiZWxsZSgtMiAsIDAgLCAwLjAwMDAwMDAxICwgMiAsIC0yMCAsIC02LCAzMCk7CiAgICAJcmVjaG5lbls0XS5uZXd0b24oLTIpOwogICAgCXJlY2huZW5bNV0gPSBuZXcgVGFiZWxsZSgxICwgMCAsIDAuMDAwMDAwMDEgLCAyICwgLTIwICwgLTYsIDMwKTsKICAgIAlyZWNobmVuWzVdLm5ld3RvbigxKTsKICAgIAlyZWNobmVuWzZdID0gbmV3IFRhYmVsbGUoNTAgLCAwICwgMC4wMDAwMDAwMSAsIDIgLCAtMjAgLCAtNiwgMzApOwogICAgCXJlY2huZW5bNl0ubmV3dG9uKDUwKTsKICAgIH0gCn0KCmNsYXNzIFBhcmFiZWwgZXh0ZW5kcyBGdW5rdGlvbiB7CiAgICBkb3VibGUgYSwgYiwgYzsKICAgIHB1YmxpYyBQYXJhYmVsKGRvdWJsZSB4LCBkb3VibGUgeG1heCwgZG91YmxlIGVwcywgZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYykgewogICAgICAgIHRoaXMueCA9IHg7CiAgICAgICAgdGhpcy54bWF4ID0geG1heDsKICAgICAgICB0aGlzLmVwcyA9IGVwczsKICAgICAgICB0aGlzLmEgPSBhOwogICAgICAgIHRoaXMuYiA9IGI7CiAgICAgICAgdGhpcy5jID0gYzsKICAgIH0KICAgIHB1YmxpYyBkb3VibGUgZigpIHsKICAgICAgICByZXR1cm4gdGhpcy5hICogeCAqIHggKyB0aGlzLmIgKiB4ICsgdGhpcy5jOyAKICAgIH0KICAgIHB1YmxpYyBkb3VibGUgZygpIHsKICAgICAgICByZXR1cm4gMiAqIHRoaXMuYSAqIHggKyB0aGlzLmI7IAogICAgfQogICAgcHVibGljIGRvdWJsZSBlKCkgewogICAgCXJldHVybiBlcHM7CiAgICB9Cn0KCmNsYXNzIFRhYmVsbGUgZXh0ZW5kcyBGdW5rdGlvbiB7CiAgICBkb3VibGUgYSwgYiwgYywgZDsKICAgIFRhYmVsbGUoZG91YmxlIHgsIGRvdWJsZSB4bWF4LCBkb3VibGUgZXBzLCBkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjLCBkb3VibGUgZCkgewogICAgICAgIHRoaXMueCA9IHg7CiAgICAgICAgdGhpcy54bWF4ID0geG1heDsKICAgICAgICB0aGlzLmVwcyA9IGVwczsKICAgICAgICB0aGlzLmEgPSBhOwogICAgICAgIHRoaXMuYiA9IGI7CiAgICAgICAgdGhpcy5jID0gYzsKICAgICAgICB0aGlzLmQgPSBkOwogICAgfQogICAgcHVibGljIGRvdWJsZSBmKCkgewogICAgICAgIHJldHVybiB0aGlzLmEgKiB4ICogeCAqIHggKyB0aGlzLmIgKiB4ICogeCArIHRoaXMuYyAqIHggKyB0aGlzLmQ7CiAgICB9CiAgICBwdWJsaWMgZG91YmxlIGcoKSB7CiAgICAJcmV0dXJuIHRoaXMuYSAqIDMgKiB4ICogeCArIHRoaXMuYiAqIDIgKiB4ICsgdGhpcy5jOwogICAgfQogICAgcHVibGljIGRvdWJsZSBlKCkgewogICAgCXJldHVybiBlcHM7CiAgICB9Cn0KCg==