public class ren02 {
double[][] x=new double[10][3];
int[] y=new int[10];
double[] a=new double[3];
double b,q;
double f1,m1,d1,d2,db;
public static void main(String [] args) {
ren02 test=new ren02();
}
ren02(){
x[1][1]=5;
x[1][2]=5;
y[1]=1;
x[2][1]=3;
x[2][2]=4;
y[2]=-1;
a[1]=1;
a[2]=1;
b=0;
q=-59;
f1=f(a,b,x,q);
d1=df(1,a,b,x,q);
d2=df(2,a,b,x,q);
db=db(a,b,x,q);
System.out.println(d1);
System.out.println(d2);
System.out.println(db);
}
double db(double[] a,double b,double[][] x,double q){
double d1,d2,dx;
double h;
h=0.01;
d1=f(a,b+h,x,q);
d2=f(a,b,x,q);
dx=(d1-d2)/h;
return dx;
}
double df(int m,double[] a,double b,double[][] x,double q){
double d1,d2,dx;
double h;
double[] ax=new double[3];
h=0.01;
ax[m]=a[m]+h;
ax[2]=a[2];
d1=f(ax,b,x,q);
d2=f(a,b,x,q);
dx=(d1-d2)/h;
return dx;
}
double f(double[] a,double b,double[][] x,double q){
int m,h,z;
double g1,m1,minmet,qx;
minmet=9999;
for(m=1;m<3;m++){
z=0;
h=0;
if(g(m,a,b,x)>0)h=h+1;
if(y[m]==1)h=h+1;
if(h==2)z=100;
h=0;
if(g(m,a,b,x)<0)h=h+1;
if(y[m]==-1)h=h+1;
if(h==2)z=100;
m1=met(m,a,b,x);
if(z<50)m1=9999;
if(m1<minmet)minmet=m1;
}
qx=0;
for(m=1;m<3;m++){
z=0;
h=0;
if(g(m,a,b,x)>0)h=h+1;
if(y[m]==1)h=h+1;
if(h==2)z=100;
h=0;
if(g(m,a,b,x)<0)h=h+1;
if(y[m]==-1)h=h+1;
if(h==2)z=100;
m1=met(m,a,b,x);
if(z>50)qx=qx+q*m1;
}
minmet=minmet+qx;
return minmet;
}
double met(int m,double[] a,double b,double[][] x){
double m1,m2,t,e;
m1=a[1]*a[1]+a[2]*a[2];
m2=-b-a[1]*x[m][1]-a[2]*x[m][2];
t=m2/m1;
e=m1*t*t;
return e;
}
double g(int m,double[] a,double b,double[][] x){
double g1;
g1=a[1]*x[m][1]+a[2]*x[m][2]+b;
return g1;
}
}
最終更新:2011年05月05日 17:43