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

📄 yunchou2.java

📁 一维搜索程序第二种方法
💻 JAVA
字号:
import java.lang.*;
import javax.swing.JOptionPane;
class RR
{  
  int f(int x)
       {
         if(x<=1)
           return 1;
         else
           return f(x-1)+f(x-2);
       }
}
public class YunChou2
{  
   public static void main(String args[])
     {
       int n=0;
       RR tt=new RR();
       String inputString;
       String outputString;
       inputString=JOptionPane.showInputDialog("请输入区间下限a0:");
       double a0=Integer.parseInt(inputString);
       inputString=JOptionPane.showInputDialog("请输入区间上限b0:");
       double b0=Integer.parseInt(inputString);
       inputString=JOptionPane.showInputDialog("请输入绝对精度:");
       double jd=Double.parseDouble(inputString);
       for(int i=0;i>=0;i++)
          {
       		 if(tt.f(i)*jd>=1)
       		   {
       			  n=i;
       		  	  break;
       		   }
          }
       outputString="取值区间:"+"("+a0+","+b0+ ")"+"\n"+"绝对精度="+jd+"\n"+"搜索次数="+n;
       JOptionPane.showMessageDialog(null,outputString,"定义域",JOptionPane.INFORMATION_MESSAGE);
       double t1 =b0+ (double)tt.f(n-1)/(double)tt.f(n) *(a0-b0);
       double t2 =a0+(double)tt.f(n-1)/(double)tt.f(n)*(b0-a0);
       YunChou2 g=new YunChou2();
       g.init1(t1,t2,a0,b0,n);  
    } 
  public void init1(double t1,double t2,double a0,double b0,int n)
    {  String outputString1;
       RR t=new RR();
       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+(double)t.f(n-i-3)/(double)t.f(n-i-2)*(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+(double)t.f(n-i-2)/(double)t.f(n-i-1)*(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+(double)t.f(n-i-2)/(double)t.f(n-i-1)*(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+(double)t.f(n-i-2)/(double)t.f(n-i-1)*(b0-a0);
    			      ft1=t1*t1+t1+1;
                      ft2=t2*t2+t2+1;
                      continue;
    		        } 
    		  
    		  }
    		else
    		 {
    	        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=outputString1+"\n"+"Minf(x)="+ft1;
         JOptionPane.showMessageDialog(null,outputString1,"最后运行结果",JOptionPane.INFORMATION_MESSAGE); 
         System.exit(0);
       }
    else
       {
    	 outputString1=outputString1+"\n"+"Minf(x)="+ft2;
         JOptionPane.showMessageDialog(null,outputString1,"最后运行结果",JOptionPane.INFORMATION_MESSAGE); 
         System.exit(0);
        }
     
   }
}
 

⌨️ 快捷键说明

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