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

📄 pmo_work39.java

📁 实用最优化方法,java源程序,关于powell法,大连理工大学.
💻 JAVA
字号:
import java.io.*;
class PMO_work39 {
	    public static float fx(float y1,float y2){
		float z;
		z=(float)Math.pow(y1,2)+2*(float)Math.pow(y2,2)-2*y1*y2-4*y1;
	    return z; 
         }
         public static float n(float y1,float y2,float y3,float y4){
         	float z=-((y3*(2*y1-2*y2-4)+y4*(4*y2-2*y1))/(y3*(2*y3-2*y4)+y4*(4*y4-2*y3)));
         	return z;
         	}
         	public static void main(String[] args) {
         	float x0[]={1,1};
         	float s0[]={1,0};
         	float s1[]={0,1};
         	float m=0.01f;
         	for(int i=0;i<50;i++){
         		float []x1=new float [2];
         		float []x2=new float [2];
         		float n0=n(x0[0],x0[1],s0[0],s0[1]);         		         		
         		for(int j=0;j<2;j++){
         			x1[j]=x0[j]+n0*s0[j];
         		}
         		float n1=n(x1[0],x1[1],s1[0],s1[1]); 
         		for(int j=0;j<2;j++){
         			x2[j]=x1[j]+n1*s1[j];
         		}
         		if((float)Math.pow((x2[0]-x0[0]),2)+(float)Math.pow((x2[1]-x0[1]),2)<m){
         			for(int j=0;j<2;j++){
         				x0[j]=x2[j];
         			}
         			break;
         		}
         		float d1=fx(x0[0],x0[1])-fx(x1[0],x1[1]);
         		float d2=fx(x1[0],x1[1])-fx(x2[0],x2[1]);
         		float d=d1;
         		if(d2>d1){
         			d=d2;
         		}
         		float f1=fx(x0[0],x0[1]);
         		float f2=fx(x2[0],x2[1]);
         		float f3=fx(2*x2[0]-x0[0],2*x2[1]-x0[1]);
         		if(2*d<f1-2*f2+f3){
         			for(int j=0;j<2;j++){
         				x0[j]=x2[j];
         			}
         			continue;
         		}
         		float []s2=new float [2];
         		for(int j=0;j<2;j++){
         			s2[j]=x2[j]-x0[j];
         			s0[j]=s1[j];
         			s1[j]=s2[j];
         		}
         		float n2=n(x2[0],x2[1],s2[0],s2[1]);
         		for(int j=0;j<2;j++){
         			x0[j]=x2[j]+n2*s2[j];
         		}        		
         			
         	}
	try{
        FileWriter letters=new FileWriter("d:\\PMO_work39.txt");
        letters.write("当x=:"+x0[0]);
        letters.write(","+x0[1]);
        letters.write("时,");
		letters.write("f(x)的极小值为:"+fx(x0[0],x0[1]));
		letters.write(".");
		letters.close();
		}catch(IOException e){
			System.out.println("Error--"+e.toString());
			}
    		}
       	}
	

⌨️ 快捷键说明

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