资源简介
eig.cpp
代码片段和文件信息
#include
#include
#include
#include
//--------------------------这里是一些定义的结构体和数据类型---------
//纯C里面定义的布尔类型
typedef enum { False = 0 True = 1 }Bool;
//定义矩阵元素的类型为matrixType
typedef double matrixType;
//此结构体用来表示矩阵,其中row为行,column为列,height为高,array用来存放矩阵元素(用一维来模拟二维/三维)
typedef struct
{
unsigned row column height;
matrixType* array; //使用时,必须对*array进行初始化
}Matrix;
//矩阵分配内存
Bool SetMatrixSize(Matrix* matrix const unsigned row const unsigned column const unsigned height);
//设置Matrix矩阵中的所有元素大小为ele
void SetMatrixEle(Matrix* matrix matrixType ele);
//设置Matrix矩阵中的所有元素大小为0
void SetMatrixZero(Matrix* matrix);
//判断矩阵是否为空,若为空则返回1,否则返回0
Bool IsNullMatrix(const Matrix* matrix);
//销毁矩阵,即释放为矩阵动态分配的内存并将矩阵的长宽高置0
void DestroyMatrix(Matrix* matrix);
//计算矩阵可容纳元素个数,即return row*column*height
unsigned MatrixCapacity(const Matrix* matrix);
//||matrix||_2 求A矩阵的2范数
matrixType MatrixNorm2(const Matrix* matrix);
//matrixB = matrix(::height)即拷贝三维矩阵的某层,若matrix为二维矩阵,需将height设置为0
Bool CopyMatrix(Matrix* matrixB Matrix* matrix unsigned height);
//matrixC = matrixA * matrixB
Bool MatrixMulMatrix(Matrix* matrixC const Matrix* matrixA const Matrix* matrixB);
//对vector中所有元素排序,sign= 0 时为升序,其余为降序
void SortVector(Matrix* vector int sign);
//打印矩阵
void PrintMatrix(const Matrix* matrix);
//将A分解为Q和R
void QR(Matrix* A Matrix* Q Matrix* R);
//计算特征值和特征向量
void Eigenvectors(Matrix* eigenVector Matrix* A Matrix* eigenValue);
//---------下面是QR分解,求解线性方程所用到的一些函数-----------
/*
matrix为要设置大小并分配内存的矩阵,row、column、height分别为行,列,高。
函数调用成功则则返回true否则返回false
*/
Bool SetMatrixSize(Matrix* matrix const unsigned row const unsigned column const unsigned height)
{
unsigned size = row * column * height * sizeof(matrixType);
if (size <= 0)
{
return False;
}
matrix->array = (matrixType*)malloc(size);
//如果分配内存成功
if (matrix->array)
{
matrix->row = row;
matrix->column = column;
matrix->height = height;
return True;
}
else
{
matrix->row = matrix->column = matrix->height = 0;
return False;
}
}
//设置Matrix矩阵中的所有元素大小为ele
void SetMatrixEle(Matrix* matrix matrixType ele)
{
unsigned size = matrix->row * matrix->column * matrix->height;
unsigned i;
for (i = 0;i < size;++i)
{
matrix->array[i] = ele;
}
}
//设置Matrix矩阵中的所有元素大小为0
void SetMatrixZero(Matrix* matrix)
{
SetMatrixEle(matrix 0);
}
//判断矩阵是否为空,若为空则返回1,否则返回0
Bool IsNullMatrix(const Matrix* matrix)
{
unsigned size = matrix->row * matrix->column * matrix->column;
if (size <= 0 || matrix->array == NULL)
{
return True;
}
return False;
}
//销毁矩阵,即释放为矩阵动态分配的内存并将矩阵的长宽高置0
void DestroyMatrix(Matrix* matrix)
{
if (!IsNullMatrix(matrix))
{
free(matrix->array);
matrix->array = NULL;
}
matrix->row = matrix->column = matrix->height = 0;
}
//计算矩阵可容纳元素个数,即return row*column*height
unsigned MatrixCapacity(const Matrix* matrix)
{
return matrix->row * mat
相关资源
- 《Linux程序设计》第四版pdf高清电子版
- C++ Primer mobi
- 使用 IBM Rational Systems Developer 和 Rati
- VC编程助手2010破解版(原名VA_X_10.6.
- Linux操作系统下C语言编程从零开始
- 一个C++实现的源代码行数统计工具
- easySize使用方法和代码
- TLV解析算法
- C++ 从入门到精通明日科技光盘 百度云
- C和C++.rar
- consts.cpp
- 银行管理系统.cpp
- VC++外挂框架.rar
- VisualC++网络高级编程.(人民邮电.陈坚
- C++黑客编程揭秘与防范.pdf
- BombGoldFlower.cpp
- c++万能外挂.txt
- ZhajingHua.cpp
- C++AMP.pdf
- c++程序设计语言英文第三版.pdf
- Visual_assist_X_for_VC6.0破解版.rar
- 《C语言程序设计》谭浩强.pdf
- c++辅助源码.rar
- GBT28169-2011嵌入式软件C语言编码规范
- 用MFC实现的图像处理源代码总集
- C语言程序设计(郑莉)源码.rar
- zw_MFC编写一个简单的登录对话框(连
- 鸡啄米:VS2010MFC编程入门教程.pdf
- ATM源代码用c++文件读写.zip
- C语言写的文件传输系统
评论
共有 条评论