鮑威爾法C源程序_第1頁
鮑威爾法C源程序_第2頁
鮑威爾法C源程序_第3頁
鮑威爾法C源程序_第4頁
鮑威爾法C源程序_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

#definen12#definett#definead定義常量//tt

初始迭代步長//ad收斂精度floatia;floatfny(float*x){floatf;f=10*pow((x[0]+x[1]-5),2)+pow((x[0]-x[1]),2);//

目標函數(shù)return(f);}float*iterate(float*x,floata,float*s){float*x1;x1=(float*)malloc(n1*sizeof(float));for(inti=0;i<n1;i++)x1[i]=x[i]+a*s[i];return(x1);}floatfunc(float*x,floata,float*s){float*x1;x1=iterate(x,a,s);floatf=fny(x1);return(f);}voidfinding(floata[3],floatf[3],float*xk,float*s){floatt=tt;floata1,f1;a[0]=0;f[0]=func(xk,a[0],s);for(inti=0;;i++){a[1]=a[0]+t;f[1]=func(xk,a[1],s);if(f[1]<f[0])break;if(fabs(f[1]-f[0])>=ad){t=-t;a[0]=a[1];f[0]=f[1];}else{if(ia==1)return;t=t/2;ia=1;}}for(i=0;;i++){a[2]=a[1]+t;f[2]=func(xk,a[2],s);if(f[2]>f[1])break;t=2*t;a[0]=a[1];f[0]=f[1];a[1]=a[2];f[1]=f[2];}if(a[0]>a[2]){a1=a[0];f1=f[0];a[0]=a[2];f[0]=f[2];a[2]=a1;f[2]=f1;}return;}//secondinsertfloatlagrange(float*xk,float*ft,float*s){floata[3],f[3];floatb,c,d,aa;finding(a,f,xk,s);for(inti=0;;i++){if(ia==1){aa=a[1];*ft=f[1];break;}d=(pow(a[0],2)-pow(a[2],2))*(a[0]-a[1])-(pow(a[0],2)-pow(a[1],2))*(a[0]-a[2]);if(fabs(d)==0)break;c=((f[0]-f[2])*(a[0]-a[1])-(f[0]-f[1])*(a[0]-a[2]))/d;if(fabs(c)==0)break;b=((f[0]-f[1])-c*(pow(a[0],2)-pow(a[1],2)))/(a[0]-a[1]);aa=-b/(2*c);*ft=func(xk,aa,s);if(fabs(aa-a[1])<=ad){if(*ft>f[1])aa=a[1];break;}if(aa>a[1]){if(*ft>f[1]){a[2]=aa;f[2]=*ft;}elseif(*ft<f[1]){a[0]=a[1];a[1]=aa;f[0]=f[1];f[1]=*ft;}elseif(*ft==f[1]){a[2]=aa;a[0]=a[1];f[2]=*ft;f[0]=f[1];a[1]=(a[0]+a[2])/2;f[1]=func(xk,a[1],s);}}else{if(*ft>f[1]){a[0]=aa;f[0]=*ft;}elseif(*ft<f[1]){a[2]=a[1];a[1]=aa;f[2]=f[1];f[1]=*ft;}elseif(*ft==f[1]){a[0]=aa;a[2]=a[1];f[0]=*ft;f[2]=f[1];a[1]=(a[0]+a[2])/2;f[1]=func(xk,a[1],s);}}}if(*ft>f[1]){aa=a[1];*ft=f[1];}return(aa);}float*powell(float*xk){floath[n1][n1],s[n1]={0,0},ff[n1+1]={0,0,0};floatf1,f3,aa;floatdk[n1],*x0,xk1[n1];intm=0,i,j;for(i=0;i<n1;i++){for(j=0;j<n1;j++){h[i][j]=0;if(j==i)h[i][j]=1;}}for(intk=0;;k++){ff[0]=fny(xk);x0=xk;for(i=0;i<n1;i++){for(j=0;j<n1;j++)s[j]=h[i][j];floataa=lagrange(xk,&ff[i+1],s);xk=iterate(xk,aa,s);}for(i=0;i<n1;i++){floata,b;dk[i]=xk[i]-x0[i];xk1[i]=2*xk[i]-x0[i];}floatmax=fabs(ff[1]-ff[0]);for(i=1;i<n1;i++)if(fabs(ff[i+1]-ff[i])>max){max=fabs(ff[i+1]-ff[i]);m=i;}f3=fny(xk1);if((f3<ff[0])&&((ff[0]+f3-2*ff[2])*pow((ff[0]-ff[n1]-max),2)<*max*pow((ff[0]-f3),2))){aa=lagrange(xk,&f1,dk);xk=iterate(xk,aa,dk);for(i=m;i<n1-1;i++)for(j=0;j<n1;j++)h[i][j]=h[i+1][j];for(j=0;j<n1;j++)h[n1-1][j]=dk[j];}else{if(ff[n1]>=f3)xk=xk1;}floatxq=0;for(i=0;i<n1;i++)xq+=pow((xk[i]-x0[i]),2);if(xq<=ad)break;}return(xk);}voidmain( ){floatxk[n1]={0,0};//取初始點float*xx;xx=(float*)malloc(n1*sizeof(float));xx=powell(xk);floatff=fny(xx);cout<<"優(yōu)化的結(jié)果

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論