课程设计报告
实验内容: 线性方程组求解
相关课程: 信息系统开发语言(一)
学 期: 2011-2012学年第2学期
学时学分: 68学时 4学分
专业班级: 信管 1022班
学 号:
姓 名: 陈新云
指导老师: 陈荣元
提交日期: 2012年 6月23日
信息系统开发语言(一)课程设计
——线性方程组求解
一、课程设计目的
通过课程设计要达到两个目的,一是检验和巩固专业知识、二是提高综合素质和能力。课程设计主要是C++语言程序设计的实现。通过该课程设计,可以将我们课堂上掌握的理论知识与处理数据的业务相结合,以检验我们掌握知识的宽度、深度及对知识的综合运用能力。
二、问题描述
1)利用迭代法求线性方程组的解。
2)输入线性方程组的系数矩阵和常数列——程序正常运行后,屏幕上显示一个文字菜单,当用户选定操作项目所对应的序号时,根据应用程序的提示信息,从键盘上输入相应的数据。输出数据——应用程序正常运行后,要在屏幕上显示一个文字菜单, 要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
三、问题分析
迭代法原理:将原线性方程组Ax=b中系数矩阵的主对角线移到一边并将其系数化为一,然后在给定迭代初值的情况下通过迭代的方法求解线性方程组的值。
①题目要求用迭代法给线性方程组求解,首先要了解迭代法这一算法是怎么实现求解组方程组。
②用迭代法求线性方程时,需要输入一些什么数据,来实现方程求解的过程。
③在求解过程中,方程组如出现无解、有限解、无限解该怎么处理。
一般性用迭代法给方程求解如下:
给定实数域上光滑的实值函数f(x)以及初值定义数列
(1)
称为f(x)的一个迭代序列。
给定迭代函数f(x)以及一个初值利用(1)迭代得到数列如果数列收敛于一个,则有
(2)
即是方程x=f(x)的解。由此启发我们用如下的方法球方程g(x)=0的近似解。将方程g(x)=0改写为等价的方程
x=f(x), (3)
然后选取一初值利用(1)做迭代。迭代数列收敛的极限就是方程g(x)=0的解。
用上述方程求方程的根的一个首要问题是迭代是否收敛?
经过试验我们知道,使得迭代序列收敛并尽快收敛到方程g(x)=0的某一解的条件是迭代函数f(x)在解的附近的导数的绝对值近两小。这启发我们将迭代方程修改成
(4)
我们需要选取使得
得
于是
特别地,如果f(x)=g(x)+x ,则我们得到迭代公式
(5)
四、算法分析、设计与描述
用雅克比(Jacobi)迭代法求解
设有n阶方程组
(6)
若系数矩阵非奇异,且 (i = 1, 2,…, n),将方程组(6)改写成
然后写成迭代格式
(7)
(7)式也可以简单地写为
(8)
对(7)或(8)给定一组初值后,经反复迭代可得到一向量序列,如果X (k)收敛于,则就是方程组(6)的解。这一方法称为雅克比(Jacobi)迭代法或简单迭代法,(7)或(8)称为Jacobi迭代格式。
下面介绍迭代格式的矩阵表示:
设D = diag (a11, a22, …, ann),将AX = b改写为:
AX = (D – (D - A)) x = b
DX = (D - A) x + b
X = (I – D-1A) x + D-1b
记 B = I – D-1A
C 课程设计线性方程组求解 来自淘豆网m.daumloan.com转载请标明出处.