⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 svdenglish.c

📁 由c语言编写的解非线性方程
💻 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 + -