⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 erfen.java

📁 二分法搜索的程序实现
💻 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 + -