📄 goldensearch.java
字号:
/*@author 邱宇峰 ,software project031
*2004,10,6
*/
import java.math.*;
import java.awt.*;
import java.awt.event.*;
public class goldenSearch extends Frame implements ActionListener{
static goldenSearch frm=new goldenSearch();
static Button b1;
static int array[][]=new int[30][2];
static int X=0;
static int x=0;
static int count=0;
static double p=0;
public static void main(String[] args){
frm.setTitle("黄金分割搜索求cos函数最大值");
b1=new Button("click to start");
frm.add(b1,"South");
frm.setSize(500,500);
frm.setLocation(200,200);
frm.setVisible(true);
b1.addActionListener(frm);
frm.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}
});
}
public void paint(Graphics g){
double X,Y;
g.drawLine(80,300,420,300);
g.drawLine(252,150,252,300);
g.drawString("0",250,310);
g.drawString("-1.57",91,310);
g.drawString("1.57",405,310);
for(X=-(3.14/2);X<(3.14/2);X+=0.01){
Y=100*Math.cos(X);
g.drawString(".",91+x,300-(int)Y);
x++;
}
}
/*this actionevent is to draw the line
*/
public void actionPerformed(ActionEvent f){
Graphics g=getGraphics();
double a=-(3.14/2),b=(3.14/2),e=0.1,X1,X2,f1,f2;
X1=a+0.382*(b-a);
X2=a+0.618*(b-a);
f1=Math.cos(X1);
f2=Math.cos(X2);
while(b-a>e){
if(f2>f1){
a=X1;X1=X2;f1=f2;X2=a+0.618*(b-a);f2=Math.cos(X2);
}
else{
b=X2;X2=X1;f2=f1;X1=a+0.382*(b-a);f1=Math.cos(X1);
}
g.setColor(Color.red);
g.drawString("。",93+(int)(100*((a+b)/2))+157,300-(int)(100*Math.cos((a+b)/2)));
g.setColor(Color.blue);
g.drawLine(248+(int)(100*a),300,248+(int)(100*a),300-(int)(100*Math.cos(a)));
g.setColor(Color.yellow);
g.drawLine(248+(int)(100*b),300,248+(int)(100*b),300-(int)(100*Math.cos(b)));
for(int i=0;i<500000000;i++);
g.setColor(Color.white);
g.drawLine(248+(int)(100*a),300,248+(int)(100*a),300-(int)(100*Math.cos(a)));
g.drawLine(248+(int)(100*b),300,248+(int)(100*b),300-(int)(100*Math.cos(b)));
g.drawString("。",93+(int)(100*((a+b)/2))+157,300-(int)(100*Math.cos((a+b)/2)));
}
g.setColor(Color.red);
g.drawString("。",93+(int)(100*((a+b)/2))+157,300-(int)(100*Math.cos((a+b)/2)));
}
}
/*
class carrySearch{
double a=-1,b=1,e=0.0001,X1,X2,f1,f2;
double Search(){
X1=a+0.382*(b-a);
X2=a+0.618*(b-a);
f1=Math.cos(X1);
f2=Math.cos(X2);
while(b-a>e){
if(f2>f1){
a=X1;X1=X2;f1=f2;X2=a+0.618*(b-a);f2=Math.cos(X2);
}
else{
b=X2;X2=X1;f2=f1;X1=a+0.382*(b-a);f1=Math.cos(X1);
}
}
X1=(a+b)/2;
//System.out.println("Y "+f1);
return(X1);
}
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -