ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:149.40KB ,
资源ID:8480600      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8480600.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数值分析高斯实验报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数值分析高斯实验报告.docx

1、数值分析高斯实验报告 数值分析实验报告作业内容: 高斯列主消元法解方程组 学院名称: 计算机工程学院 专 业: 计算机应用(师范) 学期: 12-13-1 学分: 2.0 班级: 10计2Z 学号:10141228 姓名: 张燕 教师姓名:古春生 成绩: 高斯列主消元法解线性方程组一、实验目的及要求1掌握求解线性方程组的高斯消元法-列选主元在计算机上的算法实现。2程序具有一定的通用性,程序运行时先输入一个数n表示方程含有的未知数个数,然后输入每个线性方程的系数和常数,求出线性方程组的解。二、实验设备和实验环境安装有C或C+的计算机。三、算法描述1高斯消元法基本思路如果一个线性方程组的系数矩阵是

2、上三角矩阵时,这种方程组我们称之为上三角方程组,它是很容易求解的。只要把方程组的最下面的一个方程求解出来,在把求得的解带入倒数第二个方程,求出第二个解,依次往上回代求解。高斯消元法的目的就是把一般线性方程组简化成上三角方程组。于是高斯消元法的基本思想是:通过逐次消元将所给的线性方程组化为上三角形方程组,继而通过回代过程求解线性方程组。2高斯列主消元法计算步骤 将方程组用增广矩阵表示。步骤1:消元过程,对。选主元,找使得,如果,则矩阵奇异,程序结束。如果,则交换第行与第行对应元素位置,。消元,对,计算对,计算步骤 2:回代过程:若则矩阵奇异,程序结束;对,计算四、分析1时间复杂度时间频度 一个算

3、法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。 常数阶O(1),对数阶O(log2n),线性阶O(n), 线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3),., k次方阶O(nk),指数阶O(2n)。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。 就本程序而言,因为出现了三

4、个for循环的嵌套 所以时间复杂度为O(n3) 2空间复杂度空间复杂度 与时间复杂度类似,空间复杂度是指算法在计算机内执行时所需存储空间的度量。记作: S(n)=O(f(n) 我们一般所讨论的是除正常占用内存开销外的辅助存储单元规模。 空间复杂度为O(1)。五、程序流程图 六、程序描述程序要用到的函数(1、)matrix_getElement(array,n,m);此函数的作用是获得用户输入的线性方程组的系数矩阵。(2、)matrix_outputElement(array,n,m);此函数的作用是显示用户输入的矩阵。(3、)selectMaxElement(array,n,m,row );此

5、函数的作用是选择主元素,并把此时对角线上的那列元素与主元素行交换。(4、)GAUSSProcess(array, n, m, row);此函数的作用是用主元素列进行高斯消元,把此行以后所有的行的,此列的元素变为0。(5、)GAUSSProcess_result(array, n,m);此函数的作用是显示经过高斯消元后的矩阵,此时的系数矩阵为一个上下三角矩阵。(6、)GAUSSCalculate_result(array, n, m);此函数的作用是对已经消元好的矩阵,进行回代求解。并将结果输出。七、程序代码#include#include#include#include const int N

6、=60;/最大const int M=61;/60列,再加上等号右边的一列值/输入要计算方程组的矩阵void matrix_getElement(double ARRAYNM,int n, int m) for(int i=0;in;i+) cout请您输入第t(i+1)t行:endl; for(int j=0;jARRAYij; return;/输出用户刚才用户输入的矩阵,以便用户检测是否输入正确void matrix_outputElement(double ARRAYNM, int n, int m) coutyour have input the matrix as fllows:n;

7、 for(int i=0; in;i+) for(int j=0;jm;j+) coutARRAYij t t; coutendlendl; /选择主元素,并把主元行与对角线上的那一行交换void selectMaxElement(double ARRAYNM,int n, int m, int line ) double max=0; double t=0; int j=0; int i=line; max=ARRAYlineline; for(i=line+1;i fabs(max) ) max=ARRAYiline; j=i; if(jline) for(i=0;im;i+) t=ARR

8、AYji; ARRAYji=ARRAYlinei; ARRAYlinei=t; /用对角线上的元素消元后续行中此列的元素void GAUSSProcess(double ARRAYNM, int n, int m, int row) double ROW1M; for(int t=0;t(m-row);t+) ROW1t=ARRAYrowrow+t; for(int j=(row+1); j n; j+) double ROW_CHANGEM; for(int r=0;r(m-row);r+) double mainElement=ROW10; if( fabs(mainElement) 1e

9、-7) cout Single! press any key return.n; getchar(); return; ROW_CHANGEr=ROW1r*ARRAYjrow/ROW10; for(int h=0; h=0; p-) for(int q=n-1; qp; q-) ARRAYpm-1=ARRAYpm-1 - ARRAYpq*aq; ap = ARRAYqm-1/ARRAYpp; cout-the final result as follows-:n; for(int e=0; en; e+) cout x e+1 = ae endl; /输出经过高斯消元法处理后得到的矩阵void

10、 GAUSSProcess_result(double ARRAYNM, int n, int m) cout您输入的矩阵经过高斯消元法处理后得到如下形式:n; for(int i=0; in;i+) for(int j=0;jm;j+) coutARRAYijtt; coutendlendl; /main函数void main() double arrayNM; cout请输入您要运算的矩阵的大小!n; int n=0, m=0; coutn; coutm; cout您所输入的行为:n 您所输入的列为:mendl; matrix_getElement(array,n,m); /获得矩阵的元素

11、 matrix_outputElement(array,n,m); /显示输入的矩阵 for(int row=0; rown; row+) /高斯消元法的主体 selectMaxElement(array,n,m,row ); GAUSSProcess(array, n, m, row); GAUSSProcess_result(array, n,m); /显示消元后的矩阵 GAUSSCalculate_result(array,n,m); /回代求解并显示解结果 cout This is the end!;八、运行程序本程序可以自己选择线性方程组的行数和列数。例子如下:2x1x25x3x48

12、;x13x26x49;2x2x32x45;x14x27x36x40;输入您要运算的矩阵的大小!请输入您要运算的矩阵的行数:4请输入您要运算的矩阵的列数:5您所输入的行为:4 您所输入的列为:5请您输入第 1 行:2 1 -5 1 8请您输入第 2 行:1 -3 0 -6 9请您输入第 3 行:0 2 -1 2 -5请您输入第 4 行:1 4 -7 6 0完成以上的数据输入后,出现结果如下图所示:此图片为用户运行程序后所看到的结果,即:x1=3x2=4x3=1x4=1九、感想该程序完成不是一帆风顺的,在编写过程中遇到了许多的疑难问题有幸得到了同学与老师的帮助,同时自己也翻阅了相关书籍,努力编好与完善。刚开始对自己解线性方程组的课题无从下手,对用“高斯列主消元法”更是莫名其妙。这次的程序基本上是参考的别人的,不过通过我的不懈努力,也算是对高斯列主消元法有了基本的了解和认识。这次课设在一定程度上给自己打下了基础,希望以后能有更多的机会参加课程设计。十、参考文献 【1】 谭浩强C程序设计教程北京清华大学出版社【2】 刘成等C语言程序设计实验指导与习题集北京中国铁道出版社

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1