xqinghua.h

来自「该程序是用vc开发的对动态数组进行管理的DLL」· C头文件 代码 · 共 1,591 行 · 第 1/5 页

H
1,591 行
字号
    printf("\n");
    printf("i=%d\n",i);
    printf("\n");
    printf("MAT U IS:\n");
    for (i=0; i<=3; i++)
      { for (j=0; j<=3; j++)
          printf("%13.7e ",u[i][j]);
        printf("\n");
      }
    printf("\n");
    printf("MAT V IS:\n");
    for (i=0; i<=2; i++)
      { for (j=0; j<=2; j++)
          printf("%13.7e ",v[i][j]);
        printf("\n");
      }
    printf("\n");
    printf("MAT A IS:\n");
    for (i=0; i<=3; i++)
      { for (j=0; j<=2; j++)
          printf("%13.7e ",a[i][j]);
        printf("\n");
      }
    printf("\n\n");
    printf("MAT UAV IS:\n");
    brmul(u,a,4,4,3,c);
    brmul(c,v,4,3,3,a);
    for (i=0; i<=3; i++)
      { for (j=0; j<=2; j++)
          printf("%13.7e ",a[i][j]);
        printf("\n");
      }
    printf("\n\n");
    printf("EXAMPLE(2)\n");
    printf("\n");
    i=bmuav(b,3,4,v,u,eps,5);
    printf("i=%d\n",i);
    printf("\n");
    printf("MAT U IS:\n");
    for (i=0; i<=2; i++)
      { for (j=0; j<=2; j++)
          printf("%13.7e ",v[i][j]);
        printf("\n");
      }
    printf("\n");
    printf("MAT V IS:\n");
    for (i=0; i<=3; i++)
      { for (j=0; j<=3; j++)
          printf("%13.7e ",u[i][j]);
        printf("\n");
      }
    printf("\n");
    printf("MAT B IS:\n");
    for (i=0; i<=2; i++)
      { for (j=0; j<=3; j++)
          printf("%13.7e ",b[i][j]);
        printf("\n");
      }
    printf("\n\n");
    printf("MAT UBV IS:\n");
    brmul(v,b,3,3,4,d);
    brmul(d,u,3,4,4,b);
    for (i=0; i<=2; i++)
      { for (j=0; j<=3; j++)
          printf("%13.7e ",b[i][j]);
        printf("\n");
      }
    printf("\n");
  }

*/
/*-- Result (运行结果) --*/
/*

EXAMPLE(1)

i=1

MAT U IS:
 2.763932e-01  5.070926e-01  7.236068e-01  0.000000e+00 
 4.472136e-01  6.761234e-01 -4.472136e-01  0.000000e+00 
 4.472136e-01 -1.690309e-01 -4.472136e-01  0.000000e+00 
-7.236068e-01  5.070926e-01 -2.763932e-01  0.000000e+00 

MAT V IS:
 8.355492e-01 -4.177746e-01 -3.568221e-01 
 4.472136e-01  8.944272e-01  4.430095e-15 
-3.191514e-01  1.595757e-01 -9.341724e-01 

MAT A IS:
 2.802517e+00  0.000000e+00  0.000000e+00 
 0.000000e+00  2.645751e+00  0.000000e+00 
 0.000000e+00  0.000000e+00  1.070466e+00 
 0.000000e+00  0.000000e+00  0.000000e+00 


MAT UAV IS:
 1.000000e+00  1.000000e+00 -1.000000e+00 
 2.000000e+00  1.000000e+00  1.658829e-16 
 1.000000e+00 -1.000000e+00  1.658829e-16 
-1.000000e+00  2.000000e+00  1.000000e+00 


EXAMPLE(2)

i=1

MAT U IS:
-8.849941e-02 -9.028798e-01 -4.206851e-01 
-9.253548e-01 -8.177683e-02  3.701772e-01 
-3.686278e-01  4.220434e-01 -8.282469e-01 

MAT V IS:
-7.194191e-01 -2.011355e-01  2.758774e-02 -6.642436e-01 
-3.018290e-01 -6.588911e-01  4.229043e-01  5.439795e-01 
-4.739923e-01  7.248497e-01  3.920768e-01  3.101613e-01 
-4.082483e-01 -4.129676e-17 -8.164966e-01  4.082483e-01 

MAT B IS:
 3.207917e+00  0.000000e+00  0.000000e+00  0.000000e+00 
 0.000000e+00  2.134951e+00  0.000000e+00  0.000000e+00 
 0.000000e+00  0.000000e+00  1.072966e+00 -0.000000e+00 


MAT UBV IS:
 1.000000e+00  1.000000e+00 -1.000000e+00 -1.000000e+00 
 2.000000e+00  9.999996e-01  2.266166e-07  2.000000e+00 
 9.999999e-01 -1.000000e+00  9.027583e-08  1.000000e+00 

*/


/*------------  define (函数原型定义)  ---------------------------*/                    
  int brank(double *a,int m,int n);  
/*                    
  int brank(a,m,n)
  int m,n;
  double a[];

2.8  求矩阵秩的全选主元高斯消去法

a--双精度实型二维数组,体积为m x n。存放m*n阶矩阵A,返回时该矩阵将被破坏。
m--整型变量。矩阵A的行数。
n--整型变量。矩阵A的列数。
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      
*/
/*--  Example (函数实例) --*/
/*

  #include "stdio.h"
  #include "brank.c"
  main()
  { static double a[5][4]={ {1.0,2.0,3.0,4.0},
                            {5.0,6.0,7.0,8.0},
                            {9.0,10.0,11.0,12.0},
                            {13.0,14.0,15.0,16.0},
                            {17.0,18.0,19.0,20.0}};
    printf("\n");
    printf("RANK=%d\n",brank(a,5,4));
    printf("\n");
  }

*/
/*-- Result (运行结果) --*/
/*

RANK=4

*/


/*------------  define (函数原型定义)  ---------------------------*/                                                               
  int brinv(double *a,int n);  
/*                                                               
  int brinv(a,n)
  int n;
  double a[];

2.3  实矩阵求逆的全选主元高斯-约当法

a--双精度实型二维数组,体积为n x n。存放原矩阵A;返回时存放其逆矩阵
A-t。
n--整型变量。矩阵的阶数。
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
*/
/*--  Example (函数实例) --*/
/*

  #include "stdio.h"
  #include "brinv.c"
  #include "brmul.c"
  main()
  { int i,j;
    static double a[4][4]={ {0.2368,0.2471,0.2568,1.2671},
                            {1.1161,0.1254,0.1397,0.1490},
                            {0.1582,1.1675,0.1768,0.1871},
                            {0.1968,0.2071,1.2168,0.2271}};
    static double b[4][4],c[4][4];
    for (i=0; i<=3; i++)
    for (j=0; j<=3; j++)
      b[i][j]=a[i][j];
    i=brinv(a,4);
    if (i!=0)
      { printf("MAT A IS:\n");
        for (i=0; i<=3; i++)
          { for (j=0; j<=3; j++)
              printf("%13.7e ",b[i][j]);
            printf("\n");
          }
        printf("\n");
        printf("MAT A- IS:\n");
        for (i=0; i<=3; i++)
          { for (j=0; j<=3; j++)
              printf("%13.7e ",a[i][j]);
            printf("\n");
          }
        printf("\n");
        printf("MAT AA- IS:\n");
        brmul(b,a,4,4,4,c);
        for (i=0; i<=3; i++)
          { for (j=0; j<=3; j++)
              printf("%13.7e ",c[i][j]);
            printf("\n");
          }
      }
  }

*/
/*-- Result (运行结果) --*/
/*
MAT A IS:
 2.368000e-01  2.471000e-01  2.568000e-01  1.267100e+00 
 1.116100e+00  1.254000e-01  1.397000e-01  1.490000e-01 
 1.582000e-01  1.167500e+00  1.768000e-01  1.871000e-01 
 1.968000e-01  2.071000e-01  1.216800e+00  2.271000e-01 

MAT A- IS:
-8.592075e-02  9.379443e-01 -6.843720e-02 -7.960772e-02 
-1.055899e-01 -8.852432e-02  9.059826e-01 -9.919081e-02 
-1.270733e-01 -1.113511e-01 -1.169667e-01  8.784253e-01 
 8.516058e-01 -1.354557e-01 -1.401826e-01 -1.438075e-01 

MAT AA- IS:
 1.000000e+00 -3.375935e-17 -2.303930e-19 -1.111307e-17 
-7.589415e-18  1.000000e+00 -2.817232e-18  9.640929e-18 
-8.104411e-18  3.671549e-17  1.000000e+00  2.012211e-17 
-2.813505e-17 -1.471296e-17 -1.776397e-17  1.000000e+00 
*/


/*------------  define (函数原型定义)  ---------------------------*/
  void brmul(double *a,double *b,int m,int n,int k,double *c);  
/*
  void brmul(a,b,m,n,k,c)
  int m,n,k;
  double a[],b[],c[];

2.1实矩阵相乘

a--双精度实型二维数组,体积为m x n。存放矩阵A的元素。
b--双精度实型二维数组,体积为n x A。存放矩阵B的元素。
m--整型变量。矩阵A的行数,也是乘积矩阵c=AB的行数。
n--整型变量。矩阵A的列数,也是矩阵B的行数。
k--整型变量。矩阵B的列数,也是乘积矩阵C=AB的列数。
c--双精度实型二维数组,体积为m x k。返回乘积矩阵C=AB的元素。

                                                                                                                                                                                                                  
*/
/*--  Example (函数实例) --*/
/*

  #include "stdio.h"
  #include "brmul.c"
  main()
  { int i,j;
    static double a[4][5]={ {1.0,3.0,-2.0,0.0,4.0},
                            {-2.0,-1.0,5.0,-7.0,2.0},
                            {0.0,8.0,4.0,1.0,-5.0},
                            {3.0,-3.0,2.0,-4.0,1.0}};
    static double c[4][3],b[5][3]={ {4.0,5.0,-1.0},
                      {2.0,-2.0,6.0},{7.0,8.0,1.0},
                      {0.0,3.0,-5.0},{9.0,8.0,-6.0}};
    brmul(a,b,4,5,3,c);
    for (i=0; i<=3; i++)
      { for (j=0; j<=2; j++)
          printf("%13.7e  ",c[i][j]);
        printf("\n");
      }
    printf("\n");
  }

*/
/*-- Result (运行结果) --*/
/*
 3.200000e+01   1.500000e+01  -9.000000e+00  
 4.300000e+01   2.700000e+01   2.400000e+01  
-1.000000e+00  -2.100000e+01   7.700000e+01  
 2.900000e+01   3.300000e+01  -5.000000e+00  

*/


/*------------  define (函数原型定义)  ---------------------------*/                    
  double bsdet(double *a,int n);  
/*                    
  double bsdet(a,n)
  int n;
  double a[];

2.7  求行列式值的全选主元高斯消去法

a--双精度实型二维数组,体积为n x n.
	存放n阶方阵A,在本函数中要被破坏。
n--整型变量。方阵A的阶数。
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?