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

📄 pmo_work28.java

📁 实用最优化方法,java源程序,关于DFP法,大连理工大学.
💻 JAVA
字号:
import java.io.*;
class PMO_work28 {
	    public static float fx(float y1,float y2){
		float z;
		z=(float)Math.pow(y1,2)+3*(float)Math.pow(y2,2)+2*y1*y2-y1+y2;
        return z;          
    	public static void main(String[] args) {
    		float x[]={1,1};
       	float m=0.01f;
       	for(int i=0;i<10;i++){
       		float [] x1=new float [2];
       		float [] x2=new float [2];
       		float [] g=new float  [2];
       		float [] g1=new float [2];
       		float [] g2=new float [2];
       	    g[0]=2*x[0]+2*x[1]-1;
       	    g[1]=6*x[1]+2*x[0]+1;
       	    float h[][]={{1,0},{0,1}};
       	    float [][] h1=new float [2][2];
       	    if((float)Math.sqrt((float)Math.pow(g[0],2)+(float)Math.pow(g[1],2))<m)
       	    break;
       	    float [] s=new float [2];
       	    float [] s1=new float [2]; 
       	    for(int j=0;j<2;j++){
       	    	s[j]=g[j];
       	    }
       	   float n=-((s[0]*(2*x[0]+2*x[1]-1)+s[1]*(6*x[1]+2*x[0]+1))/(s[0]*(2*s[0]+2*s[1])+s[1]*(6*s[1]+2*s[0])));
       	   for(int j=0;j<2;j++){
           x1[j]=x[j]+n*s[j]; 
       	   } 
       	    g1[0]=2*x1[0]+2*x1[1]-1;
       	    g1[1]=6*x1[1]+2*x1[0]+1;       	   
       	   if((float)Math.sqrt((float)Math.pow(g1[0],2)+(float)Math.pow(g1[1],2))<m){
       	   	for(int j=0;j<2;j++){
       	   		x[j]=x1[j];       	   		
       	   	}
       	   	break;
       	   	}
       	   	float [][] dx=new float [2][1];
       	   	float [][] dg=new float [2][1];
       	   	float [][] dxt=new float [1][2];
       	   	float [][] dgt=new float [1][2];
       	   	for(int j=0;j<2;j++){
       	   		dx[j][0]=x1[j]-x[j];
       	   		dxt[0][j]=dx[j][0];
       	   		dg[j][0]=g1[j]-x[j];
       	   		dgt[0][j]=dg[j][0];
       	   	}
       	   	for(int j=0;j<2;j++){
       	   	    for(int k=0;k<2;k++){
       	   	    	h1[j][k]=h[j][k]+(dx[j][0]*dxt[0][k])/(dxt[0][0]*dg[0][0]+dxt[0][1]*dg[1][0])-(dg[j][0]*dgt[0][k])/((float)Math.pow(dg[0][0],2)+(float)Math.pow(dg[1][0],2));
       	   	    }       	   		
       	   	}
       	   	for(int j=0;j<2;j++){
       	   		s1[j]=-h1[j][0]*g1[0]-h1[j][1]*g1[1];
       	   	}
       	   	n=-((s1[0]*(2*x1[0]+2*x1[1]-1)+s1[1]*(6*x1[1]+2*x1[0]+1))/(s1[0]*(2*s[0]+2*s1[1])+s1[1]*(6*s1[1]+2*s1[0])));
            for(int j=0;j<2;j++){
            x2[j]=x1[j]+n*s1[j]; 
       	    } 
	        g2[0]=2*x2[0]+2*x2[1]-1;
       	    g2[1]=6*x2[1]+2*x2[0]+1;
       	    for(int j=0;j<2;j++){
       	    	x[j]=x2[j];
       	    }
       	    if((float)Math.sqrt((float)Math.pow(g2[0],2)+(float)Math.pow(g2[1],2))<m)
	       break;
	}
	try{
        FileWriter letters=new FileWriter("d:\\PMO_work28.txt");
        letters.write("当x=:"+x[0]);
        letters.write(","+x[1]);
        letters.write("时,");
		letters.write("f(x)的极小值为:"+fx(x[0],x[1]));
		letters.write(".");
		letters.close();
		}catch(IOException e){
			System.out.println("Error--"+e.toString());
			}
    		}
}
       	
	   	
       	    

⌨️ 快捷键说明

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