




已阅读5页,还剩16页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
线性方程组的数值解法一、下三角方程组的解法对于线性方程组:即:写成通式的形式: C+源程序:#include const int n=4;void LYB(double Lnn+1) for(int i=0;in;i+) for(int j=0;j=i-1;j+) Lin-=Lij*Ljn; void main()double Lnn+1=1,0,0,0,4,1,1,0,0,7,1,-1,1,0,3,1,-1,-1,1,0;LYB(L);for(int i=0;in;i+) coutYi=Linendl;二、上三角方程组的解法对于线性方程组:即:写成通式的形式:#include const int n=4;void UXY(double Unn+1) for(int i=n-1;i=0;i-) for(int j=i+1;j=n-1;j+) Uin-=Uij*Ujn; Uin/=Uii; void main()double Unn+1=1,-1,-1,1,0,0,1,-1,1,3,0,0,1,1,3,0,0,0,1,2; UXY(U); for(int i=0;in;i+) coutXi=Uinendl;三、GAUSS消去法解线性方程组1、消去目标2、消去过程(假定在以下消去演算中不会出现分母为0的情况)为直观起见,我们把方程组写成如下形式:第0步,实现第0列目标:消去第(1)、(2)、(n-1)中的项,(0)式保持不变。方法:即:注意:j=0可以不算,如果要算,其结果肯定是0。经第一步计算后,方程组变成了如下形式:第1步:在第0步成果的基础上,实现第1列目标:消去第(2)、(3)、(n-1)中的项,(0)、(1)式保持不变。方法:即:经第二步计算后,方程组变成了如下形式:由第一步、第二步的消去过程,不难归纳出任意一步(第k步)的计算通式:Gauss消去法已经将原方程组变形为上三角方程组,逆序回代容易求出最后结果。在第k步Gauss消去法中,要用到做分母,这就严格要求的绝对值不能太小。对于事先无法估计的值,解决办法是:每步消去之前,先考察待消去的几个方程的绝对值大小,并交换方程次序,以保证绝对值最大。程序设计思路:1、 设计数组,其中前面的0至n-1列存放方程组的系数矩阵,第n列存放常数项。2、 设计求列中最大值函数,为选择主元作准备。3、 设计一个交换数据函数,为交换方程做准备,4、 设计一个消去函数,其中要调用求列中最大值函数确定主元,要调用交换数据函数来交换方程5、 调用上三角方程组的求解函数求出最终解。6、 主函数准备数据、调用有关函数、输出结果课堂练习:编程实现用Gauss消去法解任意大小的方程组。#include #include const int n=4;/*下面是求列中最大值函数,考察范围是:akk、ak+1k、an-1k,返回结果是主元的行号,为选择主元作准备。*/int Max(double ann+1,int k)int t=k;double max=fabs(akk);for(int i=k+1;imax)t=i;max=fabs(aik);return t;/*下面是一个交换第k行和第t行方程的函数,选主元的后续工作*/void change(double ann+1,int k,int t)double x;for(int j=k;j=n;j+)x=akj;akj=atj;atj=x;/*下面是高斯消去法的核心函数,其中调用求主元、交换方程函数*/void gauss(double ann+1)for(int k=0;kn-1;k+)int t=Max(a,k);if(t!=k)change(a,k,t);for(int i=k+1;in;i+)for(int j=k+1;j=0;i-) for(int j=i+1;j=n-1;j+) ain-=aij*ajn; ain/=aii; /*主函数void main()double Ann+1=1,1,-1,1,4,1,-1,-1,1,0,2,1,-1,-1,-3,2,2,1,-1,5;gauss(A);LYB(A);for(int i=0;in;i+)coutxi=Ainendl;coutendl; 四、三角分解法解线性方程组1、对于n元线性方程组,其分解目标是:2、分解过程:分n步进行,每一步又拆分成两小步,即有:0.1,0.2步;1.1,1.2步;2.1,2.2步;n-1.1,n-1.2步。请注意:0.1步:观察矩阵A的第0行元素: 0.2步:观察矩阵A的第0列剩余元素(已运算过的元素不再考虑): 1.1步:观察矩阵A的第1行剩余元素(已运算过的元素不再考虑): 1.2步:观察矩阵A的第1列剩余元素(已运算过的元素不再考虑): k.1步:观察矩阵A的第k行剩余元素(已运算过的元素不再考虑):此时,矩阵A的第k行剩余元素有:注意,矩阵L的第k行元素是: 尾部有n-k个0,0多。矩阵U的第j列元素是: 尾部有n-j个0,0少。所以:所以:k.2步:观察矩阵A的第k列剩余元素(已运算过的元素不再考虑): 此时,矩阵A的第k列剩余元素有:注意,矩阵L的第i行元素是: 尾部有n-i个0,0少。矩阵U的第j列元素是: 尾部有n-k个0,0多。所以:所以:3、小结:方阵A的LU分解过程可总结为: 4、利用矩阵的LU分解法解线性方程组假若UX=Y,则LY=B即假设:则:程序设计思路:1、设计一个数组,其中前面的0至n-1列存放方程组的系数矩阵,第n列存放常数项。2、对数组的系数矩阵部分(0至n-1列)进行LU分解,常数项(数组的第n列)保持不动。LU分解的结果依然存放在数组中,其中下三角存放L阵的结果(对角线元素均为1,不存放),上三角存放U的结果(含对角线)。3、利用下三角方程组的解法求中间结果,结果存放在常数项列阵的位置(数组的第n列)4、利用上三角方程组的解法求最终结果,最终结果也存放在常数项列阵的位置(数组的第n列)5、主函数的作用的准备数据和函数协调调用、结果输出。#include const int n=4;/*下面函数的作用是系数矩阵的分解*/void LU(double ann+1) for(int k=0;k=n-1;k+) for(int j=k;j=n-1;j+) for(int q=0;q=k-1;q+) akj-=akq*aqj; for(int i=k+1;i=n-1;i+) for(int q=0;q=k-1;q+) aik-=aiq*aqk; aik/=akk; /*解下三角方程组*/void LYB(double Lnn+1) for(int i=0;in;i+) for(int j=0;j=0;i-) for(int j=i+1;j=n-1;j+) ain-=aij*ajn; ain/=ai
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 成都商铺租赁合同范本:包含租赁合同变更及解除
- 车辆抵押贷款及产权转让全程服务合同范本
- 线上线下活动策划合作委托合同
- 产科护理教学工作汇报
- 监理专用表格汇编(承包商专用)
- 丰富兴趣小组活动方案
- 单位小区电梯管理制度
- 值班值守平台管理制度
- 口腔护士宿舍管理制度
- 学校费用收取管理制度
- YC/T 207-2014烟用纸张中溶剂残留的测定顶空-气相色谱/质谱联用法
- GB/T 18109-2011冻鱼
- 关于印发《民医院卒中筛查制度》的通知
- 工会基础工作操作实务(培训)课件
- 防治水培训课件
- 光谱CT临床应用
- 山东省水利水电工程施工企业安全生产管理三类人员考试题库-上(单选、多选题)
- 2022年生产机加工件工艺流程图
- 产品质量法讲义
- 中医常用穴位定位及主治共41张课件
- 绿色新能源-海洋能课件
评论
0/150
提交评论