Ich habe Probleme, die aktualisierten Werte von initial_guess_1 und initial_guess_2 zurück in die GoldenSectionSearch-Methode (Ich habe versucht, die Methode selbst aufrufen, bis die Beendigungsbedingung mit dem "if" zugeordnet ist). Meine Versuche, diese Lösung selbst wurden beeinflusst durch das, was ich hier gefunden:Wie übergebe ich aktualisierte Parameterwerte zurück an die Methode, von der sie kamen?
http://www.java-tutorial.com/java-tutorial/java-classes-methods/java-call-reference/
Ich bin immer noch nicht in der Lage, herauszufinden, was ich tue, falsch aktualisierte Werte bei dem Versuch, in die sie zurück zu gelangen Methode. Was mache ich falsch und wie repariere ich es? Ich bin ein Neuling bei der Programmierung und möchte Dinge in die kleinsten, am leichtesten verstandenen Begriffe zerlegen.
public static double GoldenSectionSearch(double x_1, double x_2, double initial_guess_1,double initial_guess_2 ,double gradient_x, double gradient_y, double a,double a_0,double a_1,double a_2,double b_0,double b_1,double p,double N){
//Stuff
if(Math.abs((100*(x_2 - x_1*x_1)*(x_2 - x_1*x_1) + (1- x_1)*(1- x_1)) - (100*(initial_guess_2 - initial_guess_1*initial_guess_1)*(initial_guess_2 - initial_guess_1*initial_guess_1) + (1- initial_guess_1)*(1- initial_guess_1)))/Math.abs(1+(100*(initial_guess_2 - initial_guess_1*initial_guess_1)*(initial_guess_2 - initial_guess_1*initial_guess_1) + (1- initial_guess_1)*(1- initial_guess_1))) >=0.50*Math.pow(10,-6)){
initial_guess_1=x_1;
initial_guess_2=x_2;
//Double Boxed_a = new Double(a);
Double Boxed_initial_guess_1 = new Double(initial_guess_1);
Double Boxed_initial_guess_2 = new Double(initial_guess_2);
initial_guess_1.GoldenSectionSearch(initial_guess_1);
initial_guess_2.GoldenSectionSearch(initial_guess_2);
gradient_x = (400*initial_guess_1*(initial_guess_1*initial_guess_1 - initial_guess_2) + 2*(initial_guess_1 -1));
gradient_y = (200*(initial_guess_2 - initial_guess_1*initial_guess_1));
GoldenSectionSearch(initial_guess_1,initial_guess_2,x_1, x_2, gradient_x, gradient_y, a, a_0, a_1, a_2, b_0, b_1, p,N);
} else{
double f_x=(100*(x_2 - x_1*x_1)*(x_2 - x_1*x_1) + (1- x_1)*(1- x_1));
System.out.print("alpha = " + a + " " + "x_1 = " + x_1 + " " + "x_2 = " + x_2 + " " + "f_x = " + f_x);
}
// Double Boxed_a = new Double(a);
return x_2;
}