C课程设计三分法求方程的根.docx

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

C++课程设计三分法求方程的根

一、课程设计的目的和意义

本课程是《数值分析》课程的实践环节课。课程设计是数值分析的同步课程,是数值分析的上机实习课。数值分析课程中构造了各种有效的计算方法,但是这些方法仍然存在着许多不足之处,数值分析课程设计是针对已有计算方法的缺陷而进行的创造性设计的一门课程,以提高综合运用所学的理论知识和方法独立分析和解决问题的能力。

二、提出问题

在实际应用中,好多复杂的方程以目前的方法不能求出其精确解,并且有好多工程并不需要精确地解,只要控制误差在一定的范围内。二分法不失为一个解决的好方法。而二分法的优点是算法简单,且随着科技的不断发展,人们对误差的要求也越来越严格,那么就有必要找出跟好的方法来面对人们对误差的要求。根据二分法的原理,猜想三分是否会更快的找出满足要求的解。

三、理论分析

1、解决方法

一般二分法分为两个步骤:

确定根的初始近似值,一般为一个包括为一个包含根的区间,称为有根区间

根的精确化。根据根的近似值按某种方法逐步精确化,直至满

足预先要求的精确度为止。

先设f(x)在[a.b]连续,如果f(a)*f(b)0则f(x)=0有解;一般采用这种方法可能会遇到问题,而且计算量比较繁琐,结果也不理想

2、进行改革

二、 二分法遇到的问题是因为它每次只把有根的区间平均分成两部分再求解,如果进行三等分的话这样缩短了解的范围,二分法的误

差为b?a而三分法的误差为b?a所以可以看出三分法德精度要比二

2n 3n

分法高,进行的步骤少。

四 详细设计

考察有根区间?a,b?,取三等分点x

?a?(b?a)/3,x

?b?(b?a)/3将它分

1为两半,假设x

1

1 2

,2x不是f?x?的零点,然后进行根的搜索,即检查f(a),

2

f(b),f(x),f(x

)他们之间的乘积是否同号,由于我们只考虑区间端

1 2

点处函数值乘积异号的情况,故可以断定?f?a?,f?x

??,?f?x

?,f?x

??,

?f?x

2

1 1 2

?,f?b??三个区间端点处函数值的乘积最少有一个是异号的(要么

一个异号,要么全部都异号)。我们从中选取一个满足区间端点处函数值的乘积异号的区间进行新一轮的分析,新的有根区间的长度仅为原始有根区间长度的三分之一。对压缩的有根区间又可施行同样的手续,即用三等分点将区间分为三部分,然后通过根的搜索判定所求的根在的哪一区间内,从而有确定一个新的有根区间,其长度是原区间长度的九分之一。

如此仿佛下去,即可得出一系列的有根区间,其中每个区间长

度都是前一个区间的三分之一,如此一直三分下去,这些区间最终必收缩于一点,该点显然是所求的根。

每次三分后,设取新的有根区间的中点作为近似根的近似值,则在三分过程中可以获得一个近似根的序列,该序列必以方程的根为极限。所以在允许误差存在的情况下,我们一定可以找到一个有根区间在误差所允许的范围内。

不管是二分法还是三分法,前提条件是原始区间内一定有根,也就是区间端点函数值的乘积小于零。我们对其进行三分时,在新得的三个区间中必定存在一个区间为有根区间。具体情况如下:

? ? c?a?b?a d?b?b?a ? ?

我们不妨设原始区间为

a,b,

3 , 3 为区间

a,b的

三等分点。我们易知如果区间端点的函数值异号,?a,c?、?c,d?、?d,b?端点的函数值异号情况我们知道其中两个区间端点函数值的异号情况

就可推出第三个区间端点函数值的异号情况。当f?c??0且f?d??0时

有以下四种情况:

如果f?a?

如果f?a?

如果f?a?

如果f?a?

f?c?

f?c?

f?c?

f?c?

?0、f?c?*f?d?

?0、f?c?*f?d?

?0、f?c?*f?d?

?0、f?c?*f?d?

?0,则f?d?

?0,则f?d?

?0,则f?d?

?0,则f?d?

*f?b??0

*f?b??0

*f?b??0

*f?b??0

当f?c??0或f?d??0时,我们就可以直接找出它的根(c或d)。

b?a

误差分析:第一次三分后的区间长度为3 ,第二次三分后的区间长

b?a b?a

度为32

,??,第n次三分后的区间长度为3n

,??

我们取区间的中点xn来近似真实根x,有

x?x

n

?b?a

2*3n

五、算法实现

如此反复三分下

文档评论(0)

dqy118 + 关注
官方认证
内容提供者

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

认证主体上海海滋实业有限公司
IP属地上海
统一社会信用代码/组织机构代码
91310115MA7DL1JF2N

1亿VIP精品文档

相关文档