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

📄 golddiv.java

📁 数值算法
💻 JAVA
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.Panel;
import java.io.*;
public class GoldDiv extends Frame implements ActionListener
{
	private float a=1.43f,b=4.57f,e=0.0001f,MaxX;
	int flag=1;
	Button bb;
	public GoldDiv()
	{	
		setLayout(new FlowLayout(FlowLayout.LEFT));
		bb=new Button("DRAW");
		add(bb);
		setSize(700,500);
		setBackground(Color.white);
		bb.addActionListener(this);
	}
	
	public void paint(Graphics g)
	{
		float i,x;
		g.drawLine(300,50,300,450);
		g.drawLine(10,250,700,250);
		for(i=a;i<=b;i=i+0.01f)
		{	
			x=i-3.0f;
			g.drawLine((int)(i*100),(int)(250-Fac(x)*100),(int)(i*100+1),(int)(250-Fac(x+0.01f)*100));
		}	 
	}
	public float Fac(float x)
	{		
		float y;
		y=(float)Math.cos(x);
		return y;
	}
	public void Scrawl(float A,float B)
	{	
		float x;
		int x1,x2,y1,y2;
		Graphics g = getGraphics();
		if(flag==1)
		{	
			g.setColor(Color.blue);
			flag++;
		}
		else if(flag==2)
		{
			g.setColor(Color.green);
			flag++;
		}	
		else if(flag==3)
		{
			g.setColor(Color.red);
			flag=(flag+1)%3;
		}
		for(int j=0;j<500000000;j++){}		
		for(x=A;x<=B;x=x+0.01f)
		{
			x1=(int)(x*100)+300;
			x2=(int)(x*100)+300;
			y1=250-(int)(Fac(x)*100);
			y2=250-(int)(Fac(x)*100);	
			g.drawLine(x1,y1,x1,250);
			g.drawLine(x2,y2,x2,250);
		}
		/*	x1=(int)(A*100)+300;
			x2=(int)(B*100)+300;
			y1=250-(int)(Fac(A)*100);
			y2=250-(int)(Fac(B)*100);	
			g.drawLine(x1,y1,x1,250);
			g.drawLine(x2,y2,x2,250);*/
	
	}
	public void Metic()
	{
		float x1,x2,f1,f2;
		a=a-3f;
		b=b-3f;
		x1=a+(float)(0.382*(b-a));
		x2=a+(float)(0.618*(b-a));
		f1=Fac(x1);
		f2=Fac(x2);
		while(b-a>e)
		{
			if(f2>f1)
			{
				System.out.println("AAAAAAAAAAAAAAAAAA");
				a=x1;
				x1=x2;
				f1=f2;
				x2=a+(float)(0.618*(b-a));
				f2=Fac(x2);
			}
			else
			{
				System.out.println("BBBBBBBBBBBBBBB");
				b=x2;
				x2=x1;
				f2=f1;
				x1=a+(float)(0.382*(b-a));
				f1=Fac(x1);
			}						
			Scrawl(a,b);
		}
		MaxX=(a+b)/2;	
		System.out.println(MaxX);
	}
	public void actionPerformed(ActionEvent eve)
	{
		if(eve.getSource()==bb)
		{
			Metic();
			System.out.println("completed");
		}
	}
	
	public static void main(String[] args)throws IOException
	{
		GoldDiv fuck=new GoldDiv();
		fuck.setTitle("黄金分割搜索");
		fuck.setVisible(true);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -