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

📄 yunchou3.java

📁 一维搜索程序——黄金分割点方法
💻 JAVA
字号:
import java.lang.*;
import javax.swing.JOptionPane;
public class YunChou3
 {  
     
    public static void main(String args[])
    {
       int n=0;
       String inputString;
       String outputString;
       inputString=JOptionPane.showInputDialog("请输入区间下限a0:");
       double a0=Double.parseDouble(inputString);
       inputString=JOptionPane.showInputDialog("请输入区间上限b0:");
       double b0=Double.parseDouble(inputString);
       inputString=JOptionPane.showInputDialog("请输入绝对精度:");
       double jd=Double.parseDouble(inputString);
       double t1 =b0+0.618*(a0-b0);
       double t2 =a0+0.618*(b0-a0);
       for(int i=1;i>=1;i++)
           {
       		 if(Math.pow(0.618,(double)i)<=jd)
       		   {
       			  n=i+1;
       			  break;
       		   }
          }
       outputString="取值区间:"+"("+a0+","+b0+ ")"+"\n"+"绝对精度="+jd;
       JOptionPane.showMessageDialog(null,outputString,"取值区间和精度",JOptionPane.INFORMATION_MESSAGE); 
    
       YunChou3 t=new YunChou3();
       t.init1(t1,t2,a0,b0,n);  
       }
    public void init1(double t1,double t2,double a0,double b0,int n)
    {  
       
       String outputString1;
       double ft1=t1*t1+t1+1;
       double ft2=t2*t2+t2+1;
       for(int i=0;i<n-2;i++)
          {
             if(t1<t2)
               {
                  if(ft1<ft2)
                    {
    		           a0=a0;
    			       b0=t2;
    			       t1=t1;
    			       t2=b0+0.618*(a0-b0);
    			       ft1=t1*t1+t1+1;
                       ft2=t2*t2+t2+1;
                       continue;
    		         }
    	       	  else if(ft1>=ft2)
    	       	         {
    			           a0=t1;
    			           b0=b0;
    			           t1=t2;
    			           t2=a0+0.618*(b0-a0);
    			           ft1=t1*t1+t1+1;
                           ft2=t2*t2+t2+1;
                           continue;
    		             }
    	        }
    	    else if(t1>t2)
    	           {
    		          if(ft1>ft2)
    		            {
    			           a0=a0;
    			           b0=t1;
    			           t1=t2;
    			           t2=b0+0.618*(a0-b0);
    			           ft1=t1*t1+t1+1;
                           ft2=t2*t2+t2+1;
                           continue;
    		             }
    		          else if(ft1<=ft2)
    		                 {
    			               a0=t2;
    			               b0=b0;
    			               t1=t1;
    			               t2=a0+0.618*(b0-a0);
    			               ft1=t1*t1+t1+1;
                               ft2=t2*t2+t2+1;
                               continue;
    		                 } 
    		       }
    	    else
    		  {
    		  	a0=a0;
    		  	b0=b0;
    	        t1=1/2*(a0+b0);
    	        t2=a0+(1/2+Math.random())*(b0-a0);
    	        ft1=t1*t1+t1+1;
                ft2=t2*t2+t2+1;
             } 
          }
    outputString1="最后两次试点的位置为:"+"\n"+"x1="+t1+"\n"+"x2="+t2;
    if(ft1<=ft2)
      {  
         
    	 outputString1="搜索次数="+n+"\n"+outputString1+"\n"+"Minf(x)="+ft1;
         JOptionPane.showMessageDialog(null,outputString1,"最后运行结果",JOptionPane.INFORMATION_MESSAGE); 
         System.exit(0);
      }
    else
      {
    	  outputString1="搜索次数="+n+"\n"+outputString1+"\n"+"Minf(x)="+ft1;
         JOptionPane.showMessageDialog(null,outputString1,"最后运行结果",JOptionPane.INFORMATION_MESSAGE); 
         System.exit(0);
      } 
    }
    }
  

 

⌨️ 快捷键说明

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