- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
东南大学C程序课程设计报告
目录
程序设计原理与功能简介…………………2
课程设计要求………………………………5
源程序分析…………………………………7
新程序设计思路……………………………10
新增模块源代码与功能介绍………………11
程序设计中遇到的问题与解决方法………14
程序运行测试结果与分析…………………16
程序缺陷与大致优化思路…………………20
设计心得与个人体会………………………20程序设计原理与功能简介
迭代法是线性方程的一种常用解法,首先选取适当的初值,然后用同样的计算步骤重复计算,在满足精度的情况下,停止迭代,求得近似解。
★迭代法简介:
也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。迭代法又分为精确迭代和近似迭代。“二分法”和“牛顿迭代法”属于近似迭代法。迭代算法是用计算机解决问题的一种基本方法。它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。最常见的迭代法是牛顿法。其他还包括最速下降法、共轭迭代法、变尺度迭代法、最小二乘法、线性规划、非线性规划、单纯型法、惩罚函数法、斜率投影法、遗传算法、模拟退火等等。
即:
选用松弛因子代入上述线性方程得到松弛的赛德尔公式:
通常在(0,2)内选取,当1,成为超松弛,当1时,成为亚松弛。
松弛因子的恰当选择,可以大大提高收敛速度,(经查资料,可以证明利用赛德尔法计算方程,收敛则方程组有解,且收敛充分条件有多个,在此不一一例举),在实际计算中,往往要靠经验找到最优松弛因子。
★一般迭代法:
由赛德尔迭代法与一般迭代法比较可知,在迭代的每一步计算过程中一般迭代法是用的全部分量来计算的所有分量,显然在计算第i个分量时,已经计算出的必威体育精装版分量没有被利用,从直观上看,必威体育精装版计算出的分量可能比旧的分量要好些.因此,对这些必威体育精装版计算出来的第次近似的分量加以利用,就得到所谓解方程组的高斯—塞德(Gauss-Seidel)迭代法.
下面就用程序来验证这一点。
二.课程设计要求
重载类的构造函数,可以在定义类的对象时利用函数参数输入方程的各项参数,便于程序调试。
增加类的成员函数,可以将一个线性方程用文本文件的编辑器(如记事本)写入一个文件中,然后由新增的成员函数中读取,运行结束后写回文件中。
原程序是高斯-赛德尔算法解线性方程,仿照源程序编写简单迭代法求解线性方程的程序,并利用相同方程组与塞德尔算法进行验证比较,分别求出他们的收敛次数。
设计并对主程序进行测试:
本次测试所选线性方程组为:
★一般迭代法的大致运算:
0 1 2 3 4 5 6 0 0.7 1.42 1.783 2.0338 2.1823 …… 0 0.8 1.49 1.862 2.1101 2.2594 …… 0 2.4 3.18 3.876 4.2462 4.4948 …… ★赛德尔迭代法大致运算:
0 1 2 3 4 5 6 0 0.7 1.6726 1.9337 2.1416 2.3271 …… 0 1.01 1.9714 1.9224 2.3074 2.4330 …… 0 3.348 2.7116 4.3247 4.6743 4.8118 ……
源程序分析
源程序首先定义了一个类。在这个类中,先定义了两个友元函数,分别重载输出与输入运算符。后又定义了一些对象,包括矩阵行列数,方程解的个数,存放方程的解,迭代次数,松弛因子。也定义了几个成员函数,包括误差函数,构造函数,输入行列数,变换矩阵函数,主要算法部分,输出最后结果的函数。
构造函数的作用是为行列数分配内存空间,是动态生成的。输入行列数要求用户自己输入,来初始化行列数。变换矩阵要求将原矩阵作出的变换是:实对角线上的系数为0,每一行的其他数都是原数除以原每一行第一个数的相反数。然后是进行一轮迭代,参数是松弛因子,求出必威体育精装版的迭代解,每求出的一个新解都立即用到下一个分量的计算中去,继续迭代,直到满足解的精度才停止迭代,最后输出函数结果。
★源程序代码:
源程序头文件部分
# includeiostream.h
# includemath.h
# includeconio.h
# includeiomanip.h
(源程序主要由类和类的声明构成)
class Matrix //高斯-赛德尔矩阵乘法类
{
friend void operator(ostream ,Matrix ); //重载输出运算符
friend void operator(istream ,Matrix ); /
文档评论(0)