资源简介
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
相关资源
- C语言试题库含答案.rar
- C语言课程设计学生成绩管理系统源码
- 尚观教育李慧芹Linux下C语言前嵌入式
- PN532-mfoc-mfcuk-GUI_V2.1.rar
- MFC折叠和展开窗口实现方法.txt
- 《从放弃C语言到使用C++刷算法的简明
- 24点游戏.cpp
- huichang.cpp
- QUEUE.CPP
- C#callC++dll.pptx
- 数据结构算法与应用--C++语言描述(代
- VC6.0完全卸载工具.exe
- MFC成绩管理系统.rar
- QReport.cpp
- 数据结构课程设计散列表的设计与实
- zw_基于Ribbon界面的图书管理系统—w
- zw_记事本源码c++.zip
- zw_AES加密算法c语言实现代码.zip
- f8d0eaf9b7f33d5d7e75486cdaba4e43.cpp
- c语言课程设计电影院管理系统.zip
- c6client.cpp
- test.cpp
- C++ 修改其他进程中窗口的标题
评论
共有 条评论