Code: Alles auswählen
package leastsquare;
import java.text.DecimalFormat;
/**
*
* @author marco
*/
public class NeuronalesNetz {
private DecimalFormat f;
private double m;
private double b;
private double n;
private int x0 = 1;
public NeuronalesNetz(double m, double b, double n) {
this.m = m;
this.b = b;
this.n = n;
f = new DecimalFormat("#0.00"); // begrenzt die Ausgabe von double Zahlen auf zwei Nachkommastellen
}
public void train(double x, double t) {
//Berechnung der Ausgabe (y)
double y = x * m + b;
// Berechnung der Fehlerkorrektur
b += x0 * n * (t - y);
m += x * n * (t - y);
System.out.println("Regressionsgerade: y = " + f.format(m) + "*x+" + f.format(b));
}
}
Als Testvektoren können nun die x und y Werte der gewünschten Punkte eingegeben werden. (Achtung, n muss sehr klein gewählt werden um eine Konvergenz zu erreichen)
Code: Alles auswählen
package leastsquare;
/**
*
* @author marco
*/
public class LeastSquare {
public static void main(String[] args) {
// initialisierung mit m=0, b=0, n=0.003
NeuronalesNetz n = new NeuronalesNetz(0, 0, 0.003);
for (int i = 0; i < 500; i++) {
// n.train(x, y)
n.train(-1, -1);
n.train(0, 1);
n.train(1, 2);
n.train(2, 1);
n.train(3, 2);
n.train(4, 3);
}
}
}