为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

行列式求值(化为对角式)

2018-06-28 8页 doc 22KB 12阅读

用户头像

is_841159

暂无简介

举报
行列式求值(化为对角式)行列式求值(化为对角式) 采用的是多文件编译,作者环境是 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规则
,交换两列,最终值乘以-1,此处顺便处理了. return 1; //若找到,返回1. } i++; //没找到,对下一行处理. } return 0; //最终没有找到,返回0. } /******************************************************************** ********* 该函数作用是保证当前行上处于对角线位置上的元素值不为0. 若不为0返回1,否则试着找到一行的当前列元素不为0,并使二行的值交换.若找不到,则 返回0. ********************************************************************* ********/ int ValDet::FindNonZero(vector &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<
/
本文档为【行列式求值&#40;化为对角式&#41;】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
热门搜索

历史搜索

    清空历史搜索