风花雪月 发表于 2006-10-10 00:51

进退法子程序(C语言程序)

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


mjtf.c如下:
#include "jtf.c"
main()
{double x0[]={0};
double s[]={1};
double a,b;
jtf(x0,0.1,s,1,a,b);
printf("a[]=%f,b[]=%f\n",a,b);
getch();
}


funct.c如下:
#include "stdio.h"
#include "stdlib.h"
#include "math.h"
double objf(double x[])
{double ff;
ff=3*pow(x,3)-8*x+9;
return(ff);
}


jtf.c如下:
#include "funct.c"
void jtf(double x0[],double h0,double s[],int n,double a[],double b[])
{int i;
double *x,h,f1,f2,f3;
for(i=0;i<3;i++)
x=(double *)malloc(n*sizeof(double));
h=h0;
for(i=0;i<n;i++)
*(x+i)=x0;
f1=objf(x);
for(i=0;i<n;i++)
*(x+i)=*(x+i)+h*s;
f2=objf(x);
if(f2>=f1)
{h=-h0;
    for(i=0;i<n;i++)
    *(x+i)=*(x+i);
   f3=f1;
    for(i=0;i<n;i++)
    {*(x+i)=*(x+i);
   *(x+i)=*(x+i);
    }
   f1=f2;
   f2=f3;
   }
   for(;;)
   {h=2*h;
   for(i=0;i<n;i++)
   *(x+i)=*(x+i)+h*s;
   f3=objf(x);
   if(f2<f3) break;
   else
    { for(i=0;i<n;i++)
       {*(x+i)=*(x+i);
      *(x+i)=*(x+i);
       }
      f1=f2;
      f2=f3;
    }
   }
   if(h<0)
    for(i=0;i<n;i++)
    {a=*(x+i);
   b=*(x+i);
    }
   else
    for(i=0;i<n;i++)
    {a=*(x+i);
   b=*(x+i);
   }
   for(i=0;i<3;i++)
   free(x);
}

无限求 发表于 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

我想编写一个进退法确定优化区间的程序,是为下面编写牛顿法,做准备的字程序,可以适合任何方程的通用的,进退法确定优化区间的程序,希望你能帮忙下,最好程序具可读性强,谢谢

4279937 发表于 2012-5-30 16:23

页: [1]
查看完整版本: 进退法子程序(C语言程序)