进退法子程序(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);
} 为什么我上级调试的时候说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 我想编写一个进退法确定优化区间的程序,是为下面编写牛顿法,做准备的字程序,可以适合任何方程的通用的,进退法确定优化区间的程序,希望你能帮忙下,最好程序具可读性强,谢谢
页:
[1]