优化设计-鲍威尔法程序(c语言)_第1页
优化设计-鲍威尔法程序(c语言)_第2页
优化设计-鲍威尔法程序(c语言)_第3页
优化设计-鲍威尔法程序(c语言)_第4页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.#include <stdio.h>#include <math.h>#define m 10/* 数组长度m>=维数 n*/float f(float x);void mjtf(int n,float x0,float h,float s,float a,float b);void mhjfgf(int n,float a,float b,float flag,float x);void mbwef(int n,float x0,float h,float flag,float a,float b,float x);float f(float x)float

2、result;result=60-10*x0-4*x1+x0*x0+x1*x1-x0*x1;return result;/* 多维进退法子程序*/void mjtf(int n,float x0,float h,float s,float a,float b)int i;float x1m,x2m,x3m,f1,f2,f3;for(i=0;i<n;i+)/* 计算初始两试点*/x1i=x0i;x2i=x0i+h*si;可编辑.f1=f(x1);f2=f(x2);if(f2>=f1)/* 判断搜索方向 */* 搜索方向为反向,转身*/h=(-1)*h;for(i=0;i<n;i

3、+)x3i=x1i;f3=f1;for(i=0;i<n;i+)x1i=x2i;f1=f2;for(i=0;i<n;i+)x2i=x3i;f2=f3;/* 搜索方向为正向*/for(i=0;i<n;i+)/* 计算第三试点*/x3i=x2i+h*si;f3=f(x3);while(f3<f2)/* 判断是否未完成搜索*/* 未完成,继续搜索*/h=2*h;可编辑.for(i=0;i<n;i+)x1i=x2i;f1=f2;for(i=0;i<n;i+)x2i=x3i;f2=f3;for(i=0;i<n;i+)x3i=x2i+h*si;f3=f(x3);/*

4、 已完成 */for(i=0;i<n;i+)/* 输出初始搜索区间*/if(x1i<x3i)ai=x1i;bi=x3i;elseai=x3i;bi=x1i;可编辑./* 多维黄金分割法子程序*/void mhjfgf(int n,float a,float b,float flag,float x)int i;float x1m,x2m,f1,f2,sum;for(i=0;i<n;i+)/* 计算初始两试点*/x1i=bi-(float)0.618*(bi-ai);f1=f(x1);for(i=0;i<n;i+)x2i=ai+(float)0.618*(bi-ai);f

5、2=f(x2);doif(f1<=f2)/* 判断消去区间 */* 消去右 */for(i=0;i<n;i+)bi=x2i;for(i=0;i<n;i+)x2i=x1i;f2=f1;可编辑.for(i=0;i<n;i+)x1i=bi-(float)0.618*(bi-ai);f1=f(x1);else/* 消去左 */for(i=0;i<n;i+)ai=x1i;for(i=0;i<n;i+)x1i=x2i;f1=f2;for(i=0;i<n;i+)x2i=ai+(float)0.618*(bi-ai);f2=f(x2);sum=0;for(i=0;i&

6、lt;n;i+)sum+=(bi-ai)*(bi-ai);while(sqrt(sum)>flag*0.1);for(i=0;i<n;i+)xi=(float)0.5*(bi+ai);可编辑./* 鲍威尔法子程序*/void mbwef(int n,float x0,float h,float flag,float a,float b,float x)int i,j,k,r;float x1m,x2m,f0,f1,f2,fnm,smm,sum;for(i=0;i<n;i+)for(k=0;k<n;k+)if(i=k)sik=1;elsesik=0;k=1;while(1

7、)for(i=0;i<n;i+)x1i=x0i;for(i=0;i<n;i+)mjtf(n,x1,h,si,a,b);mhjfgf(n,a,b,flag,x1);fni=f(x0)-f(x1);可编辑.for(i=0;i<n;i+)x2i=2*x1i-x0i;for(i=1;i<n;i+)if(fn0<fni)fn0=fni;r=i;elser=0;f0=f(x0);f1=f(x1);f2=f(x2);if(f2>=f0|(f0-2*f1+f2)*(f0-f1-fn0)*(f0-f1-fn0)>=0.5*fn0*(f0-f2)*(f0-f2)sum=0;for(i=0;i<n;i+)sum+=(x1i-x0i)*(x1i-x0i);if(f1<=f2)for(i=1;i<n;i+)x0i=x1i;else可编辑.for(i=1;i<n;i+)x0i=x2i;elsefor(i=r;i<n;i+)for(j=0;j<n;j+)si j=si+1j;for(i=0;i<n;i+)sni=x1i-x0i;mjtf(n,x1,h,sn,a,b);mhjfgf(n,a,b,fl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论