下载此文档

C语言编程解线性,非线性方程,龙贝格算法.docx


文档分类:IT计算机 | 页数:约10页 举报非法文档有奖
1/10
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/10 下载此文档
文档列表 文档介绍
课程设计
课程名称:
数值计算B
设计题目:
数值计算B课程设计
学号:

姓名:

完成时间:
2015年10月27日
题目一:非线性方程求根
一、题目
假设人口随时间和当时人口数目成比例连续增长,在此假设下人口在短期内的增长建立数学模型。
(1)如果令表示在时刻的人口数目,表示固定的人口出生率,则人口数目满足微分方程,此方程的解为;
(2)如果允许移民移入且速率为恒定的,则微分方程变成,
此方程的解为;
假设某地区初始有1000000人,在第一年有435000人移入,又假设在第一年年底该地区人口数量1564000人,试通过下面的方程确定人口出生率,精确到;且通过这个数值来预测第二年年末的人口数,假设移民速度保持不变。
二、数学原理
本题考查非线性方程的解法。数值计算中常用的有二分法、不动点迭代法、牛顿法以及其变形,本文采用牛顿法进行迭代计算。
牛顿法的基本思想是将非线性方程逐步转化为某种线性方程来求解。其计算过程大致为:
将非线性方程转化为的形式;
将函数在方程的近似根(假定)处泰勒展开,则原方程可近似为
记上述方程的根为,得到其计算公式为
(4)按照给定的精度要求判断是否收敛,得到最终结果。
本题中,将非线性方程转化为的形式如下:


由于牛顿法对初值的要求较高,因此先采用二分法初步给定初值。如下表所示:

1
的符号
-
+
故取初值。
三、程序设计
使用C语言进行迭代程序的设计。
定义数组x[1000]存放人口增长率的迭代数据;
定义变量a表示迭代次数,定义变量b为迭代误差,变量c为计算精度;
输入变量:x[0]=,c=;
输出变量:x[a](即最终结果),a,迭代总次数,b迭代最终误差。
程序设计见附录。(二分法与牛顿法混合使用,计算收敛较易,因而只给定最大迭代次数,未进行迭代是否发散的判定)
四、结果分析和讨论
程序运行结果如下图所示,计算精度为10-4的最终结果为。将其代入方程
得到第二年人口的计算式为
%,第二年该地区人口数量约为2187900人。
讨论:使用牛顿法与二分法相配合在较少的迭代次数下即取得了较为准确的结果,可见数值计算方法在计算类似问题上有着很大的优势。
图1 题目一程序运行结果
五、完成题目的体会与收获
在求解该题目的过程中,使用了非线性方程的牛顿迭代法求解,运用C语言设计了迭代计算程序,对非线性方程求解的数学思想有了深入认识和切实体会,有助于将数值计算课程中学到的理论知识运用到实际物理问题的研究中。
题目二:线性方程组求解
一、题目
假设一个物体可以位于个等距点的任意位置,当物体在位置时,它只能等可能的移动到或者,而不能直接移动到其他任何位置,概率表示物体从位置开始在到达右端点之前到达左端点的概率,显然,且有,即有下面方程组:
取对方程组进行求解(迭代法或者直接法)。
二、数学原理
观察上述线性方程组的系数矩阵,显然该矩阵是弱对角占优的三对角阵,可利用三对角方程组的追赶法求解。
给出三对角阵(针对本题系数矩阵,给出九阶方阵克劳特分解)的克劳特分解如下:
其中为待定系数,追赶法公式及计算过程如下:
计算待定系数的递推公式

C语言编程解线性,非线性方程,龙贝格算法 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数10
  • 收藏数0 收藏
  • 顶次数0
  • 上传人w447750
  • 文件大小229 KB
  • 时间2018-06-15