行列式求值(化为对角式)行列式求值(化为对角式)
采用的是多文件编译,作者环境是 vc6.0++
文件1 ValDet.h
/********************************************************
本程序采用C++类模式求行列式的值,
类入口函数为CalcDet(ValDet det),用户需要创建对象作为输入.
算法基本思想是将行列式化为对角形式,然后再使对角线上
的值相乘.
,由于算法的原因, 行列式的值装在容器vector中,double型
不能保证精度.
**************...
行列式求值(化为对角式)
采用的是多文件编译,作者环境是 vc6.0++
文件1 ValDet.h
/********************************************************
本程序采用C++类模式求行列式的值,
类入口函数为CalcDet(ValDet det),用户需要创建对象作为输入.
算法基本思想是将行列式化为对角形式,然后再使对角线上
的值相乘.
,由于算法的原因, 行列式的值装在容器vector中,double型
不能保证精度.
********************************************************/
#ifndef _VALDET_H
#define _VALDET_H //预编译.
#include
#include //使用容器vector.
using namespace std;
class ValDet
{
private:
int lin;
int col; //对角线的当前行,列.
//以下四个函数都是被CalcDet(ValDet det)调用的函数,故设为private型.
int Exchange(vector &M,const int &lin,const int &col,int n);
int FindNonZero(vector &M,const int &lin,const int &col,int n);
void AdjDet(vector &M,int &lin,int &col,int n);
void InDet(vector &m,int &n); public:
ValDet(); //类构造函数.
double CalcDet(ValDet det); //计算函数.类入口函数.
};
#endif
文件二, ValDet.cpp
#include
#include
#include //测试用,用于生成随机行列式值.
#include "ValDet.h" //引入头文件.
using namespace std;
ValDet::ValDet()
{
lin=0; //将对角线当前元素设为0行0列.
col=0; }
int ValDet::Exchange(vector &M,const int &lin,const int &col,int n)
{
int i=lin+1; //从下行开始找.
int j=col; //保存列.
while (i &M,const int &lin,const int &col,int n)
{
if(M[lin*n+col]==0)
return Exchange(M,lin,col,n);
return 1;
}
/*****************************************************************
此函数的作用是用当前行使以下所有行的当前列值变为0,其他的元素执行 相同操作.
同其他函数,此函数的值采用引用的方法.
*****************************************************************/
void ValDet::AdjDet(vector &M,int &lin,int &col,int n)
{
int i=lin; //当前行.
int k=i+1; //下一行.
while(k &M,int &n) //采用引用的方式. {
srand((unsigned)time(NULL)); //此为测试用,用于随机生成行列式的值.
cout<<"请输入行列式的阶数: "; //测试用.
cin>>n; //输入阶数.
double temp=0; //中间值.
for(int i=0;i>temp; //输入值.
temp=rand()%20; //测试用,随机生成.
M.push_back(temp); //装入容器.
//cout< M; //创建一个容器,用于装元素值.
int n; //行列式的阶数.
InDet(M,n); //输入函数.
while(det.lin #include "ValDet.h"
using namespace std;
int main()
{
ValDet mycalc;
cout<
本文档为【行列式求值(化为对角式)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。