1 / 4
文档名称:

共轭梯度法程序源代码.docx

格式:docx   大小:9KB   页数:4页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

共轭梯度法程序源代码.docx

上传人:likuilian1 2022/7/19 文件大小:9 KB

下载得到文件列表

共轭梯度法程序源代码.docx

文档介绍

文档介绍:共扼梯度法程序源代码
#include<>
#iiiclude<>
#define N 10
#define eps pow( 10.-6)
double f(double x[],double p[],共扼梯度法程序源代码
#include<>
#iiiclude<>
#define N 10
#define eps pow( 10.-6)
double f(double x[],double p[],double t)
{
double s;
s=pow(x[0]+t*p [0] ,2)+2 5 *pow(x[ 1 ]+t*p [ 1 ] ,2);
leturn s;
}
/*以下是进退法搜索区间源程序*/
void sb(double *a,double * x[],double p[])
{
double tO,tl,t,h,alpha,ft),fl;
mt k=0;
t0=; /* 初始值 */
h=l; /*初始步长*/
alpha=2; /*加步系数*/
fO=f(x,p・tO);
tl=tO+h;
fl=f(x,p,tl);
wlule(l)
{
(
h=alpha*h; t=tO;
tO=tl; fO=f 1;
k++;
)
else
(
if(k==0)
{h=-h;t=tl;}
else
{
break;
}
)
tl=tO+h;
fl=Rx,p,tl);
}
/*以下是黄金分割法程序源代码可
double lijfg(double x[].double p[])
{
double beta,tl,t2,t;
double
double a=0,b=0;
double *c,*d;
c=&a,d=&b;
sb(c,d,x,p);/*调用进退法搜索区间*/
pnntf(”\nxl=%=%=%lf,p2=%lT,x[0],x[l],p[0],p[l]);
printf("\n[a,b]=[%lf,%lf]”,a,b);
beta=(sqrt(5)-l .0)/2;
t2=a+beta*(b-a); f2=f(,t2);
tl =a+b-t2; fl =Rx,p,t 1);
wlule(l)
{
if(fabs(tl-t2)<eps)
break;
else
{
{
t=(tl+t2)/2;
b=t2; t2=tl;
f2=fl; tl=a+b-t2;
}
else
{
a=tl; tl=t2;
fl =2
t2=a+beta*(b-a);
f2=f(x,p、t2);
}
)
}
t=(tl+t2)/2;
return t;
}
/*以卜是共粒梯度法程序源代码*/
void gtd() double x[N].g[N].p[N]j=,modl=0,mod2=0aianda=0; mt i,;
pnntf(”请输入函数的元数值n=");
scanf(”%d”,&n);
pnntf(”\n请输入初始值:\n”);
foi(i=O;i<n;i++)
sc