声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3367|回复: 3

[C/C++] 进退法优化子程序

[复制链接]
发表于 2006-10-11 16:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
本程序包含3个C文件
mjtf.c
funct.c
jtf.c

本程序由heizi友情提供
回复
分享到:

使用道具 举报

 楼主| 发表于 2006-10-11 16:54 | 显示全部楼层
mjtf.c代码如下:


  1. #include "jtf.c"
  2. main()
  3. {double x0[]={0};
  4. double s[]={1};
  5. double a[1],b[1];
  6. jtf(x0,0.1,s,1,a,b);
  7. printf("a[]=%f,b[]=%f\n",a[0],b[0]);
  8. getch();
  9. }
复制代码
 楼主| 发表于 2006-10-11 16:55 | 显示全部楼层
funct.c代码如下:
  1. #include "stdio.h"
  2. #include "stdlib.h"
  3. #include "math.h"
  4. double objf(double x[])
  5. {double ff;
  6. ff=3*pow(x[0],3)-8*x[0]+9;
  7. return(ff);
  8. }
复制代码



jtf.c代码如下:
  1. #include "funct.c"
  2. void jtf(double x0[],double h0,double s[],int n,double a[],double b[])
  3. {int i;
  4. double *x[3],h,f1,f2,f3;
  5. for(i=0;i<3;i++)
  6.   x[i]=(double *)malloc(n*sizeof(double));
  7.   h=h0;
  8. for(i=0;i<n;i++)
  9.   *(x[0]+i)=x0[i];
  10. f1=objf(x[0]);
  11. for(i=0;i<n;i++)
  12.   *(x[1]+i)=*(x[0]+i)+h*s[i];
  13.   f2=objf(x[1]);
  14. if(f2>=f1)
  15.   {h=-h0;
  16.     for(i=0;i<n;i++)
  17.     *(x[2]+i)=*(x[0]+i);
  18.    f3=f1;
  19.     for(i=0;i<n;i++)
  20.     {*(x[0]+i)=*(x[1]+i);
  21.      *(x[1]+i)=*(x[2]+i);
  22.     }
  23.    f1=f2;
  24.    f2=f3;
  25.    }
  26.    for(;;)
  27.    {h=2*h;
  28.      for(i=0;i<n;i++)
  29.      *(x[2]+i)=*(x[1]+i)+h*s[i];
  30.    f3=objf(x[2]);
  31.    if(f2<f3) break;
  32.    else
  33.     { for(i=0;i<n;i++)
  34.        {*(x[0]+i)=*(x[1]+i);
  35.         *(x[1]+i)=*(x[2]+i);
  36.        }
  37.       f1=f2;
  38.       f2=f3;
  39.     }
  40.    }
  41.    if(h<0)
  42.     for(i=0;i<n;i++)
  43.     {a[i]=*(x[2]+i);
  44.      b[i]=*(x[0]+i);
  45.     }
  46.    else
  47.     for(i=0;i<n;i++)
  48.     {a[i]=*(x[0]+i);
  49.      b[i]=*(x[2]+i);
  50.      }
  51.    for(i=0;i<3;i++)
  52.    free(x[i]);
  53. }
复制代码
发表于 2007-5-16 18:11 | 显示全部楼层

进退法优化子程序

:handshake
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-17 19:52 , Processed in 0.095054 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表