www.pudn.com > YunChou3.rar > YunChou3.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=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); 
      }  
    } 
    }