?? pmo_work39.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 + -