xqinghua.h
来自「该程序是用vc开发的对动态数组进行管理的DLL」· C头文件 代码 · 共 1,591 行 · 第 1/5 页
H
1,591 行
/*-- Result (运行结果) --*/
/*
x(0)= 4.979313e-01
x(1)= 1.444939e-01
x(2)= 6.285805e-02
x(3)=-8.131763e-02
*/
/*------------ define (函数原型定义) ---------------------------*/
int aldle(double *a,int n,int m,double *c);
/*
int aldle(a,n,m,c)
int n,m;
double a[],c[];
1.7求解对称方程组的分解法
a-双精度实型二维数组,体积为n*n。存放方程组的系数矩阵。(应为对称矩阵)。此数组在本函数中要被破坏。
n-整型变量。方程组的阶数。
m-整型变量。方程组右端常量个数。
d- 双精度实型二维数组,体积为n*m。存放方程组右端的m组常数向量;返回时存放方程组的m组解。
*/
/*-- Example (函数实例) --*/
/*
#include "stdio.h"
#include "aldle.c"
main()
{ int i;
static double a[5][5]={ {5.0,7.0,6.0,5.0,1.0},
{7.0,10.0,8.0,7.0,2.0},{6.0,8.0,10.0,9.0,3.0},
{5.0,7.0,9.0,10.0,4.0},{1.0,2.0,3.0,4.0,5.0}};
static double c[5][2]={ {24.0,96.0},{34.0,136.0},
{36.0,144.0},{35.0,140.0},{15.0,60.0}};
if (aldle(a,5,2,c)>0)
for (i=0; i<=4; i++)
printf("x(%d)=%13.7e, %13.7e\n",i,c[i][0],c[i][1]);
}
*/
/*-- Result (运行结果) --*/
/*
x(0)= 1.000000e+00, 4.000000e+00
x(1)= 1.000000e+00, 4.000000e+00
x(2)= 1.000000e+00, 4.000000e+00
x(3)= 1.000000e+00, 4.000000e+00
x(4)= 1.000000e+00, 4.000000e+00
*/
/*------------ define (函数原型定义) ---------------------------*/
int atlvs(double *t,int n,double *b,double *x);
/*
int atlvs(t,n,b,x)
int n;
double t[],b[],x[];
1.10求解托伯利兹方程组的列文逊方法
t-双精度实型一维数组,长度为n。存放对称T型矩阵中的元素t0,t1,---,tn-1。
n-整型变量。方程组的阶数。
b-双精度实型一维数组,长度为n。存放方程组右端常数向量。
x-双精度实型一维数组,长度为n。返回方程组的解。
*/
/*-- Example (函数实例) --*/
/*
#include "stdio.h"
#include "atlvs.c"
main()
{ int i;
static double x[6];
static double t[6]={6.0,5.0,4.0,3.0,2.0,1.0};
static double b[6]={11.0,9.0,9.0,9.0,13.0,17.0};
if (atlvs(t,6,b,x)>0)
for (i=0; i<=5; i++)
printf("x(%d)=%13.7e\n",i,x[i]);
}
*/
/*-- Result (运行结果) --*/
/*
x(0)= 3.000000e+00
x(1)=-1.000000e+00
x(2)= 1.173206e-15
x(3)=-2.000000e+00
x(4)=-2.109424e-15
x(5)= 4.000000e+00
*/
/*------------ define (函数原型定义) ---------------------------*/
int atrde(double *b,int n,int m,double *d);
/*
int atrde(b,n,m,d)
int n,m;
double b[],d[];
1.5求解三对角线方程组的追赶法
b--双精度实型一维数组,长度为m。以行为主存放三对角线矩阵中三对角线上的元素,即在b中依次存放元素:
a00,a01,a10,a11,a12,a21,a22,a23,…….,a(n-1),(n-2),a(n-1),(n-1)
n-整型变量。方程组的阶数。
m-整型变量。N阶三对角矩阵三条对角线上的元素的个数,也是一维数组b的长度。它的値应为m=3n-2。在本函数中要对此什作检查。
c-双精度实型一维数组,长度为n。存放方程组右端的常数向量;返回时存放方程组的解。
*/
/*-- Example (函数实例) --*/
/*
#include "stdio.h"
#include "atrde.c"
main()
{ int i;
static double b[13]={13.0,12.0,11.0,10.0,9.0,8.0,7.0,
6.0,5.0,4.0,3.0,2.0,1.0};
static double d[5]={3.0,0.0,-2.0,6.0,8.0};
if (atrde(b,5,13,d)>0)
for (i=0;i<=4;i++)
printf("x(%d)=%13.7e\n",i,d[i]);
}
*/
/*-- Result (运行结果) --*/
/*
x(0)= 5.718367e+00
x(1)=-5.944898e+00
x(2)=-3.836735e-01
x(3)= 8.040816e+00
x(4)=-8.081633e+00
*/
/*------------ define (函数原型定义) ---------------------------*/
int bchol(double *a,int n,double *det);
/*
int bchol(a,n,det)
int n;
double a[],*det;
2.9 对称正定矩阵的乔里斯基分解与行列式的求值
a--双精度实型二维数组,体积为n x n 。存放n阶对称正定短阵A;返回时,其下三
角部分存放分解后的下三角矩阵L,其余元素均为零。
n--整型变量。对称正定矩阵A的阶数。
det--双精度实型变量指针。在该指针指向的变量中返回行列式值。
*/
/*-- Example (函数实例) --*/
/*
#include "stdio.h"
#include "bchol.c"
main()
{ int i,j;
double det;
static double a[4][4]={ {5.0,7.0,6.0,5.0},
{7.0,10.0,8.0,7.0},
{6.0,8.0,10.0,9.0},
{5.0,7.0,9.0,10.0}};
i=bchol(a,4,&det);
if (i>0)
{ printf("MAT L 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("det(A)=%13.7e\n",det);
}
}
*/
/*-- Result (运行结果) --*/
/*
MAT L IS:
2.236068e+00 0.000000e+00 0.000000e+00 0.000000e+00
3.130495e+00 4.472136e-01 0.000000e+00 0.000000e+00
2.683282e+00 -8.944272e-01 1.414214e+00 0.000000e+00
2.236068e+00 -6.332402e-16 2.121320e+00 7.071068e-01
det(A)= 1.000000e+00
*/
/*------------ define (函数原型定义) ---------------------------*/
int bcinv(double *ar,double *ai,int n);
/*
int bcinv(ar,ai,n)
int n;
double ar[],ai[];
2.4 复矩阵求逆的全选主元高斯-约当法
ar--双精度实型二维数组,体积为n x n。存放原矩阵A的实部;返回时存放逆矩阵的实部。
ai--双精度实型二维数组,体积为n x n。存放原矩阵A的虚部;返回时存放逆矩阵
的虚部。
n--整型变量。矩阵阶数。
*/
/*-- Example (函数实例) --*/
/*
#include "stdio.h"
#include "bcinv.c"
#include "bcmul.c"
main()
{ int i,j;
static double br[4][4],bi[4][4],cr[4][4],ci[4][4];
static double ar[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 ai[4][4]={ {0.1345,0.1678,0.1875,1.1161},
{1.2671,0.2017,0.7024,0.2721},
{-0.2836,-1.1967,0.3558,-0.2078},
{0.3576,-1.2345,2.1185,0.4773}};
for (i=0; i<=3; i++)
for (j=0; j<=3; j++)
{ br[i][j]=ar[i][j]; bi[i][j]=ai[i][j];}
i=bcinv(ar,ai,4);
if (i!=0)
{ printf("MAT AR IS:\n");
for (i=0; i<=3; i++)
{ for (j=0; j<=3; j++)
printf("%13.7e ",br[i][j]);
printf("\n");
}
printf("\n");
printf("MAT AI IS:\n");
for (i=0; i<=3; i++)
{ for (j=0; j<=3; j++)
printf("%13.7e ",bi[i][j]);
printf("\n");
}
printf("\n");
printf("MAT AR- IS:\n");
for (i=0; i<=3; i++)
{ for (j=0; j<=3; j++)
printf("%13.7e ",ar[i][j]);
printf("\n");
}
printf("\n");
printf("MAT AI- IS:\n");
for (i=0; i<=3; i++)
{ for (j=0; j<=3; j++)
printf("%13.7e ",ai[i][j]);
printf("\n");
}
bcmul(br,bi,ar,ai,4,4,4,cr,ci);
printf("\n");
printf("MAT CR=AA- IS:\n");
for (i=0; i<=3; i++)
{ for (j=0; j<=3; j++)
printf("%13.7e ",cr[i][j]);
printf("\n");
}
printf("\n");
printf("MAT CI=AA- IS:\n");
for (i=0; i<=3; i++)
{ for (j=0; j<=3; j++)
printf("%13.7e ",ci[i][j]);
printf("\n");
}
}
}
*/
/*-- Result (运行结果) --*/
/*
MAT AR 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 AI IS:
1.345000e-01 1.678000e-01 1.875000e-01 1.116100e+00
1.267100e+00 2.017000e-01 7.024000e-01 2.721000e-01
-2.836000e-01 -1.196700e+00 3.558000e-01 -2.078000e-01
3.576000e-01 -1.234500e+00 2.118500e+00 4.773000e-01
MAT AR- IS:
-5.669986e-03 4.851151e-01 2.166018e-02 -1.874068e-01
-6.996602e-02 -4.714739e-02 5.546471e-01 -5.583729e-02
-1.763916e-01 -1.421441e-01 7.371922e-02 2.620023e-01
4.848230e-01 -3.106411e-02 -1.258590e-01 -2.498309e-03
MAT AI- IS:
4.506499e-02 -4.816759e-01 -2.382550e-01 1.211980e-01
1.162225e-01 1.487048e-01 5.124807e-01 -1.430340e-01
1.032388e-01 1.142015e-01 4.515873e-01 -4.689941e-01
-4.430876e-01 4.101886e-02 -1.227346e-01 9.101123e-02
MAT CR=AA- IS:
1.000000e+00 -2.775558e-17 -1.734723e-17 -1.170938e-17
-1.387779e-17 1.000000e+00 -6.938894e-17 -4.065758e-17
0.000000e+00 1.301043e-17 1.000000e+00 -2.168404e-18
-5.551115e-17 -3.903128e-17 3.469447e-17 1.000000e+00
MAT CI=AA- IS:
3.122502e-17 2.081668e-17 1.110223e-16 -2.168404e-18
-1.387779e-17 1.474515e-17 -1.040834e-17 -2.873136e-17
1.019150e-17 2.913793e-17 2.133710e-16 -1.973248e-17
2.081668e-17 -1.474515e-17 3.677614e-16 2.699663e-17
*/
/*------------ define (函数原型定义) ---------------------------*/
void bcmul(double *ar,double *ai,double *br,double *bi,int m,int n,int k,double *cr,double *ci);
/*
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?