网站大量收购闲置独家精品文档,联系QQ:2885784924

计算方法:非线性方程迭代求解.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
计算方法:非线性方程迭代求解

化工计算:一元非线性方程求解 1. 化工实际问题的提出 求解非线性方程是化工设计及模拟计算中必须解决的一个问题。与线性方程相比,非线性方程问题无论是从理论上还是从计算公式上,都要比线性方程复杂的多。对于一般的非线性 f(x)=0 ,计算方程的根既无一定章程可循也无直接方法可言。 例如:求解高次方程组7x6-x3+x-1.5=0的根; 求解含有指数和正弦函数的超越方程ex-sin(x)=0的零点。 解非线性方程或非线性方程组也是计算方法中的一个主题。一般地,我们用符号f(x)来表示方程左端的函数,方程的一般形式表示为f(x)=0,方程的解称为方程的根或函数的零点。 对于高次代数方程,当次数4时,则没有通解公式可用,对于超越方程既不知有几个根,也没有同样的求解方式。实际上,对于n≥3代数方程以及超越方程都采用数值方法求近似根。 1. 化工实际问题的提出 通常,非线性方程的根不止一个,而任何一种方法只能算出一个根。因此,在求解非线性方程时,要给定初始值或求解范围。而对于具体的化工问题,初值和求解范围常常可根据具体的化工知识来决定。常见的雷诺数和摩擦系数关系方程在雷诺数低于4000时有以下关系式: 1. 化工实际问题的提出 这是一个典型的非线性方程。我们在管路设计中经常碰到。当我们已知雷诺数Re,如何根据公式 (1) 求出摩擦系数 λ,这是我们在管路设计中必须首先解决的问题。对于方程 (1) 而言,无法用解析的方法求出摩擦系数,只能用数值求解的方法。如用在下面即将介绍的松弛迭代法,假设: 则利用松弛迭代公式可得: 经11次迭代可得摩擦系数为0.07593。 1. 化工实际问题的提出 饱和蒸气压是我们经常要用到的数据,虽然我们可以通过实验测量来获取饱和蒸气压的数据,但我们通常利用前人已经测量得到的数据或回归的公式来获取,这可以减轻我们大量的基础实验工作。公式 (2) 是一种常用的饱和蒸气压计算公式: 其中p为饱和蒸气压,单位为mmHg,T为温度,单位为K,A、B、C、D为已知系数。要想得到某一温度下的饱和蒸气压,直接利用公式 (2) 是无法得到的。因为公式 (2) 两边都有未知变量,并且无法用解析的方法求解,必须用数值计算的方法求解。 通过上面的一些例子,我们可以发现,如果没有适当的手段和办法来求解非线性方程,那么化学化工中的许多研究、设计等工作将无法展开,这势必影响化学化工的发展,下面我们将介绍一些实用的非线性方程求解方法,并提供计算机程序。 2. 数值法求根 首选要给出一个初始猜测解,然后通过各种迭代格式使其逐次逼近准确解。 初值好坏对迭代收敛性有很大影响,因此初值的选取很重要。 对于有专业背景的问题,初值可以按条件选择,对于没有经验的问题,可以用图解法和计算机试算有哪些信誉好的足球投注网站法初估近似解。 逐步扫描法求根的初始近似值 用数值法求方程的根可分为两步,首先要找出根的某个近似值,又称为“初始值”,然后再采用特定算法将初始值逐步接近真实值,直到获得满足要求的结果。 逐步扫描法 3. 实根的对分法 对分法或称二分法是求方程近似解的一种简单直观的方法。设函数 f(x) 在[a,b]上连续,且 f(a)f(b)0,则f(x)在[a,b]上至少有一零点,这是微积分中的介值定理,也是使用对分法的前提条件。计算中通过对分区间,逐步缩小区间范围的步骤有哪些信誉好的足球投注网站零点的位置。 如果我们所要求解的方程从物理意义上来讲确实存在实根,但又不满足 f(a)f(b)0,这时,我们必须通过改变a和b的值来满足二分法的应用条件。 3. 实根的对分法 计算f(x)=0的一般计算步骤如下: 1、输入求根区间[a,b]和误差控制量 ε ,定义函数f(x)。 2、判断: 如果f(a)f(b)0则转下,否则,重新输入a和b的值。 3、计算中点 x=(a+b)/2以及f(x)的值 分情况处理: (1)|f(x)| ε :停止计算x*=x,转向步骤4 (2)f(a)f(x)0:修正区间[a,x]→[a,b],重复3 (3)f(x)f(b)0:修正区间[x,b]→[a,b],重复3 4、输出近似根x*。 右图给出对分法的示意图。 对分法举例 C语言程序:直接迭代计算λ #include stdio.h #include math.h float sqr(float x){ x=x*x; return x;} FILE *fp=fopen(out.txt,“w+); float lam(float re,float ed) {float lamdar,lamdar1; if(re2000) lamdar=64/re

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档