非线性方程求根.doc

上传人:桔**** 文档编号:558395288 上传时间:2023-08-12 格式:DOC 页数:9 大小:172.35KB
返回 下载 相关 举报
非线性方程求根.doc_第1页
第1页 / 共9页
非线性方程求根.doc_第2页
第2页 / 共9页
非线性方程求根.doc_第3页
第3页 / 共9页
非线性方程求根.doc_第4页
第4页 / 共9页
非线性方程求根.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《非线性方程求根.doc》由会员分享,可在线阅读,更多相关《非线性方程求根.doc(9页珍藏版)》请在金锄头文库上搜索。

1、 非线性方程求根系 别计算机系专 业计算机科学与技术学 号200808111028姓 名杨辉非线性方程求根摘 要随着科学技术,生产力经济的发展,在科学与工程计算中存在着大量方程求根问题,例如贷款购房问题,工厂的最佳订货问题等都需要求解一类非线性方程的根,而本文就针对这些求根问题提出了解决方案,本文利用牛顿迭代法来结决方程的求根问题首先根据实际问题列出数学模型,确定变量,给出各个条件及相关函数;然后对建立的模型进行具体分析和研究,选择合适的求解方法;编写函数的程序,用计算机求出方程的解,通过所求解分析具体情况关键词:非线性方程,牛顿迭代法,Matlab1 绪 论1.1 非线性方程求根的背景牛顿迭

2、代法是牛顿在17世纪提出的一种求解方程多数方程不存在求根公式,从而求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要而在各种科学和工程计算中往往要用到非线性方程组的求解,而牛顿法又是最基础的迭代法,在各种计算力学、控制工程等领域中发挥了不可代替的作用而在数值计算中,非线性方程组的求解同样具有重要意义随着计算机技术的成熟和高速发展,对于非线性方程求根问题出现了大量的数学软件(如MATLAB,Matheamatica,Maple,SAS,SPSSD等),计算机已经成为工程师应用数学解决工程问题的主要运算工具同时,工程专业的学生对数学教育的需求重点正在从手工演绎和运算能力的培养转变到结

3、合计算机软件进行建模、求解和论证能力的培养本文采用Matlab作为软件平台,介绍了非线性方程求根的内容1.2 非线性方程求根的目的 为了推动科学的进步,能够很简便的完成各种工程计算,非线性方程组的求解方法以其独有的方法解决了各种计算非线性方程组的求解正是为了这个目的才广泛被人们应用,此文也将给出非线性方程组求解的实际应用1.3 非线性方程求根的内容解非线性方程的主要算法是迭代法,如fsolve、二分法、牛顿迭代法等迭代法是从已知的解的初始近似值 (简称初值)开始,利用某种迭代格式求得一近似值序列逐步逼近于所求的解(称为不动点)这一方法是否成功取决于三个因素,首先应与同解,其次初值的选取是否合适

4、,一般要与真解靠近,最后也是最关键的是迭代序列是否收敛,为了保证收敛性,在真解附近应有否则迭代序列可能发散最基本的迭代法是Newton迭代法,其迭代格式为.从几何上说为用在出切线代替求得的解,所以也称为切线法,当初值与真值足够靠近,Newton迭代法收敛对于单根,Newton法收敛速度很快;对于重根,收敛较慢牛顿迭代法的大概算法为:给定初始值,为根的容许误差,为的容许误差,为迭代次数的容许值. 如果或迭代次数大于,则算法失败,结束;否则执行 计算 若或,则输出,程序结束;否则执行 令,转向下面给出了Newton迭代法的计算程序function x=newton(fname,dfname,x0,

5、e)%用途:Newton迭代法解非线性方程f(x)=0%格式:x=nanewton( fname,dfname,x0,e) x返回数值解,%fname和dfname分别表示f(x)及其导函数%f(x),x0为迭代初值,e精度要求(默认为1e-4)if narginex0=x;x=x0-feval(fname,x0)/feval(dfname,x0);End 2 牛顿迭代法的实现及应用2.1Newton迭代法具体例子的实现用Newton迭代法解方程 在1.5附近的根解:当时,即恒正,所以根在0,2.我们先用图解法找初值,在用Newton法程序newton.m求解fun= inline(x3+x2

6、-3*x-3); %就是定义一个内置函数,本质上说跟function干的是一样的事,只不过它可以直接内嵌在命令行里,不用另外单独定义function.fplot(fun,0,2);grid on;图 2.1 的函数图像 由图可知方程有唯一正根在1.6,1.8之间,我们取初值1.5代入Newton程序中dfun=inline(3*x2+2*x-3);format long;newton(fun,dfun,1.5,1e-4);format short;ans = 1.73205080756888而用Matlab本身的函数fzero求出来的结果为:format long;fzero(inline(x

7、3+x2-3*x-3),1.5);format shortans = 1.73205080756888下面用牛顿迭代法解决一些实际问题2.2应用牛顿法解决购房贷款利率问题住房是居民消费的一个主要部分,大部分人选择银行按揭贷款,然后在若干年内逐月分期还款如果你借了10万,还款额一定超过10万设贷款总额为,贷款期限为个月,采取逐月等额方式偿还本息若为第个月的欠款数,为月还款,为月利率我们得到些列迭代关系式那么 ,由此可以得到月还款计算公式下面是新民晚报2000年3月30日第七版上的一则房产广告:表2.1 房产广告建筑面积总价30%首付70%按揭月还款85.98 36万10.8万30年1436元不难

8、算出,你向银行总共借了25.2万,30年内共要还51.96万,约为当初借款的两倍这个案例中的贷款年利率是多少呢?我们根据0.1436, =25.2, ,由以上的求解公式得到:.我们令,则次问题就转化成非线性方程求根的问题,令求出r我们先用Newton函数求解在Matlab中输入如下程序:常识上,应比当时活期存款月利率略高一些我们用当时的活期存款月利率0.0198/2作为迭代初值,为了剔除这个没有意义的根,我们对稍作变形:clear;fun=inline(25.2*(1+r)360/0.1436-(1+r)360-1)/r,r)fun = Inline function: fun(r) = 25

9、.2*(1+r)360/0.1436-(1+r)360-1)/r dfun=inline(25.2*360*(1+r)359/0.1436-(360*(1+r)359*r-(1+r)360-1)/(r2);r=newton(fun,dfun,0.0198/2,1e-4); R=12*r然后求得结果:R = 0.0553于是得出年利率为 5.53%下面我们用Matlab中的fzero函数检验一下: clear;fun=inline(25.2*(1+r)360-(1+r)360-1)/r*0.1436,r)fun = Inline function: fun(r) = 25.2*(1+r)360-

10、(1+r)360-1)/r*0.1436r=fzero(fun,0.0198/2);R=12*rR = 0.0553结果相同,可见牛顿迭代法的正确性结 论通过以上的论述我们可以知道计算机在现代生活中的应用已经如此普及,尤其是在数学计算当中,Matlab软件更是发挥了不可替代的作用Matlab以其强大的功能,方便了当今数值计算,数学教程,及工程计算等众多领域本文在以Matlab软件为平台的基础上,给出了非线性方程的一般解法,非线性方程的求解有二分法,牛顿迭代法等二分法的优点是算法简单,且总是收敛的,但由于二分法的收敛速度太慢,故一般不单独将其用于求根,只用其为根求得一个较好的近似其他的求根方法各

11、有优缺点,这里就不一一赘述本文主要介绍了牛顿迭代法及其在现实生活中的应用牛顿迭代法为平方收敛,故其收敛速度较快,但对初值的选取需要谨慎,如果初值选取错误,则可能导致方程迭代发散,最终不能求解出正确解在计算一些对精度要求特别苛刻时,最好给出较高的精度输入及输出,防止因为精度问题导致误差过大,最终影响结果牛顿迭代法可以应用于分形理论分形理论是近二、三十年才发展起来的一门新的学科,其主要描述自然界和非线性系统中不光滑和不规则的几何形体.在地质、材料科学、物理学、计算机科学、艺术设计等方面有着十分广阔的应用前景. 非线性方程的求根问题在计算机发展的基础上,被广泛应用于各种工程计算,大大方便了工程师们的计算过程,在现代的工业发展中发挥了重要作用牛顿迭代法简便易学,为今后的学子们提供了更多的学习内容参考文献1 胡良剑,孙晓君.Matlab数学实验M. 高等教育出版社,2006. 2 李庆扬,王能超,易大义.数值分析(第4版)M.清华大学出版社.施普林格出版社.2001.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号