|
楼主 |
发表于 2005-1-19 22:46:19
|
显示全部楼层
//////////////////////////////////////////////////////////////
// 全选主元高斯消去法
//a-n*n 存放方程组的系数矩阵,返回时将被破坏
//b-常数向量
//x-返回方程组的解向量
//n-存放方程组的阶数
//返回0表示原方程组的系数矩阵奇异
int cagaus(double a[],double b[],int n,double x[]);
//////////////////////////////////////////////////////////////
//复系数方程组的全选主元高斯消去法
//ar-n*n存放复系数矩阵的实部,要被破坏
//ai-n*n存放复系数矩阵的虚部,要被破坏
//n-方程组的阶数
//br-存放方程组右端复常数向量的实部,返回时存放解向量的实部
//bi-存放方程组右端复常数向量的虚部,返回时存放解向量的虚部
//返回值0表示系数矩阵奇异
int cbcgaus(double ar[],double ai[],int n,double br[],double bi[]);
//////////////////////////////////////////////////////////////
//全选主元高斯-约当消去法
//a-n*n 存放方程组的系数矩阵,返回时将被破坏
//b-n*m常数向量,每列为一组,返回时存放m组解向量
//n-方程组的阶数
//m-方程组右端常数向量的个数
//返回0表示原方程组的系数矩阵奇异
int ccgj(double a[],double b[],int n,int m);
//////////////////////////////////////////////////////////////
//复系数全选主元高斯-约当消去法
//ar-n*n 存放方程组的系数矩阵的实部,返回时将被破坏
//ai-n*n 存放方程组的系数矩阵的虚部,返回时将被破坏
//br-n*m常数向量的实部,每列为一组,返回时存放m组解向量的实部
//bi-n*m常数向量的虚部,每列为一组,返回时存放m组解向量的虚部
//n-方程组的阶数
//m-方程组右端常数向量的个数
//返回0表示原方程组的系数矩阵奇异
int cdcgj(double ar[],double ai[],double br[],double bi[],int n,int m);
//////////////////////////////////////////////////////////////
//求解三对角线方程组的追赶法
//存放三对角线矩阵中三对角线上的元素
//存放顺序为a00,a01,a10,a11,a12,a21,a22,a23,...,an-1,n-2,an-1,n-1
//就是按行依次存储
//n-方程组的阶数
//m-b的长度,应为m=3n-2,本函数中用来做检验
//d-存放方程组右端常数向量,返回时存放解向量
int cetrd(double b[],int n,int m,double d[]);
//////////////////////////////////////////////////////////////
//一般带型方程组的求解
//n-方程组的阶数
//l-系数矩阵的半带宽
//il-系数矩阵的带宽,应为il=2l+1
//m-方程组右端的常数
int cfband(double b[],double d[],int n,int l,int il,int m);
//////////////////////////////////////////////////////////////
//求解对称方程组的分解法
//a n*n数组,存放方程组的系数矩阵(应为对称矩阵)
//n 方程组的阶数
//m 方程组右端常数向量的个数
//c n*m 存放方程组右端的m组常数向量;返回时存放方程组的m组解向量
//返回值小于0表示程序工作失败,大于0表示正常返回
int cgldl(double a[],int n,int m,double c[]);
//////////////////////////////////////////////////////////////
//求解对称正定方程组的平方根法
//用Cholesky分解法(即平方根法)
//a n*n 存放系数矩阵(应为对称正定矩阵),返回时其上三角部分存放分解后的U矩阵
//n 方程的阶数
//m 方程组有短的常数向量的个数
//d n*m 存放方程组右端m组常数向量;返回时,存放方程组的m组解向量
//返回值小于0,表示程序工作失败
int chchol(double a[],int n,int m,double d[]);
//////////////////////////////////////////////////////////////
//求解大型稀疏方程组的全选主元高斯-约当消去法
//只是在消去过程中避免了对零元素的运算,从而可以大大减少运算次数
//本函数不考虑系数矩阵的压缩存储问题
//a n*n数组,存放方程组的系数矩阵,返回时要被破坏
//n 方程组的阶数
//d-存放方程组右端常数向量,返回时存放解向量
//返回值为0表示系数矩阵奇异
int ciggj(double a[],int n,double b[]);
//////////////////////////////////////////////////////////////
//求解Toeplitz型方程组的Levinson递推算法
//t 长度为n 的一维数组,存放对称T型矩阵中的元素t0,t1,...tn-1
//n 方程组的阶数
//b 长度为n 的一维数组,存放方程组右端的常数向量
//x 长度为n 的一维数组,返回方程组的解
//返回值小于0表示程序工作失败
int cjtlvs(double t[],int n,double b[],double x[]);
//////////////////////////////////////////////////////////////
//Gauss-Seidel迭代法求解系数矩阵具有主对角线占绝对优势的线性代数方程组
//a n*n数组,存放方程组的系数矩阵
//b 长度为n 的一维数组,存放方程组右端的常数向量
//n 方程组的阶数
//x 长度为n 的一维数组,返回方程组的解
//eps 给定的精度要求
int ckgsdl(double a[],double b[],int n,double x[],double eps);
//////////////////////////////////////////////////////////////
//求解线性最小二乘问题的Householder变换法
//a m*n 存放超定方程组的系数矩阵,返回时存放QR分解式中的R矩阵
//m 系数矩阵的行数 (m>=n)
//n 系数矩阵的列数 (m>=n)
//b 长度为m 的数组,存放方程组右端常数向量,返回时前n个元素存放方程组的最小二乘解
//q m*m 工作矩阵,返回时存放QR QR分解式中的Q矩阵
//返回值为0表示程序工作失败,不为0表示正常返回
//调用:dkqr()
int clgmqr(double a,int m,int n,double b,double q);
//////////////////////////////////////////////////////////////
//求解线性最小二乘问题的广义逆法
//a m*n 存放超定方程组的系数矩阵,返回时对角线依次给出奇异值o0,o1,o2...,op,其余元素为0
//m 系数矩阵的行数
//n 系数矩阵的列数
//b 长度为m 的数组,存放方程组右端常数向量
//x 长度为n 的数组,返回时存放方程组的最小二乘解
//aa n*m ,返回时存放系数矩阵的广义逆
//eps 奇异值分解函数中控制精度要求
//u m*m 工作矩阵,返回时存放系数矩阵的奇异值分解式中的左奇异向量
//v m*m 工作矩阵,返回时存放系数矩阵的奇异值分解式中的右奇异向量
//ka ka=max(m,n)+1
//返回值为0表示程序工作失败,不为0表示正常返回
//调用:dluav(),dginv()
int cmgm(double a[],int m,int n,double b[],double x[],double aa[],double eps,double u[],double v[],int ka);
|
|