📄 halfsearch.java
字号:
/*@author 邱宇峰 ,software project031
*2004,10,6
*/
import java.math.*;
import java.awt.*;
import java.awt.event.*;
public class halfSearch extends Frame implements ActionListener{
static halfSearch frm=new halfSearch();
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("二分搜索求sin函数");
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(50,300,450,300);
g.drawLine(250,150,250,300);
g.drawString("0",250,310);
g.drawString("1.57",407,310);
g.drawString("-1.57",73,310);
for(X=-2;X<=2;X+=0.01){
Y=100*Math.sin(X);
g.drawString(".",50+x,300-(int)Y);
x++;
}
}
/*this actionevent is to draw the line
*/
public void actionPerformed(ActionEvent h){
Graphics g=getGraphics();
double a=-2,b=2,e=0.00001,X;
while(b-a>e){
X=(a+b)/2;
if((a-2*Math.sin(a))*(X-2*Math.sin(X))<0) b=X;
else a=X;
g.setColor(Color.blue);
g.drawLine(250+(int)(100*a),300,250+(int)(100*a),300-(int)(100*Math.sin(a)));
g.drawLine(250-(int)(100*a),300,250-(int)(100*a),300+(int)(100*Math.sin(a)));
g.setColor(Color.yellow);
g.drawLine(250+(int)(100*b),300,250+(int)(100*b),300-(int)(100*Math.sin(b)));
g.drawLine(250-(int)(100*b),300,250-(int)(100*b),300+(int)(100*Math.sin(b)));
if(Math.abs(X-2*Math.sin(X))<0.00001){
g.setColor(Color.red);
g.drawString("。",250+(int)(100*X),300-(int)(100*Math.sin(X)));
g.drawString("。",250-(int)(100*X),300+(int)(100*Math.sin(X)));
}
for(int i=0;i<50000000;i++);
g.setColor(Color.white);
g.drawLine(250+(int)(100*a),300,250+(int)(100*a),300-(int)(100*Math.sin(a)));
g.drawLine(250-(int)(100*a),300,250-(int)(100*a),300+(int)(100*Math.sin(a)));
g.drawLine(250+(int)(100*b),300,250+(int)(100*b),300-(int)(100*Math.sin(b)));
g.drawLine(250-(int)(100*b),300,250-(int)(100*b),300+(int)(100*Math.sin(b)));
}
}
}
/*
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 + -