鲍威尔c 语言程序,优化设计-鲍威尔法程序(c语言).doc
#include
#include
#define m 10 /*數(shù)組長(zhǎng)度m >= 維數(shù)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 result;
result=60-10*x[0]-4*x[1]+x[0]*x[0]+x[1]*x[1]-x[0]*x[1];
return result;
}
/*多維進(jìn)退法子程序*/
void mjtf(int n,float x0[],float h,float s[],float a[],float b[])
{
int i;
float x1[m],x2[m],x3[m],f1,f2,f3;
for(i=0;i
{
x1[i]=x0[i];
x2[i]=x0[i]+h*s[i];
}
f1=f(x1);
f2=f(x2);
if(f2>=f1) /*判斷搜索方向*/
{ /*搜索方向?yàn)榉聪?#xff0c;轉(zhuǎn)身*/
h=(-1)*h;
for(i=0;i
x3[i]=x1[i];
f3=f1;
for(i=0;i
x1[i]=x2[i];
f1=f2;
for(i=0;i
x2[i]=x3[i];
f2=f3;
} /*搜索方向?yàn)檎?/
for(i=0;i
x3[i]=x2[i]+h*s[i];
f3=f(x3);
while(f3
{ /*未完成,繼續(xù)搜索*/
h=2*h;
for(i=0;i
x1[i]=x2[i];
f1=f2;
for(i=0;i
x2[i]=x3[i];
f2=f3;
for(i=0;i
x3[i]=x2[i]+h*s[i];
f3=f(x3);
} /*已完成*/
for(i=0;i
{
if(x1[i]
{
a[i]=x1[i];
b[i]=x3[i];
}
else
{
a[i]=x3[i];
b[i]=x1[i];
}
}
}
/*多維黃金分割法子程序*/
void mhjfgf(int n,float a[],float b[],float flag,float x[])
{
int i;
float x1[m],x2[m],f1,f2,sum;
for(i=0;i
x1[i]=b[i]-(float)0.618*(b[i]-a[i]);
f1=f(x1);
for(i=0;i
x2[i]=a[i]+(float)0.618*(b[i]-a[i]);
f2=f(x2);
do
{
if(f1<=f2) /*判斷消去區(qū)間*/
{ /*消去右*/
for(i=0;i
b[i]=x2[i];
for(i=0;i
x2[i]=x1[i];
f2=f1;
for(i=0;i
x1[i]=b[i]-(float)0.618*(b[i]-a[i]);
f1=f(x1);
}
else
{
總結(jié)
以上是生活随笔為你收集整理的鲍威尔c 语言程序,优化设计-鲍威尔法程序(c语言).doc的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Android 签名时 v2 与 v1
- 下一篇: 智慧教室系统服务器参数,智慧教室建设项目