📄 min2by.c
字号:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define maxn 100
//number 24
double a[maxn+1][maxn+1]={0};
double b[maxn+1]={0};
double y[maxn+1]={0},x[maxn+1]={0};
double y1[maxn+1]={0};
double x1[maxn+1]={0};
int n;
int m;
void makematrix();
void main()
{
int i,j,k;
double add=0;
double aa,bb;
char rab[5];
double E;
FILE *fin, *fout;
fin=fopen("fin.txt","r");
fscanf(fin," %d %d",&n, &m);
fscanf(fin," %s",rab);
for(i=1;i<=m;i++)
{
fscanf(fin,"%lg",&(x1[i]));
x1[i]=log(x1[i]);
}
fscanf(fin," %s",rab);
for(i=1;i<=m;i++)
{
fscanf(fin," %lg",&(y1[i]));
y1[i]=log(y1[i]);
}
makematrix();
fout=fopen("fout.txt","w");
if (fout==NULL) printf("File cannot be created!\n");
fprintf(fout,"matrix:\n");
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
fprintf(fout,"%lg ",a[i][j]);
}
fprintf(fout,"%lg \n",b[i]);
}
a[1][1]=pow(a[1][1],.5);
for(i=2;i<=n;i++)
{
a[i][1]=a[i][1]/a[1][1];
}
for(j=2;j<=n-1;j++)
{
add=0;
for(k=1;k<=j-1;k++)
add+=pow(a[j][k],2);
a[j][j]=pow(a[j][j]-add,.5);
for(i=j+1;i<=n;i++)
{
add=0;
for(k=1;k<=j-1;k++)
add+=a[j][k]*a[i][k];
a[i][j]=(a[i][j]-add)/a[j][j];
}
}
add=0;
for(k=1;k<=n-1;k++)
add+=pow(a[n][k],2);
a[n][n]=pow(a[n][n]-add,.5);
for(i=1;i<=n;i++)
for(j=i+1;j<=n;j++)
a[i][j]=0;
fprintf(fout,"G:\n%d\n",n);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
fprintf(fout,"%lg ",a[i][j]);
fprintf(fout,"\n");
}
y[1]=b[1]/a[1][1];
for(i=2;i<=n;i++)
{
add=0;
for(j=1;j<=i-1;j++)
add+=a[i][j]*y[j];
y[i]=(b[i]-add)/a[i][i];
}
x[n]=y[n]/a[n][n];
for(i=n-1;i>=1;i--)
{
add=0;
for(j=i+1;j<=n;j++)
add+=a[j][i]*x[j];
x[i]=(y[i]-add)/a[i][i];
}
fprintf(fout,"Y:\n");
for(i=1;i<=n;i++)
{
fprintf(fout,"%lg ",y[i]);
}
fprintf(fout,"\n");
fprintf(fout,"X:\n");
for(i=1;i<=n;i++)
{
fprintf(fout,"%lg ",x[i]);
}
fprintf(fout,"\n");
aa=x[2];//the 20 question
bb=exp(x[1]);//the 20 question
fprintf(fout,"a=:%lg\nb=:%lg\n",aa,bb);
//the 20 question
add=0;
for(i=1;i<=m;i++)
{
add+=pow(exp(y1[i])-bb*pow(exp(x1[i]),aa),2);
}
E=pow(add/7,.5);
fprintf(fout,"E=:%lg\n",E);
fclose(fin);
fclose(fout);
}
void makematrix()
{
int i,j,k;
for(i=1;i<=n;i++)
for(j=1;j<=i;j++)
{
a[i][j]=0;
k=1;
while(k<=m)
{
a[i][j]+=pow(x1[k],i+j-2);
k++;
}
a[j][i]=a[i][j];
}
for(i=1;i<=n;i++)
{
b[i]=0;
for(j=1;j<=m;j++)
{
b[i]+=pow(x1[j],i-1)*y1[j];
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -