建环计算机应用程序部分
专业计算方法最优化部分程序
习题2.
程序代码:
#include
float insert(float x,float y,float z);
void main()
{
int i;
float f[6],g[6],a,b,c,d,e;
printf("请输入风阀的一组度数(°):\n");
for(i=0;i<7;i++)
scanf("%f",&f[i]);
printf("\n");
printf("请输入风阀试验的阻力系数:\n");
for(i=0;i<7;i++)
scanf("%f",&g[i]);
printf("\n");
printf("请输入你要插入的值:\n");
scanf("%f",&e);
for(i=0;i<7;i++)
if(f[i]
{a=(e-f[i])*(e-f[i+1])/((f[i-1]-f[i])*(f[i-1]-f[i+1]))*g[i-1];
b=(e-f[i-1])*(e-f[i+1])/((f[i]-f[i-1])*(f[i]-f[i+1]))*g[i];
c=(e-f[i-1])*(e-f[i])/((f[i+1]-f[i-1])*(f[i+1]-f[i]))*g[i+1];}
d=insert(a,b,c);
printf("调节阀的阻力系数为:%0.2f",d);
}
float insert(float x,float y,float z)
{return x+y+z;}
习题3.
程序代码:
#include "stdio.h"
#include "math.h"
#define num 10
float neiji(float b[num],float c[num])
{ int p;
float nj=0;
for (p=1;p
nj+=c[p]*b[p];
return nj;
}
float s[num],x[num],y[num],fai[num][num],afa[num],beida[num],a[num],xfai[num],yd[num],max,pcpfh;
void main()
{ int i,j,k,n,index;
char conti;
conti=' ';
printf("请输入已知点的个数n=\n");
scanf("%d",&n);
printf("请输入x和y:\n");
for(i=1;i<=n;i++)
{ printf("x[%d]=",i);
scanf("%f",&x[i]);
printf("y[%d]=",i);
scanf("%f",&y[i]);
}
while(conti==' ')
{ printf("请输入拟和次数=");
scanf("%d",&index);
pcpfh=0;
afa[1]=0;
a[0]=0;
for(i=1;i<=n;i++)
{afa[1]+=x[i];
a[0]+=y[i];
fai[0][i]=1;
}
afa[1]=afa[1]/n;
a[0]=a[0]/n;
for (i=1;i<=n;i++)
{
fai[1][i]=x[i]-afa[1];
}
a[1]=neiji(fai[1],y)/neiji(fai[1],fai[1]);
for(k=1;k
{ for(i=1;i<=n;i++)
xfai[i]=x[i]*fai[k][i];
afa[k+1]=neiji(fai[k],xfai)/neiji(fai[k],fai[k]);
beida[k]=neiji(fai[k],fai[k])/neiji(fai[k-1],fai[k-1]);
for(j=1;j<=n;j++)
fai[k+1][j]=(x[j]-afa[k+1])*fai[k][j]-beida[k]*fai[k-1][j];
a[k+1]=neiji(fai[k+1],y)/neiji(fai[k+1],fai[k+1]);
}
printf("%d次拟和结果为\n",index);
for(i=0;i<=index;i++)
printf("a[%d]=%f\n",i,a[i]);
for(i=1;i<=n;i++)
{ for(k=0;k<=index;k++)
s[i]+=a[k]*fai[k][i];
yd[i]=float(fabs(y[i]-s[i]));
pcpfh+=yd[i]*yd[i