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 + -
显示快捷键?