c语言程序编程线性方程,C语言编程求解线性方程

41528d3028836879cd698677c3999917.gifC语言编程求解线性方程

本 科 专 业 学 年 论 文题 目 : 线性方程组求解方法比较姓 名 郭 凤 专 业 计算机科学与技术专业 班 级 08 级本科(2 )班 指导教师 刘 晓 娜 完成日期:2010 年 1 月 8 日题 目 : 线性方程组求解方法比较摘 要目前在许多实际应用领域, 诸如航空、造船以及其它结构工程中, 常遇到求解大型线性代数方程组的问题。本文根据线性代数方程组的雅可比迭代法、LU 分解法及高斯列主元消去法三种解法进行了比较,用以方便在实际生活应用中更好的作出选择。在第二章中本文详细的介绍了线性代数方程组的三种解法的理论知识与证明过程。为了更加清晰的展现三种方法的不同点以及其各自的优越性,本文在第三章中给出了实例,通过实例的计算与程序的实现,再结合三种方法的优缺点进行了比较。 关键字:线性代数方程组、迭代法、LU 分解法、高斯列主元消去法、不同点、比较目 录第一章 绪论 …………….………………………………………………………………………………………………………4第二章 求解线性方程组的基本理论2.1 迭代法 …………………………………………………………………………………………………………….52.2 直接三角分解法 …………………………………………………………………………………………….62.3 高斯消去法 …………………………………………………………………………………………………….7第三章 三种算法求解方程组实例3.1 迭代法 ……………………………………………………………………………………………………………83.2 直接三角分解法 …………………………………………………………………………………………103.3 高斯列主元消去法 ……………………………………………………………………………………….143.4 三种方法的优缺点比较 ………………………………………………………………………….16参考文献 ………………………………………………………………………………………………………17计算机专业学年论文 线性方程组求解方法比较3第一章 绪 论在自然科学、工程技术、经济和医学各领域中产生的许多实际问题都可以通过数学语言描述为数学问题,也就是说,由实际问题建立数学模型,然后应用各种数学方法和技巧来求解,最后把结果反馈到实际应用中去。计算数学是数学学科的一大分支,它研究如何借助于计算机求解各类数值问题。应用计算机求解各类数值问题需要经历以下几个主要过程:1、实际问题 2、数学模型 3、计算方法4、算法设计 5、计算求解目前已有的数学软件可以帮助我们实现上机计算,基本上已经将数值分析的主要内容设计成简单的函数,只要调用这些函数进行运算便可得到数值结果。数值分析的内通包括线性代数方程组求解、非线性代数方程(组)求解、矩阵的特征值与特征值向量的计算、函数插值、函数逼近、数值积分与数值微分以及微分方程数值解法。线性方程组的求解从理论上可分为两类:直接法和迭代法。直接法是不考虑计算过程中的舍入误差,经过有限次的运算得到方程组精确解的方法,常见的方法是高斯顺序消去法、高斯列主元消去法和矩阵的 LU 分解法。迭代法是采用某种极限过程,用线性代数方程组的近似解逐步逼近精确解的方法。迭代法中常见的方法有简单迭代法、J-迭代法、GS-迭代法和SOR-迭代法。本文主要是分析高斯列主元消去法、矩阵的 LU 分解法和简单迭代法理论上的异同,并用C 语言程序通过具体实例进行了分析比较。本文将线性方程组的求解过程用计算机实现,本文的编写由以下几个特点:1、对于难点问题从具体模型引入,淡化抽象的概念与定理,通俗易通;2、对于具体模型本文给出了多种解题的思想及方法;3、对问题进行简洁易懂的理论证明,突出了线性代数的理论和基本思想,使数学方法更加利于理解掌握。4、简要分析了算法的计算效果、稳定性、收敛效果、计算精度以及优劣性。计算机专业学年论文 线性方程组求解方法比较4第二章 求解线性方程组的基本理论2.1 迭代法迭代法的基本思想:是将线性方程组转化为便于迭代的等价方程组,对任选一组初始值(i=1,2 …n) ,按某种计算规则,不断地对所得到的值进行修正,最终获得满足精度要求的𝑥𝑖方程组的近似解。对于线性方程组 Ax=b 其中,A 为非奇异矩阵。将 A 分裂为 A=M-N,其中,M 为非奇异矩阵,且要求线性代数方程组 Mx=d 容易求解,一般选择为 A 的某一部分元素构成的矩阵,称 M 为 A 的分裂矩阵。于是,求解 Ax=b 转化为求解Mx=Nx+b,由此可构造一个迭代法:x(0)(初始向量) , x(k+1)=Bx(k)+f (k=0,1,2…) 其中,f=b/M,B=I-A/M 为迭代法的迭代矩阵。选取 M 为 A 的对角元素组成的矩阵,即选取 M=D,可得到解 Ax=b 的雅克比迭代法:x(0)(初始向量),x(k+1)=Bx(k)+f (k=0,1,2…) BJ为求解 Ax=b 的雅克比迭代法的迭代矩阵。解雅克比迭代法的计算公式为:(k=0,1,2, ……:i=1,2,3,……n) )(1,.1(1)()( )0(02)(0( nijkjijkjiki TxabaxxX雅克比方法是求对称矩阵的全部特征值以及相应的特征向量的一种方法, ,它是基于以下两个结论:1)任何实对称矩阵 A 可以通过正交相似变换成对角型,即存在正交矩阵 Q,使得 AQ=diag( ) 其中 i(i=1,2,…,n)是 A 的特征值,Q 中各列为相应的特征向量。𝑄𝑇 𝜆1,𝜆2,…,𝜆𝑛𝜆2)在正交相似变换下,矩阵元素的平方和不变。即设 ,Q 为交矩阵,记 B=𝐴=(𝑎𝑖𝑗)𝑛∗𝑛 AQ= ,则𝑄𝑇 (𝑏𝑖𝑗)𝑛∗𝑛𝑛∑𝑖,𝑗=1𝑎2𝑖𝑗=𝑛∑𝑖,𝑗=1𝑏2𝑖𝑗雅克比方法的基本思想:是通过一次正交变换,将 A 中的一对非 0 的非对角线化成 0,并且使得非对角元素的平方和减小。反复进行上述过程,使变换后的矩阵的非对角元素的平方和趋于 0,从而使该矩阵近似为对角矩阵,得到全部特征值和特征向量。计算机专业学年论文 线性方程组求解方法比较52.2 直接三角分解法矩阵直接三角分解法:是高斯消去法的变形方法。高斯消去法有多种变形,有的是高斯消去法的改进,有的是用于某种特殊系数矩阵的化简。高斯消去法解线性方程组先消元,然后再回代。当用矩阵描述时,是对系数矩阵分解为一个上三角阵和一个下三角阵的乘积,即LU 分解。因此,高斯消去法与矩阵的 LU 分解是一致的。将高斯消去法改写为紧凑形式,可以直接从矩阵 A 的元素得到计算 L,U 元素的递推公式,而不需要任何中间步骤,这就是所谓的直接三角分解法,一旦实现了矩阵 A 的 LU 分解,那么求解 Ax=b 的问题就等价于求解两个三角形方程组: 的问题,而这两个线性代{Ly=𝑏, 求 x

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432788.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FastReport问题整理(转)

FastReport问题整理 博客分类: 软件开发部分来自网上,部分来自网友,部分来自Demo如果有新的内容,会不断更新.. 更新历史: 2009-02-27 加入套打方案全攻略(原:jinzhili博客) 2009-03-…

EISCONN的故事

在这春风明媚的日子里,有位T同学很苦恼。忙碌了一整天,有个BUG愣是定位不出来。简单描述呢,现象是这样子的: 第一次处理是正常的,但是后续的处理就是报错。sendto()调用错误码是 EISCONN(已被连接&#xff…

c语言局限性,C语言陷阱与缺陷.pdf

C 语言陷阱和缺陷[1]winxos 11-01-28winxos 11-01-28原著:Andrew Koenig - AT&T Bell Laboratories Murray Hill, New Jersey 07094原文:收藏翻译:lover_P[译序]那些自认为已经“学完”C 语言的人,请你们仔细读阅读这篇文章吧…

[随记][asp.net基础]Page_Load和OnLoad

标题:[随记][asp.net基础]Page_Load和OnLoad 一、前言 东西好久不用、不想,就会忘,所以没办法,只好记下来。 二、正文 aspx页面加载的时候会自动执行Page_Load,也会执行OnLoad方法,这两个是什么关系呢&…

POLLERR的故事

今天code review时,同事B对我代码中的poll()的处理做法提出了异议。于是做了些研究,还发现了一些好玩的故事。 异议的代码 我的代码是参考manpage写的,类似下面的做法。同事B说没有处理POLLERR、而且应当使用else if。 OK。我赞同补充POLLERR…

c语言内循环,C语言循环控制语句

C语言循环控制语句是一个基于C语言的编程语句,该语句主要有while循环语句、do-while循环语句和for循环语句来实现循环结构。中文名C语言循环控制语句类 别while循环语句,do-while语句等目 地实现循环结构属 于计算机领域归 类编程语句基 …

同步,异步,多线程,你怎么看?

同步,异步,多线程,你怎么看? 原文:同步,异步,多线程,你怎么看?[原创]讲解同步与异步的帖子多如牛毛,个人的理解,简单地说同步就是串行,异步就是并…

openssl-1.0.0b - libssl 移植到ARM Linux

开发环境: ubuntu 10.04 arm-linux-gcc version 4.4.1 目标环境 友善之臂mini6410 linux-2.6.36 移植步骤 1.至官网下载最新的openssl,解压缩 2.cd进入openssl-1.0.0b目录 3.执行./Confiugre linux-elf-arm&#xff0c…

C语言的putpiel函数,C语言graphics.h函数介绍

可编辑(一) 像素函数56. putpiel() 画像素点函数57. getpixel()返回像素色函数(二) 直线和线型函数58. line() 画线函数59. lineto() 画线函数60. linerel() 相对画线函数61. setlinestyle() 设置线型函数62. getlinesettings() 获取线型设置函数63. setwritemode() 设置画线模…

ARM-Linux下交叉编译opessl-1.0.0

本次任务是要完成嵌入式Linux下对openssl程序的支持。 我的开发环境:ARM9开发板 和 嵌入式Linux操作系统。装有Linux系统(我的是ubuntu9.04)的PC机一台。串口和串口连接线。串口调试软件:minicom。交叉编译工具:arm-unknown-l…

modf函数C语言,C / C ++中的modf()

该函数modf()用于将传递的参数拆分为整数和小数。在“ math.h”头文件中声明该变量以进行数学计算。它返回传递的参数的分数值。这是modf()C语言的语法,double modf(double value, double *integral_pointer);这里,值-分为整数和分数的值。积分指针-分割…

codeforces #236 div2 简洁题解

A:A. Nutstime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou have a nuts and lots of boxes. The boxes have a wonderful feature: if you put x (x ≥ 0)divisors (the spacial bars that can divide a box) to…

南京大学c语言试卷,2007年4月南京大学C语言期中试题.doc

2007年4月南京大学C语言期中试题南京大学《C语言程序设计》期中试卷(2006年4月15日)系科 学号______________姓名_____________成绩_______________注意事项:1、答案均写在答题纸上,写在卷面上无效;2、答题结束后将试卷及答题纸全部交给监考教师;3、闭卷…

web通信 长连接、长轮询

http://www.cnblogs.com/hoojo/p/longPolling_comet_jquery_iframe_ajax.html转载于:https://www.cnblogs.com/kszit/p/3605340.html

V210 SPI驱动分析

对于总线设备驱动,是需要分别创建设备和驱动两个结构体,然后根据name,互相匹配,匹配成功后,调用 驱动的probe函数,然后创建设备文件,实现驱动的业务逻辑。 因此,我们就以设备和驱动…

android 有值代码,Android:如何在代码中获取“listPreferredItemHeight”属性的值?

这样做:TypedValue value new TypedValue();((Activity)context).getTheme().resolveAttribute(android.R.attr.listPreferredItemHeight, value, true);编辑:由于尚未正确初始化DisplayMetrics实例,因此您将获得零值。它需要一个参考框架(显…

android 多个按钮响应,处理Android Recyclerview中的多个按钮单击并将响应存储在Array或ArrayList中...

我正在设计在线测验App。我设计了PlayQuiz.java文件如下:public class PlayQuiz extends AppCompatActivity {private RecyclerView recyclerView;DataBaseHelper database;private List quizList;private QuizAdapter adapter;Overrideprotected void onCreate(Bun…

密码学中的“盐值 Salt”

盐(Salt) 在密码学中,是指通过在密码任意固定位置插入特定的字符串,让散列后的结果和使用原始密码的散列结果不相符,这种过程称之为“加盐”。 以上这句话是维基百科上对于 Salt 的定义,但是仅凭这句话还是…

android 主线程调用,Android 主线程和线程之间相互发送消息

通过分析Activity源码,我们知道每个Activity都有一个Looper,所以主线程在接收Message是不需要调用Looper.prepare()和Looper.loop(),但是线程是不带Looper的,当线程要接收来自主线程的消息是就需要调用Looper.prepare()和Looper.l…

10 个十分难得的 javascript 开发经验

Javascript 的很多扩展的特性是的它变得更加的犀利, 同时也给予程序员机会创建更漂亮并且更让用户喜欢的网站。 尽管很多的开发人员都乐于颂扬 javascript,但是仍旧有人看到它的阴暗面。 使用很多 javascript 代码的 web 页面会加载很慢,过多…