91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 0.01M
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-05-14
  • 語言: C/C++
  • 標簽: 其他??

資源簡介

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? {
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

評論

共有 條評論