📄 erfen.java
字号:
import java.awt.*;
import java.awt.event.*;
/**
*
*
* @author bobo
* @version 1.00 12/12/04
*/
public class erfen{
public static double Pi=3.1415926;
public static void main(String args[]){
Frame f=new Frame("二分法搜索");
Button b1=new Button(" draw x=2sinX ");
Button b2=new Button("搜索x=2*sin x的根");
Panel p=new Panel();
p.setBackground(Color.yellow);
f.add(p,"South");
p.add(b1);
p.add(b2);
f.setBounds(100,50,800,640);
Listener1 bh1=new Listener1(f);
Listener2 bh2=new Listener2(f);
Listener3 bh3=new Listener3(f);
f.addWindowListener(bh1);
b1.addActionListener(bh2);
b2.addActionListener(bh3);
f.setVisible(true);
}
}
class Listener1 extends WindowAdapter{
Listener1(Frame f){
this.f=f;
}
private Frame f;
public void windowClosing(WindowEvent e){
System.exit(0);
}
}
class Listener2 implements ActionListener{
Listener2(Frame f){
this.f=f;
}
private Frame f;
public void actionPerformed(ActionEvent e){
Graphics g=f.getGraphics();
g.drawLine(20,300,780,300);
g.drawLine(400,40,400,580);
g.drawString("0",392,295);
g.drawString("x",775,310);
g.drawString("y",404,50);
g.drawLine(400,40,398,44);
g.drawLine(400,40,402,44);
g.drawLine(780,300,776,298);
g.drawLine(780,300,776,302);
g.drawString("-π",254,298);
g.drawString("-2π",150,310);
g.drawString("π",527,298);
g.drawString("2π",654,310);
for(int x=120;x<=660;x++){
double double_y2=300-2*(Math.sin((x-400)*(6*erfen.Pi/760)))*(760/(erfen.Pi*6));
double double_y3=300-((x-400)*(6*erfen.Pi/760)-2*(Math.sin((x-400)*(6*erfen.Pi/760))))*(760/(erfen.Pi*6));
g.setColor(Color.gray);
g.drawString(".",x,300-(x-400));
g.setColor(Color.pink);
g.drawString(".",x,(int)double_y2);
g.setColor(Color.green);
g.drawString(".",x,(int)double_y3);
for(int i=0;i<1500000;i++);
}
g.setColor(Color.black);
g.drawString("即求"+" "+"与" , 10, 50);
g.drawString(" 的交点的个数", 118, 50);
g.drawString("或",10, 65);
g.drawString("与 x 轴的交点的个数", 81, 65);
g.setColor(Color.pink);
g.drawString("y=2sin x", 70, 50);
g.drawString("y=2sin x", 627, 380);
g.setColor(Color.gray);
g.drawString("y=x", 35, 50);
g.drawString("y=x", 620, 100);
g.setColor(Color.green);
g.drawString("y=x-2sin x", 23, 65);
g.drawString("y=x-2sin x", 242, 550);
}
}
class Listener3 implements ActionListener{
Listener3(Frame f){
this.f=f;
}
private Frame f;
private double x_zuo,x_you,y_zuo,y_you,x,y,x_jie,e=0.01;
public void actionPerformed(ActionEvent e){
f(-3.,-1.);f(-1.1,0.81);f(1.,3.);
}
public void f(double x_zuo,double x_you){
y_zuo=300-(x_zuo-2*(Math.sin(x_zuo)))*(760/(erfen.Pi*6));
y_you=300-(x_you-2*(Math.sin(x_you)))*(760/(erfen.Pi*6));
System.out.println("x_zuo="+(int)x_zuo+" "+"y_zuo="+(int)y_zuo);
System.out.println("x_you="+x_you+" "+"y_you="+(int)y_you);
System.out.println("chushi");
while(x_you-x_zuo>e){
x=(x_zuo+x_you)/2;y=x-2*(Math.sin(x));
if((x_zuo-2*(Math.sin(x_zuo)))*y<0){
x_you=x;
Graphics g=f.getGraphics();
g.setColor(Color.blue);
g.drawLine((400+(int)(x*(760/(erfen.Pi*6)))),310,(400+(int)(x*(760/(erfen.Pi*6)))),290);
System.out.println("x_zuo="+x_zuo+" "+"y_zuo="+(int)y_zuo);
System.out.println("x_you="+x_you+" "+"y_you="+(int)y_you);
System.out.println("if called");
for(int i=0;i<15000000;i++);
}
else{
x_zuo=x;
Graphics g=f.getGraphics();
g.setColor(Color.blue);
g.drawLine((400+(int)(x*(760/(erfen.Pi*6)))),310,(400+(int)(x*(760/(erfen.Pi*6)))),290);
System.out.println("x_zuo="+x_zuo+" "+"y_zuo="+(int)y_zuo);
System.out.println("x_you="+x_you+" "+"y_you="+(int)y_you);
System.out.println("else called");
for(int i=0;i<15000000;i++);
}
}
x_jie=((x_zuo+x_you)/2);
Graphics g=f.getGraphics();
g.setColor(Color.red);
g.drawString("x",(400+(int)(x*(760/(erfen.Pi*6)))-3),304);
g.drawLine(400+(int)(x*(760/(erfen.Pi*6))),300,400+(int)(x*(760/(erfen.Pi*6))),(int)(300-2*Math.sin(x)*(760/(erfen.Pi*6))));
if(Math.abs(x-0)<e){
g.drawString("搜索得根:x=0",402,316);
}
else{
g.drawString("搜索得根:x="+x,400+(int)(x*(760/(erfen.Pi*6))),(int)((300+(300-2*Math.sin(x)*(760/(erfen.Pi*6))))/2));
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -