c语言编程,利用c语言泰勒级数数求解sinx,输入x值,求解sinx值,保留小数点后6位。

查看: 13618|回复: 6|关注: 0
matlab解决sin(x)的泰勒展开问题
<h1 style="color:# 麦片财富积分
新手, 积分 5, 距离下一级还需 45 积分
一个关于matlab解决sin(x)的泰勒展开问题
&&对泰勒展开式不熟啊,完全找不到头绪,希望高手指点迷津
编写近似计算sin(x)的M function 文件,要求函数的输入是x和计算的精度error,函数输出是计算结果。用编好的M函数文件计算sin(pi/6)和sin(pi/2),精度为10-6。
编写sin(x)的泰勒展开式的M 函数文件,要求该函数文件的输入是x和展开式的阶次,函数输出是泰勒展开式的计算结果。
画出五阶sin泰勒展开式的图,使绘出的图形尽可能完整的描述出五阶泰勒展开的特征。将五阶泰勒展开和原始sin(x)画在同一个图中进行比较。
[ 本帖最后由 mooni 于
12:49 编辑 ]
<h1 style="color:# 麦片财富积分
关注者: 11
这个你的看看matlab关于数学方面的书了
加入分享快乐
<h1 style="color:# 麦片财富积分
将sinx在0处的泰勒展开式求出,是一个级数求和。
有了级数求和以后就只要做一个for循环或者while控制就可以了。
还是尽量自己先摸索,根据这个思路做应该不难。
<h1 style="color:#9 麦片财富积分
关注者: 57
&& y=sin(x);
&& taylor(y)
x-1/6*x^3+1/120*x^5
1 提问请直接在论坛中发帖,不要发站内消息给我。
2 不要在QQ中问我提问,这样很浪费时间
<h1 style="color:# 麦片财富积分
楼主不懂泰勒级数建议先找高等数学或者数学分析方面的书籍看一下,不要完全依靠软件。
<h1 style="color:# 麦片财富积分
第一题的要点在于需要知道余项估计。后面两个完全没难度。
<h1 style="color:# 麦片财富积分
zf=taylor(f,x,3)
sin(3) - (sin(3)*(x - 3)^2)/2 + (sin(3)*(x - 3)^4)/24 + cos(3)*(x - 3) - (cos(3)*(x - 3)^3)/6 + (cos(3)*(x - 3)^5)/120
站长推荐 /1
MATLAB中文论坛是全球最大的 MATLAB & Simulink 中文社区。用户免费注册会员后,即可下载代码,讨论问题,请教资深用户及结识书籍作者。立即注册加入我们吧!
MATLAB官方社交平台
MATLAB中文论坛微社区c语言编程中,sinx怎么表示?-_星空见康网
c语言编程中,sinx怎么表示?
c语言编程中,sinx怎么表示?
如果x本身是弧度,则可以写为:sin(x)
如果x不是弧度,可以写为,需要包含头文件math.h其次,如果x不是弧度,需要转换为弧度首先,要用到数学函数
&x ): &);scanf(&printf(&n&, sin(x) );%lf&#92;math.h&printf(&%lf&#include &return 0;#include &stdio.h&int main(){double x
写成sin(x),这是库函数,头文件是math.h
头文件里加入math.h,就有sin函数了。
sin(x)就可以吧
首先,要用到数学函数,需要包含头文件math.h 其次,如果x不是弧度,需要转换为弧度,如果x本身是...
while(fabs(y)&=1e-6)//去掉分号printf(&sinx的近似值为%lf,sin...
#include&stdio.h& /*以下代码运行通过*/ #include&math.h& ma...
//希望我的回答对你的学习有帮助#include&math.h&#include&stdio.h&i...
程序思路问题不大,但是你的for循环的条件会造成死循环(除非你是故意的),不停输入n,输出f(n)。...
首先要包含头文件#include &math.h& 然后定义两个float或者double类型的变量...
int n=1,count=1; double sum, scanf(&...
y2=pow(sin(x),2)-2*sin(x)+6;
//#include &stdafx.h&//If the vc++6.0, with this l...
你可能想看的相关专题当前位置: >>
方程求根(计算方法)
计算方法 (力学系本科生)第二章 方程求根(Roots finding ) 第二章 方程求根§2.1 问题的提出 §2.1 问题的提出f(x)=0, f: R→ R 定义:如存在x*使得f(x*)=0 则称x*为方程的根或函数f(x)的零点。 特别地,如果 * m * f ( x) ? ( x ? x ) g ( x), g ( x ) ? 0m=1m&1 x*为f(x)=0的单根或f(x)的单零点实际问题x*为f(x)=0的m重根或f(x)的m重零点 §2.1 问题的提出? f(x)是n次代数多项式 f(x)=0是n次代数方程? f(x)是超越函数f(x)=0是超越方程 §2.1 问题的提出例如:1. n次代数方程:f ( x) ? an x ? an ?1 xn n ?1? ... ? a1 x ? a0 ? 02. 超越方程: ?x f ( x) ? sin x ? e ? 0 x 2 m? n ( ) ? n 2 f ( x) ? ? (?1) ?0 m !(m ? n)! m ?0 §2.1 问题的提出Remarks:1. 非线性方程的根可为实根或复根;复 根总是共轭出现。2. Galois(伽罗瓦)在1830年就已经从理 论上证明对于次数高于4次的代数方程, 其根不能用方程系数的解析式表示;一 般的超越方程更没有解析的求根公 式!!!!!!!1。 §2.1 问题的提出3. 根的个数。? n次代数方程有?个根(包括实根和复根)? n为奇数时, 至少有一个根是实根 ? 对于超越方程,根可能0~无穷个 §2.1 问题的提出? 方程求根步骤(1) 对给定区间进行扫描,确定仅存在单根的 区间,此区间内的任意一点可视为根的近似 值。(2) 用迭代方法使根精确到所要求精度。 §2.1 问题的提出? 扫描流程 §2.1 问题的提出【历史注记】人们很早就探索了高次方程的数值解 的求法。巴比伦泥板中有平方表和立方表,利用它 们可以解某些特殊的二次和三次方程。中国古人相 当系统地解决了求高次方程数值解的问题,《九章 算术》以算法形式给出了二次方程及正系数三次方 程正根的具体计算程序;7世纪王孝通也给出了求 三次方程正根的数值解法;11世纪贾宪在《黄帝九 章算法细草》中创“开方作法本源图”,用“立成 释锁法”解三次和三次以上高次方程, 同时他又提 出一种更为简便的“增乘开方法”;13世纪秦九韶 在《数书九章》中的“正负开方术”最后完成,提 供了一个用算筹布列解任何次数字方程的可行算法。 §2.1 问题的提出阿拉伯人对高次代数方程的数值解法亦有研究,花 拉子米(9世纪)第一个给出了二次方程的一般解法, 奥马海亚姆(1100年)给出了一些特殊三次方程的解 法。1541年塔尔塔利亚得到三次方程的一般解法。 1545年卡尔达诺在其名著《大术》一书中发展了塔 尔塔利亚的这一成果,并记载了费拉里得到的四次 方程的一般解法。牛顿在1736年出版的《流数法》 一书中,给出了著名的高次代数方程的一种数值解 法,1690年Raphson 也提出了类似的方法,它们的结 合就是现代常用的方法-牛顿法(也叫NewtonRaphson方法)。它是一种广泛用于高次代数方程求 解的迭代法,亦称为切线法,并不断产生新的变形, §2.1 问题的提出如修正牛顿法,拟牛顿法等。1797年,高斯给出 “代数基本定理”,指出高次代数方程根的存在性。 1819年,霍纳提出求高次代数方程数值解的另一种 方法--霍纳法,其思想及计算程序与秦九韶的方 法近似,类似的方法鲁非尼在1804年也提出过,霍 纳法也有广泛的应用,它的现代改进形式叫劈因子 法。现在常用的代数方程数值解法还有伯努利法和 劳斯表格法。 §2.1 问题的提出? 有多种数值算法可以求解非线性方程, 我们在本章将学习其中得几种,它们是: ? 二分法(bisection method) ?迭代法(iteration method)?牛顿法(Newton method)?牛顿下山法(Newton downhill method)。 牛顿(1)牛顿(Newton Isaac -):英国数学 家、物理学家、天文学家、自然哲学家。生于林肯 郡伍尔索普,卒于伦敦。早年在格兰瑟姆读书, 1661年以优异成绩考入剑桥大学三一学院,数学上 受教于巴罗。1664年毕业后曾为躲避鼠疫回乡, 年做出流数法、万有引力和光的分析三 大发明,年仅23岁。1667年回剑桥在三一学院执教。 1669年继巴罗之后任卢卡斯数学教授职位。晚年致 力于哲学和公务,1696年任造币厂监督,3年后任 厂长。1703年当选为英国皇家学会主席。他在数学 上以创建微积分学而著名,其流数法始于1665年, 系统叙述于《流数法和无穷级数》(1671年完 牛顿(2) 成,1736年出版),首先发表在《自然哲学的数学 原理》(1687)中。其中借助运动学中描述的连续量 及其变化率阐述他的流数理论,并创用字母上加一 点表示流动变化率。讨论的基本问题是:已知流量 间的关系,求它们的流数的关系以及逆运算,确定 了微分与积分这两类运算的互逆关系,即微积分学 基本定理。此外,他还论述了有理指数的二项式定 理(1664年),n次代数方程根的m次幂和的公式 (1707年),数论、解析几何学、曲线分类、变分法 等问题。在物理学上发现了万有引力定律(),并据此指出行星运行成椭圆轨道的原因。 1666年用三棱镜实验光的色散现象,1668年发明并 牛顿(3)亲手制作了第一具反射望远镜。在哲学上深信物质、 运动、空间和时间的客观存在性,坚持用观察和实 验方法发现自然界的规律,力求用数学定量方法表 述的定律说明自然现象,其科学研究方法支配后世 近300年的物理学研究。 牛顿像(1) 牛顿像(2) 牛顿像(3) 牛顿像(4) 牛顿像(5) 牛顿像(6) 牛顿像(7) 牛顿像(8) 高斯(1) 高斯(Gauss, Carl Friedrich -):德 国数学家、物理学家、天文学家。生于不伦瑞克, 卒于格丁根。高斯是近代数学奠基者之一,在历史 上影响之大,可以和阿基米德、牛顿、欧拉并列。 他幼年时就表现出超人的数学天才。1795年进入格 丁根大学学习。第二年他发现正十七边形的尺规作 图法,并给出可用尺规作出的正多边形的条件,解 决了欧几里得以来悬而未决的问题。1798年转入黑 尔姆施泰特大学,1799年获博士学位。1807年以后 一直在格丁根大学任教授。 高斯的数学研究几乎遍及所有领域,在数论、 代数学、非欧几何、复变函数和微分几何等方面都 高斯(2)做出了开创性贡献。他还把数学应用于天文学。大 地测量学和磁学的研究,发明了最小二乘法原理。 高斯的数论研究总结在《算术研究》(1801)中,这 本书奠定了近代数论的基础,它不仅是数论方面划 时代之作,也是数学史上不可多得的经典著作之一。 高斯对代数学的重要贡献是证明了代数基本定理, 他的存在性证明开创了数学研究的新途径。高斯在 1816年左右就得到非欧几何的原理,发现椭圆函数 的双周期性,但这些工作在他生前都没有发表出来。 他还深入研究复变函数,建立了一些基本概念并发 现了著名的柯西积分定理。1828年高斯出版了《关 于曲面的一般研究》,全面系统阐述了空间 高斯(3) 曲面的微分几何学,并提出了内蕴曲面理论。高斯 的曲面理论后来由黎曼进一步发展。高斯一生共发 表155篇学术论文,他对待学问十分严谨,只是把 他自己认为是十分成熟的作品发表出来。其著作还 有《地磁概论》(1839)和《论与距离平方成反比的 引力和斥力的普遍定律》(1840)等。 高斯像(1) 高斯像(2) 高斯像(3) 高斯像(4) 第二章 方程求根§2.2 二分法 §2.2 二分法? 定义:如果函数f(x)在区间[a,b]上连 续,且f(a)f(b)&0,则方程在区间[a,b]上 一定有实根,[a,b]叫方程的有根区间。【注记】f(a)f(b)&0只保证有实根, 但并不保证根是 唯一, 即不保证是单根, 也不排斥f(a)f(b)&0时在[a,b] 上有根的情形。即,f(a)f(b)&0对于在[a,b]上有实根 是充分的, 但不必要;f(a)f(b)&0对于在[a,b]上有唯 一单实根不充分也不必要。如图所示: §2.2 二分法f(x)f(x)f(x)b a x abx a b x仅有一个实根有多个实根f(a)f(b)&0但有实根 §2.2 二分法? 二分法实际上是一种简单的区间求根 方法(Bracketing method),区间法的基本 思想是把方程的根限定在一个区间中, 区间长度不断缩小,当区间长度充分小 时就得到了近似解。二分法就是简单地 每次把区间从中间一分为二,区间长度 每次减半。 §2.2 二分法?二分法具体作法: 二分初始选取区间[a0,b0],使得 f(a0)f(b0)&0,然后把区间二等分,等分点 为(a0+b0)/2,如果f((a0+b0)/2 )=0,则得到 了方程的根,如果f(a0)f((a0+b0)/2 )&0, 则说明根在区间[a0, (a0+b0)/2 ], 令a1=a0 , 及b1= (a0+b0)/2, 得到更新的区间[a1,b1]; 否则, f(b0)f((a0+b0)/2 )&0 ,说明根在区 间[ (a0+b0)/2, b0 ],令a1= (a0+b0)/2, b1=b0 则得到更新区间[a1,b1] 。 §2.2 二分法不断重复这个过程直到 bi ? ai ? ? , 为给 ? 定精度,于是得到方程根 (ai ? bi ) / 2 。[a0 , b0 ] ? [a2 , b2 ] ? ... ? [ak ?1 , bk ?1 ] ? [ak , bk ]? 新区间长度总是旧区间长度的一半,二 分k次后区间假设为[ak,bk],其长度为,bk ? ak ? 1 (bk ?1 ? ak ?1 ) ? 2 ? ... ?1 2k 1 22(bk ? 2 ? ak ? 2 )(b0 ? a0 ) §2.2 二分法所以对于精度 ? ,由11111bk ? ak ?1 2k(b0 ? a0 ) ? ?得到循环次数为nnnln(b0 ? a0 ) ? ln ? k ?[ ] ln 2 §2.2 二分法? 二分法的特点: 1)收敛总能得到保证2)实施简单,仅需函数值3) 收敛速度慢 §2.2 二分法二分法算法: 给定f(x), [a0, b0], ?1 , ? 2(1) f1=f(a0), f2=f(b0)(2) if f1f2&0, 初始区间选择不合适, stop (3) if f1 ? ?1 then x* ? a0 stop. f 2 ? ?1 then x* ? b0 stop. if (4) if a0 ? b0 ? ? 2 a0 then*a0 ? b0 x ? 2stop. §2.2 二分法(5) x=(a0+b0)/2, f=f(x) if stop.f ? ?1 then x* ? x(6) If f1f&0, then b0=x, f2=f else a0=x, f1=f, endif(7) Goto (3) §2.2 二分法?定理2.1:如果区间[a,b]上的连续函数f 应用二分算法, f(a)f(b)&0,则n步后将算 出一个近似根,其误差至多为 (b ? a) / 2n?1 §2.2 二分法? 例2.1 用二分法求方程f(x)=x3+4x210=0在区间[1,1.5]上的根,使得根误差 不大于0.005,需要作几次二分?解:由f(1)=-5, f(1.5)=2.375,且当 x ?[1,1.5] 时, 知方程在所给区间内有唯一根。 ?( x) ? 3x 2 ? 8 x ? 0 f1 ?2 a ? 1, b ? 1.5, ? ? ?10 2 §2.2 二分法由 (b ? a) / 2n?1 ? ? 得到2 n? ? 1 ? 5.64 lg 2所以n=6就可以得到误差不大于0.005的 近似根。?作业:证明1-x-sinx=0在[0,1](x单位为 弧度)内有唯一根,使用二分法求误差不 大于5e-5的根要迭代多少次? §2.2 二分法【思考题 2.1】如何编程用二分法计算区 间内的N个实根(假设至少有N个实根)。 第二章 方程求根§2.3 迭代法(iteration methods) §2.3 迭代法?基本思想: 设欲求方程f(x)=0的根, 变成 ? y?x 形式 x ? ? ( x) ,或 ? y ? ? ( x) , 于是方程f(x)=0 ? 的根是直线y=x与曲线 y ? ? ( x)的交点。用数学式表示迭代公式为: xk ?1 ? ? ( xk ), k ? 0,1,...如果迭代序列{xk}极限存在,则迭代收 * 敛,并且 x ? lim xk ;如果迭代序列{xk} k ?? 极限不存在,则称迭代过程发散。 §2.3 迭代法?例2.2 用迭代法求x3-x-1=0在x0=1.5附 近的根。 解法1:将原方程写成x=x3-1。取迭代函 3 数 ? ( x) ? x ? 1 构造迭代格式xk ?1 ? x ? 1, k ? 0,1, 2,...3 k以初值x0=1.5代入计算,得到如下结果 §2.3 迭代法k xk0 1.5123… …2.375 12.396 1903.78很明显,xk发散,方法失败。 §2.3 迭代法解法2:将原方程写成 x ? 3 x ? 1 。取迭 代函数 ? ( x) ? 3 x ? 1 构造迭代格式xk ?1 ? 3 xk ? 1, k ? 0,1, 2,...取初值x0=1.5,计算得到 §2.3 迭代法kxk0123…781.5 1.357 1.330 1.325 … 1.7可见迭代8次,近似解已收敛于1.3247。 §2.3 迭代法解法1和解法2的情况可用下面两个图示 意:yy ? ? ( x)y?xyy?xy ? ? ( x)ox x0 x1 x2*xox* x2 x1x0x解法1解法2 §2.3 迭代法? 定理2.2 假设迭代函数 ? ( x) 在[a,b]上 存在一阶连续导数,且满足下列两个条件(1) 对于任意 x ?[a, b]有 a ? ? ( x) ? b(2) 存在正数L&1,使对于任意 x ?[a, b] 有 ? ?( x) ? L ? 1 §2.3 迭代法则:(a)方程 x ? ? ( x) 在[a,b]上有唯一根 (b)对于 [a,b]内任意初始值,迭代 xk ?1 ? ? ( xk ) * 均收敛于方程根 x (c)且有误差估计x ? xk ? xk ?1 ? xk /(1 ? L), x ? xk ? L x1 ? x0 /(1 ? L)* * k §2.3 迭代法? 几何解释: 条件(1)意味着初始及后续每次迭代函数 值仍在初始区间[a,b]内; 条件(2)意味着 ? ( x) 斜率小于1, 即曲线 ? ( x) 比直线y=x更平。 §2.3 迭代法? 定理证明: (a)作函数 g ( x) ? x ? ? ( x) 。g (a) ? a ? ? (a) ? 0, g (b) ? b ? ? (b) ? 0所以必有x ?[a, b] 使*g(x ) ? 0*即x* ? ? ( x* ) §2.3 迭代法再证根的唯一性。假设在区间[a,b]上存 * * x1 , x2 ,则 在两个根x ? ? ( x ), x ? ? ( x )* 1 * 1 * 2 * 2由微分中值定理及条件(2)知存在 ? ?[a, b]* * * * x1 ? x2 ? ? ( x1 ) ? ? ( x2 ) * * * * ?(? ) x1 ? x2 ? L x1 ? x2 ??由于L&0,必有 x ? x ? 0 ,即根唯一。* 1 * 2 §2.3 迭代法(b)由微分中值定理知,存在 ? ?[a, b] 使x* ? xk ? ? ( x* ) ? ? ( xk ?1 ) ? ? ?(? )( x* ? xk ?1 ) ? L x* ? xk ?1反复利用上式,有x ? xk ? L x ? xk ?1 ? L x ? xk ? 2 ? ... ? L x ? x0* * 2 * k *因为L&1,所以 k ? ? 时lim x ? xk ? lim( L x ? x0 ) ? 0 即 xk ? x* k * k ?? k ??* §2.3 迭代法(c)误差。注意到x ? xk ?1 ? L x ? xk , k ? 0,1, 2,...* *于是x ? xk ? x ? xk ?1 ? xk ?1 ? xk* *? x* ? xk ?1 ? xk ?1 ? xk ? L x* ? xk ? xk ?1 ? xk所以1 x ? xk ? xk ?1 ? xk 1? L* §2.3 迭代法把 xk ?1 ? xk ? ? ( xk ) ? ? ( xk ?1 ) ? ? ?(?k )( xk ? xk ?1 )? L xk ? xk ?1代入上式得L x ? xk ? xk ? xk ?1 , k ? 1, 2,... 1? L*2于是L L x ? xk ? xk ? xk ?1 ? xk ?1 ? xk ? 2 1? L 1? L k L ? ... ? x1 ? x0 , k ? 1, 2,3,... 1? L* §2.3 迭代法? 可以看出,L越小收敛越快,当L接近1 时,收敛很慢。因为L为常数,所以一般 用 xk ?1 ? xk ? ? 来判断迭代收敛。 §2.3 迭代法 §2.3 迭代法 §2.3 迭代法 §2.3 迭代法 §2.3 迭代法? 定义 如果存在邻域 ? : x ? x* ? ? ,迭代 过程 xk ?1 ? ? ( xk ) 对于任意初始值 x0 ? ? 收 * 敛,则称迭代过程在根 x 附近具有局部 收敛性。 §2.3 迭代法? 定理2.3:设在方程 x ? ? ( x) 根x*附近 ? ( x) 连续一阶导数,且 ? ?( x* ) ? 1 , 有 则迭代过程 xk ?1 ? ? ( xk ) 具有局部收敛性。 证明:取x*附近的一个 ? 邻域 * * I ? [x ? ? , x ? ? ] 使得 ? ?( x) ? ? ? 1利用微分中值定理有x ? ? ( x) ? ? ( x ) ? ? ( x) ? ? ?(? ) x ? x ? ? x ? x* * * * §2.3 迭代法由于 x ? x ? ?*? x ? ? ( x) ? ? x ? x ? ?? ? ?* *即 ? ( x) ? I于是取 I ? [a, b] ? [ x ? ? , x ? ? ] 满足(1)对任 ? 意 x ?[a, b] ,( x) ?[a, b] ;(2)对任意 x ?[a, b]* *? ?( x) ? ? ? 1所以,迭代过程具有局部收敛性。 §2.3 迭代法?迭代法的收敛速度 ? 定义: 当 k ? ? 时,有 ek ?1 / ek ? c , ( c ? 0 且为常数),则称迭代过程是p阶收 敛。特别地,当 p=1, 0&c&1时,称作线 性收敛;当 p&1时,称作超线性收敛; * p=2时称作平方收敛。其中 ek ? x ? xk 称 作迭代误差。p §2.3 迭代法?简单迭代法的收敛速度。 由微分中值定理有x ? xk ?1 ? ? ( x ) ? ? ( xk ) ? ? ?(? )( x ? xk )* * *?ek ?1 ekek?x ? xk ?1*x ? xk*k ??? ? ?(? )limek ?1k ??? lim ? ?(? ) ? ? ?( x* ) ? 0简单迭代法收敛速度一般是线性的。 §2.3 迭代法?例2.3 设两个迭代格式分别是线性收 敛和平方收敛的,且ek ?1 ek 1 ? , 2 ek ?1 ek21 ? , k ? 0,1, 2,..., e0 ? e0 ? 1 2若取精度 ? ? 10?16 ,试估计这两个迭代格 式各所需的迭代次数。 解:1 1 1 ek ? ek ?1 ? ... ? k e0 ? k 2 2 2 §2.3 迭代法由 得1 ek ? k ? ? 216 k? ? 53.15 lg 2所以线性迭代格式需迭代54次。2 1 1 1 2 2 1 1? 2 22 ek ? ek ?1 ? ( ek ? 2 ) ? ( ) ek ? 2 2 2 2 2 1 1? 2?...? 2k ?1 2k 1 2k ?1 ? ... ? ( ) e0 ? ( ) 2 2 §2.3 迭代法1 2k ?1 ek ? ( ) ? ? 222k ?1? 1016于是所以16 2 ?1 ? ? 53.15 lg 2kk ? 5.76故平方收敛的迭代格式只需迭代6次。 §2.3 迭代法?定理2.4:若? ( x) 在 x ? ? ( x) 的根 x 附近 有连续 p( p ? 1) 阶导数且p-1阶导数全为 零,? ( p ) ? 0 , 则 xk ?1 ? ? ( xk ) p阶局部收敛, 且有*x ? xk ?1 (x ) p ?1 ? lim ( x* ? xk ) p ? (?1) p! k ??* ( p) *如果p=1,要求 ? ?( x* ) ? 1 §2.3 迭代法证明:由定理2.3知,迭代格式局部收敛。 应用泰勒级数展开并注意到p-1导数全为 零,有?( x* )( xk ? x* ) ? ... xk ?1 ? ? ( xk ) ? ? ( x ) ? ?*? (x ) * p ?1 ? ( xk ? x ) ? ( p ? 1)! ?( p ?1) *( p)( x ? ? ( xk ? x )) * p ( xk ? x ) p!* *?x ?*?( p)( x ? ? ( xk ? x )) * p ( xk ? x ) p!* *0 ?? ?1 §2.3 迭代法于是xk ?1 ? x* ? ( p ) ( x* ? ? ( xk ? x* )) ? * p ( xk ? x ) p!或x* ? xk ?1 ? ( p ) ( x* ? ? ( xk ? x* )) ? (?1) p ?1 * p ( x ? xk ) p! §2.3 迭代法于是x ? xk ?1 ? p ?1 lim ( x* ? xk ) p ? (?1) lim k ?? k ??* ( p)( x ? ? ( xk ? x )) p!* *? (?1)? ( p ) ( x* ) p ?1p! §2.3 迭代法例2.4 判断能不能直接用简单迭代法求 解下列的方程?(1) x ? (cos x ? sin x) / 4(2) x ? 4 ? 2x解:判断方程 x ? ? ( x) 能否用简单迭代法 求根,要看在根的邻域是否有? ?( x) ? L ? 1 §2.3 迭代法对于(1),? sin x ? cos x 2 ? ?( x) ? ? ?1 4 4所以(1)可以用简单迭代法求解。 对于(2),可知f(1)&0, f(3)&0,所以[1,3]为 有根区间。?( x) ? ?2 x ln 2 ? 2 ln 2 ? 1.37 ? 1 ?所以(2)不能用简单迭代法求解。 §2.3 迭代法例2.5 证明对于任何初始值 x0 ? R ,由迭 代公式 xk ?1 ? cos xk , k ? 0,1, 2,... 所产生的 序列 ? xk , k ? 0, ?? 都收敛于 x ? cos x 的根. 证明: 记 ? ( x) ? cos x 则 ? ?( x) ? ? sin x (1)当 x ?[?1,1] , ? ( x) ? cos x ?[?1,1]? ?( x) ? ? ?(1) ? sin1 ? 1故序列 ? xk , k ? 0, ?? 收敛于 x ? cos x 的根. §2.3 迭代法(2)当对于任意 x0 ? R , x1 ? cos x0 ?[?1,1]把 x1 看作新的迭代初值,由(1)知命题得 证. §2.3 迭代法例2.6 利用迭代格式证明lim 2 ? 2 ? ... ? 2 ? 2 ? ? k ?? ??? ????k个 2证明: 考虑迭代格式x0 ? 0 ? ? ? ? xk ?1 ? 2 ? xk , k ? 0,1, 2,... ? §2.3 迭代法则x1 ? 2x2 ? 2 ? 2xk ? 2 ? 2 ? ... ? 2 ??? ???? ? ?k个 2记? ( x) ? 2 ? x1 ? ?( x) ? 2 2? x §2.3 迭代法当 x ?[0,3] 时,1.? ( x) ? [? (0), ? (3)] ? [ 2, 5] ? [0,3] 1 ? ?( x) ? ? ?(0) ? ?1 2 2 所以迭代格式产生的序列 xk 收敛于方程x ? 2? x在[0,2]内的唯一根x=2, 即 lim xk ? 2 k ?? §2.3 迭代法?作业:证明用迭代格式xk 1 xk ?1 ? ? , k ? 0,1, 2,... 2 xk 产生的序列,对于 x0 ? 1 均收敛于 2?作业:为求方程 x3 ? x 2 ? 1 ? 0 在 x0 ? 1.5 附近的一个根,将方程改写成为下列各 式, 试分析各格式收敛性.1 3 2 (1) x ? 1 ? 2 , (2) x ? 1 ? x , (3) x ? x 1 x ?1 第二章 方程求根§2.4 牛顿法(Newton method) §2.4 牛顿法【历史注记】1685年Wallis出版了一本名为《代数》 的书,描述了由牛顿发明的一种求解方程的方法。 1690年Raphson也发表了这个方法,但略有修改。 于是现在通常把这个方法叫牛顿法或NewtonRaphson法。事实上,牛顿本人在1669年就讨论了 这个方法,并以方程x3-2x-5=0 为例作了说明, Wallis在其著作中也使用了这个例子,此后每一个 学数值分析的学生都认识这个历史悠久的方程。 §2.4 牛顿法? 牛顿法的解释:使用牛顿法时总假设 函数f(x)是一阶可微的,这在几何上 f(x) 表示的图形(曲线)在每个点上都有确定 的斜率,因而有唯一切线。现在我们利 用线性化的思想,设曲线 f(x)上某一点 (x0,f(x0))有一条切线,该切线在该点的近 旁是f(x)曲线的一个很好近似(以直代曲)。 §2.4 牛顿法y( xk , f ( xk )) y ? f ( xk ) ? f ?( xk )( x ? xk )ox*xk ?1xkx §2.4 牛顿法? 从分析观点来讲,这种以直线代曲线 就意味着切线线性函数l ( x) ? f ?( x0 )( x ? x0 ) ? f ( x0 )在x0的近旁接近于函数f(x),并且在x0处 l(x)和f(x)值相等。因此,可取l(x)的零点 为f(x)零点的一个近似。 §2.4 牛顿法l(x)的零点为x1=x0-f(x0)/f’(x0)。这样,从 初始点x0出发,由上式就得到了一个新 点,重复这个过程(迭代),就能产生一 系列点f ( x1 ) x2 ? x1 ? f ?( x1 )f ( x2 ) x3 ? x2 ? f ?( x2 )......如果收敛的话,这个点列将趋向于f(x)的 一个零点。 §2.4 牛顿法?还可以用另外的方式说明牛顿法。假 设x0是对于f(x)的一个根的近似,可以想 象,如果给x0加上一个修正值h就可以成 为f(x)的精确根,即f(x+h)=0。如果f(x)的 各阶导数在x0处存在,则f(x)在x0处泰勒 展开为h f ( x0 ? h) ? f ( x0 ) ? hf ?( x0 ) ? f ??( x0 ) ? ... ? 0 22用上式很难求出h,于是考虑线性化,对 于上式进行截断 §2.4 牛顿法f ( x0 ) ? hf ?( x0 ) ? 0于是h ? ? f ( x0 ) / f ?( x0 )得到一个新的近似根,f ( x0 ) x1 ? x0 ? h ? x0 ? f ?( x0 )重复这个过程就是牛顿法。 §2.4 牛顿法?回顾前面过程,可以发现,实际上并 不需要有二阶导数,因为我们只使用了 泰勒展开的前两项,仅要求在根的一个 邻域中导数连续即可。?牛顿法是方程求根十分重要和有效的 方法,其基本思想是将非线性方程线性 化构造迭代公式。 §2.4 牛顿法?设方程f(x)=0有近似根xk,将函数f(x)在 xk处一阶泰勒展开?( xk )( x ? xk ) ? O( x ? xk ) 2 f ( x) ? f ( xk ) ? f于是方程线性化为f ( xk ) ? f ?( xk )( x ? xk ) ? 0这个线性化方程的根为f ( xk ) xk ?1 ? xk ? f ?( xk ) §2.4 牛顿法按照迭代法,其迭代函数为f ( x) ? ( x) ? x ? f ?( x)?牛顿法的收敛速度 牛顿法可以看成迭代公式f ( x) x ? ? ( x), ? ( x) ? x ? f ?( x)如果x*是f(x)=0的一个单根,则f(x*)=0, §2.4 牛顿法f ( x ) f ??( x ) ? ?( x ) ? ?0 * 2 ( f ?( x ))* * *于是由上节定理知牛顿法有二阶收敛速 度。【注记】可以证明对于重根情形,牛顿法是1阶局 部收敛。 §2.5 牛顿法下山法?迭代收敛判据有:(1) x ? xk ? ? xk*(2)(3)f ( xk ) ? ?xk ? xk ?1 ? ? xk(4)f ( xk ) ? f ( xk ?1 ) ? ? f ( xk ) §2.5 牛顿法下山法?①第k次迭代xk充分接近于方程根x*, ②|f(xk)|充分小,接近于零。这两个判据 不等价,第一个能严格保证收敛,第二 个并不能。虽然第一个判据很严格,但 是实现起来有困难,因为x*未知,第二 个判据尽管不严格,但易于实现。?后两个判据在实际中采用较多。 §2.4 牛顿法?牛顿法算法 已知函数f(x)及f’(x),给定x0, ?1 ? 0, ? 2 ? 0以及最大迭代次数N。For i ? 0,1, 2,...Nf 0 ? f ( x0 )iff 0 ? ?1 , thenx ? x0*stop §2.4 牛顿法f 0? ? f ?( x0 )f0 x ? x0 ? f 0?if x ? x0 ? ? 2 x then x ?x*stopelse x0 ? x endifendfor §2.4 牛顿法 §2.4 牛顿法?例2.7 用牛顿法求方程 x ? e 在x=0.5 附近的根。 x 解:把方程写成 xe ?1 ? 0 于是f ( x) ? xe ? 1x?xf ( xk ) xk ? e xk ?1 ? xk ? ? xk ? f ?( xk ) 1 ? xk? xk取x0=0.5,得到 §2.4 牛顿法k xk0 0.51 0.571022 0.567163 0.56714用简单迭代法 xk ?1 ? e k0 0.5 1 2? xk, x0 ? 0.53 … …得18 0.56714xk0.24 0.57970 §2.4 牛顿法?例2.8 用牛顿法求Leonardo方程x ? 2 x ? 10 x ? 20 ? 03 2的根,设x0=2,要求 xk ?1 ? xk ? 10?6解: f ( x) ? x ? 2 x ? 10 x ? 203 2f ( xk ) xk ?1 ? xk ? , k ? 0,1, 2,... f ?( xk ) §2.4 牛顿法k xk0211.6……451..?8 ?6x5 ? x4 ? 0.1?10 ? 10故x ? x5 ? 1.*【注】Leonardo在1225年研究了该方程,并得到 x=1.的结果,此时f(x)=-0.,这 在当时是非常重要的结果,但无人知道他是如何得 到的。 §2.4 牛顿法?例2.9 用牛顿法求 115 的近似值,精 度 10?6 。解:化为求x2-115=0的正根,牛顿迭代 公式为 1 115 xk ?1 ? ( xk ? ) 2 xk 取初值x0=10,经过4次迭代,得 x*=10.723805 §2.4 牛顿法【思考题 】对于牛顿迭代公式,证明xk ? xk ?1 1 f ??( x ) lim ( xk ?1 ? xk ?2 )2 ? ? 2 f ?( x* ) k ??* 第二章 方程求根§2.5 牛顿下山法 §2.5 牛顿法下山法? 牛顿法的收敛性和初始迭代值有关, 如果初始迭代值离方程根较近,则迭代 收敛性可以保证;如果初始值距离方程 根较远,则收敛过程可能发散。但是通 常情况下很难给出一个离根较近的初始 值,因为根无法预先知道。 §2.5 牛顿法下山法? 我们发现这样一个事实:通常在根附近 |f(x)|是单调下降的,即越接近根, |f(x)| 越小,所以|f(xk)|&|f(xk+1)| 。于是我们把 这个条件作为一个约束引入到迭代方程。 满足这个约束条件的算法叫下山法。 §2.5 牛顿法下山法? 具体作法:先得到牛顿法结果f ( xk ) xk ?1 ? xk ? f ?( xk )把 xk ?1与xk作加权平均得到:xk ?1 ? ? xk ?1 ? (1 ? ? ) xkf ( xk ) ? xk ?1 ? xk ? ? f ?( xk )? ? (0,1] 叫下山因子, ? ? 1时即为牛顿法。 §2.5 牛顿法下山法?可以通过选取 ? 值使得|f(xk)|&|f(xk+1)|。 通常先令 ? ? 1开始,若上式不成立则? 减 半,直到上式成立1 ? ? 1 1 ? ? ?1, , ,... n ,...? ? 2 4 2 ?如果 ? 已经很小,上式仍不成立,则下 山失败。 ? 意味着新的 ? 若不满足下山条件,则加 大上一步结果的权重。 §2.5 牛顿法下山法? 例2.10 用牛顿下山法求方程f(x)=x3-x1=0在1.5附近的根,精确到7位有效数字, 取x0=0.6。解:应用牛顿下山公式f ( xk ) xk ?1 ? xk ? ? f ?( xk ) §2.5 牛顿法下山法k0 1?1 1xk0.6 17.899980f(xk)-1.6.42101/2… 1/329.249990… 1.140624781.20070… -0.6566442… 61… 11.366814… 1.3247180.186641… 0.000000 第二章 方程求根§2.6 割线法 §2.6 割线法x ?在牛顿法中,k ?1 ? xk ? f ( xk ) / f ?( xk ) ,需 要计算f(x)的导数f’(x),有时不易求f’(x), 可以考虑用一个容易计算的近似值来代 替f’(x)f ( xk ) ? f ( xk ?1 ) f ?( xk ) ? xk ? xk ?1于是!!!xk ? xk ?1 xk ?1 ? xk ? f ( xk ) f ( xk ) ? f ( xk ?1 ) §2.6 割线法? 在开始迭代时, 必须给定两个点(x0,x1), 然后才能迭代,计算中要注意f(xk)-f(xk-1) 的值以防止溢出, 可以用f ( xk ) ? f ( xk ?1 ) ? ? f ( x0 )判断是否收敛。?作业: 写出割线法的算法。 第二章 方程求根§2.7 迭代过程加速方法 §2.3 迭代过程加速方法? 加速方法的构造 假设 ? ?( x) 在 x ? ? ( x) 根x*附近变化不大, 约为L,由微分中值定理有: * ?(? )( x* ? xk ) ? L( x* ? xk ) x ? xk ?1 ? ? 从上式整理得于是L x ? xk ?1 ? ( xk ?1 ? xk ) 1? L*L 1 xk ?1 ? xk ?1 ? ( xk ?1 ? xk ) ? (? ( xk ) ? Lxk ) 1? L 1? L §2.3 迭代过程加速方法? Aitken加速方法? 为了避免计算L,记 xk ?1 ? ? ( xk ?1 )? x ? xk ?1 ? L ( x ? xk ) 用 ? * 联立消去L * ? ? x ? xk ?1 ? L ( x ? xk ?1 )* *得?k ?1 ? xk ?1 ) 2 (x * ? x ? xk ?1 ? ? ? xk ?1 ? 2 xk ?1 ? xk由此得Aitken迭代加速公式 §2.3 迭代过程加速方法? ? xk ?1 ? ? ( xk ) (校正) ? ? ? (再校正) ? xk ?1 ? ? ( xk ?1 ) ? 2 ? ( xk ?1 ? xk ?1 ) ? xk ?1 ? xk ?1 ? ? (改进) ? xk ?1 ? 2 xk ?1 ? xk ? ? §2.3 迭代过程加速方法? 例2.11 用迭代加速公式求x ? e x=0.5附近的根。?x在解:? ( x) ? e?x?( x) ? ?e? x ?在x=0.5附近,? ?( x) ? L ? ?0.6 经过三次 迭代,得到x*=0.56714 §2.3 迭代过程加速方法? 例2.12 用Aitken方法求x3-x-1=0在 x=1.5附近的根。 解: ? ( x) ? x ? 1 用Aitken迭代公式迭代 5次,得到x*=1.324723 第二章 方程求根本章小结 小结?本章介绍了求解非线性方程的数值方 法:二分法,迭代法,牛顿法,割线法, 还学习了牛顿下山法和迭代加速方法。?二分法收敛速度慢,但总是收敛的, 牛顿法在根的附近收敛速度非常快,是 平方收敛,但收敛对初始值的选取要求 苛刻,牛顿法还要求计算一阶导数,通 常计算导数值的计算量大,有时甚至不 可能计算导数值。 小结割线法不需要计算导数,需要两个初始 点。牛顿法每次需要两个值f(xk),f’(xk), 割线法每次迭代只需计算一个函数值, 因此实际上割线法的计算效率有时比牛 顿法更高。牛顿法和割线法必须给出根 附近的初始点。 ?迭代收敛阶的概念ek ?1 / ekp?c 小结【思考题】欲求f(x)=0的根,对于下面的 每种情况,分别有哪些相应的方法数值 方法可以使用?(1)仅仅已知f(x)的求解方法。 (2)已知f(x)和f’(x)的求解方法。
赞助商链接
计算方法第2章 方程求根计算方法第2章 方程求根隐藏&& 第二章 方程求根§2.0 引言§2.1 二分法 §2.2 简单迭代法 §2.3 牛顿(Newton)法§2.4 其它求根方法...2012 ~ 2013 学年第 2 学期 计算方法 教案 计 81,开课时间:2012-02 第十章 非线性方程求根知识点:求根的基本概念,对分法,迭代法,误差,编程停机...实验目的(1)深入理解方程求根的迭代法的设计思想,学会利用校正技术和松弛技术解决某 些实际的非线性方程问题,比较这些方法解题的不同之处。 (2)熟悉 Matlab 编程...2 实验内容用牛顿法和割线法求下列方程的根 x^2-e^x=0; x*e^x-1=0;...(&#39;Newmethod failed&#39;) 计算方法与实习实验报告 break end if(abs(x1-x0)&...数值计算方法 小结: 小结:非线性方程求根的数值计算方法, 首先要确定根的分布区间, 并且具有局部收敛性的迭 代格式其初始区间要尽可能的小。运用各种数值求解方法...利用二分法对方程求根 计算方法大作业计算方法大作业隐藏&& 利用二分法对方程求根一算法:给定区间[a,b],并设 f(a)与 f(b)符号相反,取ε 为根的容许误差,δ...计算方法实验报告5-2-开方法求根_数学_自然科学_专业资料。计算方法实验报告 计算机与信息工程科学院 计算方法 实验报告(6)实验名称 姓名 李鹏飞 学号 方程求根 ...cout && &选择求解方程根的方法:& && cout && &1.二分法求解& && cout && &2.牛顿迭代法求解& && 5 计算方法与实习实验报告 cou...对于每一种方法,显示你的 (a)近似根,(b)初始猜测(或间隔),(C)迭代次数,(D)停止准则,(E)你获得 的收敛速度。 【2】计算求解以下方程的牛顿法的前几个...本文主要介绍以下两种方程求根问题的计算机计算方法(算法) 。(1) 牛顿法 (2) 二分法 二、方程求根问题对于一个一元二次方程,ax + bx + c = 0 ,我们通常...
All rights reserved Powered by
www.tceic.com
copyright &copyright 。文档资料库内容来自网络,如有侵犯请联系客服。

我要回帖

更多关于 c语言计算sinx 的文章

 

随机推荐