Hallo,
ich soll ein Programm erstellen.
Man berechnet mit xk= x_k-1 -0.01*f'(x_k-1) das lokale Minimum.
Diese Vorschrift soll solange angewandt werden, bis zwei aufeinander folgende Werte nahe genug beisammen liegen.
Schreibe das Programm static double optimize(func, x0), welche ein lokales Minimum fur folgende angegebenen Funktionen berechnet. W¨ahlen Sie als Startpunkt x0=1,4,6,11 fur folgende Funktionen: func=0: f1(x)=1.84+1.42x−2.4x2+0.91x3−0.124x4+0.0055x5. func=1: f2(x)=(x−a)2+b, wobei a,b globale Variablen sind.
Mithilfe von func soll dabei die zu berechnende Funktion ausgewählt werden (d.h. func=0 steht fu¨r die erste Funktion, func=1 fu¨r die Zweite). Die Ableitung der beiden Funktionen an einer beliebigen Stelle x soll in einer separaten Methode numericalGradient(func, x) berechnet werden.
Ich habe folgendes geschrieben. Ich habe keine Ahnung ob es stimmt. Denn bei mir kommt bei dem ausführen des Programms immer: RunAs: AntBuild - das ist früher nicht gekommen und mein erstes Programm hat funktioniert. Was kann ich auch dagegen tun?
Mein Code ist hier mal aufgelistet was ich so geschrieben habe. Kann ich mit Mathpow so die Funktionen ausgeben?
Irgendwas stimmt vorne und hinten nicht. Ich bin absoluter Anfänger und weiss nicht mehr weiter! Über Hilfe jeder Art wäre ich sehr dankbar!
ich soll ein Programm erstellen.
Man berechnet mit xk= x_k-1 -0.01*f'(x_k-1) das lokale Minimum.
Diese Vorschrift soll solange angewandt werden, bis zwei aufeinander folgende Werte nahe genug beisammen liegen.
Schreibe das Programm static double optimize(func, x0), welche ein lokales Minimum fur folgende angegebenen Funktionen berechnet. W¨ahlen Sie als Startpunkt x0=1,4,6,11 fur folgende Funktionen: func=0: f1(x)=1.84+1.42x−2.4x2+0.91x3−0.124x4+0.0055x5. func=1: f2(x)=(x−a)2+b, wobei a,b globale Variablen sind.
Mithilfe von func soll dabei die zu berechnende Funktion ausgewählt werden (d.h. func=0 steht fu¨r die erste Funktion, func=1 fu¨r die Zweite). Die Ableitung der beiden Funktionen an einer beliebigen Stelle x soll in einer separaten Methode numericalGradient(func, x) berechnet werden.
Ich habe folgendes geschrieben. Ich habe keine Ahnung ob es stimmt. Denn bei mir kommt bei dem ausführen des Programms immer: RunAs: AntBuild - das ist früher nicht gekommen und mein erstes Programm hat funktioniert. Was kann ich auch dagegen tun?
Mein Code ist hier mal aufgelistet was ich so geschrieben habe. Kann ich mit Mathpow so die Funktionen ausgeben?
Irgendwas stimmt vorne und hinten nicht. Ich bin absoluter Anfänger und weiss nicht mehr weiter! Über Hilfe jeder Art wäre ich sehr dankbar!
Java:
package main;
public class Optimize {
public static final double A = 5;
public static final double B = -2;
public static void main(String[] args) {
}
public static double optimize(int func, double x0) {
; // Berechne lokales Minimum nach gegebener Vorschrift
// Ableitung
y(x_k-1) = (f.apply(x_k-1 + h) - f.apply(x_k-1 - h) ) / (2 / h);
// Start der Berechnung
private double diffquotient (double x_k-1 double h){
return (f.apply(x_k-1 + h) - f.apply(x_k-1 - h) ) / (2 / h);
}
private boolean notClose (double x0); {
return Math.ln(x0) = 10^-5;
// Berechne lokales Minimum
x_k = x_k-1 - (0.01 * (y(x_k-1)));
System.out.println("x_k");
return 0.00;
}
public static double evalFunc(int func, double x) {
if(func==0)
return f1(x);
return f2(x);
}
public static double f1(double x) {
// Gibt den y-Wert der Funktion1 mit dem beliebig gewählten x-Wert aus
{
y1 = Mathpow(1.84 + 1.42x,1 - 2.4x,2 + 0.91x,3 - 0.124x,4 + 0.0055x,5 )
}
return y;
}
public static double f2(double x) {
// Gibt den y-Wert von der Funktion2 mit dem beliebig gewählten x-Wert zurück
{
y2 = Mathpow((x-A,2) + B)
return y2;
}
}
}
public static double numericalGradient(int func, double x) {
; // Berechne den numerischen Gradienten
// Ableitung an beliebiger Stelle x der Funktion func=0
// Start der Berechnung
private double diffquotient (double x double h){
return (func=0.apply(x + h) - func=0.apply(x - h) ) / (2 / h);
}
private boolean notClose (double x) {
return Math.ln(x) = 10^-5;
//Ableitung an beliebiger Stelle x der Funktion func=1
// Start der Berechnung
private double diffquotient (double x double h){
return (func=1.apply(x + h) - func=1.apply(x - h) ) / (2 / h);
}
private boolean notClose (double x); {
return Math.ln(x) = 10^-5;
return ;
}
}
Zuletzt bearbeitet von einem Moderator: