/***********************************************************/ /* Funktionen fi */ /* d_fi_x ist die Ableitung nach x */ /* d_fi_y ist die Ableitung nach y */ /* Eingabe jeweils als x bzw. y */ /***********************************************************/ float sgd(float x) { return(1.0/(1.0+exp(-x))); } float f1(float x,float y) { return(pow(x-1.0,2)+pow(y-2.0,2)); } float d_f1_x(float x,float y) { return(2.0*(x-1.0)); } float d_f1_y(float x,float y) { return(2.0*(y-2.0)); } float f2(float x,float y) { return(sqrt(pow(18.0*x+100.0,2)+pow(5.0*y-50.0,2))); } float d_f2_x(float x,float y) { return((324.0*x+1800.0)/ sqrt(pow(18.0*x+100.0,2)+pow(5.0*y-50.0,2))); } float d_f2_y(float x,float y) { return((25.0*y-250.0)/ sqrt(pow(18.0*x+100.0,2)+pow(5.0*y-50.0,2))); } float f3(float x,float y) { return(pow(sgd(-26.5),2) +pow(sgd(4.0*y-26.5)-1.0,2) +pow(sgd(4.0*x-26.5)-1.0,2) +pow(sgd(4.0*x+4.0*y-26.5)-1.0,2)); } float d_f3_x(float x,float y) { float val1,val2; val1=sgd(4.0*x-26.5); val2=sgd(4.0*x+4.0*y-26.5); return(8.0*(val1-1.0)*val1*(1.0-val1) +8.0*(val2-1.0)*val2*(1.0-val2)); } float d_f3_y(float x,float y) { return(d_f3_x(y,x)); } float f4(float x,float y) { return(f3(x,y)+f3(15.0-x,15.0-y)); } float d_f4_x(float x,float y) { return(d_f3_x(x,y)-d_f3_x(15.0-x,15.0-y)); } float d_f4_y(float x,float y) { return(d_f3_y(x,y)-d_f3_y(15.0-x,15.0-y)); } float f5(float x,float y) { return(sin(x-0.5)*sin(y)*exp(-(pow(x-10.0,2)+pow(y,2))/40.0)); } float d_f5_x(float x,float y) { float val1; val1=sin(y)*exp(-(pow(x-10.0,2)+pow(y,2))/40.0); return(cos(x-0.5)*val1+sin(x-0.5)*val1*(10.0-x)/20.0); } float d_f5_y(float x,float y) { float val1; val1=sin(x-0.5)*exp(-(pow(x-10.0,2)+pow(y,2))/40.0); return(val1*cos(y)+val1*sin(y)*(-y)/20.0); } /***********************************************************/ /* Funktionen Ende */ /***********************************************************/