📄 svdenglish.c
字号:
#include<stdio.h>
#include"svdqj.c"
#define M 5
#define N 5
#define ka 6
void main()
{
FILE *fp1,*fp2;
int i,j;
double a[M][N],b[M],x[N],aa[N][M],u[M][M],v[N][N],eps=0.0001,s;
char ch1[20],ch2[20],flag1,flag2;
printf("\n");
printf("****************************************************************************\n\n");
printf(" Singular value decomposition solution system of linear equations\n\n");
printf("****************************************************************************\n\n");
do
{
flag1='a';
printf(" 1.Input deposited system of linear equations' coefficient matrix A,filename:\n");
printf("<command>");
scanf("%s",ch1);
printf(" 2.Input deposited system of equations' right margin vector b,filename:\n");
printf("<command>");
scanf("%s",ch2);
printf("\n");
if((fp1=fopen(ch1,"r"))==NULL)
{
printf("Hadn't found the goal document '%s',Whether reinputs the filename<Y/N>?\n",ch1);
printf("<command>");
getchar();
flag1=getchar();
}
if((fp2=fopen(ch2,"r"))==NULL)
{
printf("Had not found the goal document '%s',whether reinputs the filename<Y/N>?\n",ch2);
printf("<command>");
getchar();
flag1=getchar();
}
}while((flag1 == 'y')||(flag1 == 'Y'));
if((flag1 == 'n')||(flag1 == 'N')) return;
flag1='y';
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
{
fscanf(fp1,"%lf",&a[i][j]);
}
fscanf(fp2,"%lf",&b[i]);
}
fclose(fp1);fclose(fp2);
printf("MAT A(%d*%d)=UWV IS:\n",M,N);
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%13.4f",a[i][j]);
printf("\n");
}
printf("vector b is:\n");
for(i=0;i<M;i++)
printf("%13.4f",b[i]);
printf("\n\n");
printf("***********whether is the data right ,or not?<Y/N>**************\n");
printf(" Y: the data is correct,the procedure continues to move\n");
printf(" N: the data error, returns to revise data\n");
printf("<command>:");
getchar();
flag1=getchar();
if((flag1 != 'Y')&&(flag1 != 'y')) return;
printf("\n");
printf("Carries on the SVD to A...Demonstrates the decomposition result<Y/N>?\n");
printf("<command>");
getchar();
flag2=getchar();
i=ginv(a,M,N,aa,eps,u,v,ka);
if((flag2 == 'y')||(flag2 == 'Y'))
{
printf("MAT U(%d*%d) IS:\n",M,M);
for(i=0;i<M;i++)
{
for(j=0;j<M;j++)
printf("%13.4e",u[i][j]);
printf("\n");
}
printf("\n");
printf("MAT V(%d*%d) IS:\n",N,N);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%13.4e",v[i][j]);
printf("\n");
}
printf("\n");
printf("MAT W(%d*%d) IS:\n",M,N);
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%13.4e",a[i][j]);
printf("\n");
}
printf("\n");
printf("MAT A+(%d*%d) is:\n",N,M);
if(i>0)
{
for(i=0;i<N;i++)
{
for(j=0;j<M;j++)
printf("%13.4f",aa[i][j]);
printf("\n");
}
}
}
printf("\n");
for(i=0;i<N;i++)
{
s=0.0;
for(j=0;j<M;j++)
{ s=s+aa[i][j]*b[j];}
x[i]=s;
}
printf("System of equations AX=b 's solution vector X is:\n\n");
for(i=0;i<N;i++)
{
printf("%13.4f",x[i]);
}
printf("\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -