声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2662|回复: 3

[C/C++] 进退法子程序(C语言程序)

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

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

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

x
总共包含三个文件:
mjtf.c
jtf.c
funct.c
本程序打包下载见本贴2楼


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. }
复制代码



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. }
复制代码
回复
分享到:

使用道具 举报

发表于 2012-5-29 23:00 | 显示全部楼层
为什么我上级调试的时候说01.#include "jtf.c"
不存在或者毁坏啊,,提示语言c:\documents and settings\administrator\桌面\1.c(1) : fatal error C1083: Cannot open include file: 'jtf.c': No such file or directory
希望你能回复,也可以发到我的邮箱,1648779492@qq.com
发表于 2012-5-29 23:06 | 显示全部楼层
我想编写一个进退法确定优化区间的程序,是为下面编写牛顿法,做准备的字程序,可以适合任何方程的通用的,进退法确定优化区间的程序,希望你能帮忙下,最好程序具可读性强,谢谢
头像被屏蔽
发表于 2012-5-30 16:23 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-28 13:35 , Processed in 0.086336 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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