复旦大学Matlab课件—— (1)_第1页
复旦大学Matlab课件—— (1)_第2页
复旦大学Matlab课件—— (1)_第3页
复旦大学Matlab课件—— (1)_第4页
复旦大学Matlab课件—— (1)_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Matlab MathCleve Morler著陈文斌()零点和根1Bisection 我们知道 在1和2之间,先试x=3/2,因为x的平方大于2,那么 在1,3/2 M=2;a=1;b=3;k=0; while b-aeps x=(a+b) /2; if x2 M b=x else a = x end k=k+1;end2Interval bisection观察一下a,b变化的情况: 程序结束需要多少次? 最后a,b是多少? 用format hex表示呢?为什么是这样的?3Interval bisectionf(x) Find a very small interval, perhaps t

2、wo successive floating point numbers, on which the function change sign.k=0; while abs(b-a)eps*abs(b) x=(a+b) /2; if sign(f(x)=sign(f(b) b=x; else a = x; end k = k+1; end f = inline(x2-2); a=1; b=2;计算sqrt(2)4Interval bisection 二分法是慢的,用上面的代码,对任何函数她都需要运行52步,但是她是完全可靠的。这与我们后面介绍的方法不同。5Newtons Method 对于求f

3、(x) = 0的根,Newton法要求过y=f(x)上任一点的切线,并求切线与x-轴的交。迭代过程是k=0; while abs(x-xprev)eps*abs(x) xprev = x; x = x-f(x)/fprime(x)end6Newtons Method对于平方根问题,Newton法是优雅而有效的Newton法k=0; while abs(x-xprev)eps*abs(x) xprev = x; x = 0.5*(x+M/x)end 1.500 1.41666666666667 1.41421568627451 1.41421356237469 1.41421356237309

4、1.414213562373096步7Newtons Method缺点: 函数f(x)必须是光滑的,要容易计算导数;初始猜想要靠近零点。优点:收敛速度快,二次收敛。如果函数的一阶和二阶导数连续,且初始值靠近零点,我们可以证明8Newtons Method下面构造一个让Newton方法无限进行而不收敛的例子Newton方法不收敛,原因?910Secant Method用有限差分来代替导数的计算k=0; while abs(b-a)eps*abs(b) c=a;a=b; b=b+(b-c)/(f(c)/f(b)-1); k=k+1;end 1.33333333333333 1.400 1.4146

5、3414634146 1.41421143847487 1.41421356205732 1.41421356237310 1.414213562373107步11Secant Method如果f(x)的一阶导数和二阶导数连续Superline convergence即每作一次迭代有效位将增加1.6位再考虑一下 12Inverse Quadratic InterpolationSecant方法用前两个点来确定第三个点,能不能用三个点呢?IQIk=0; while abs(c-b)eps*abs(c) x=polyinterp(f(a),f(b),f(c),a,b,c,0); a=b;b=c;c

6、=x; k=k+1;end1.666666666666671.451.4061.414213788335491.414213562373331.414213562373101.41421356237309a,b,c=0,1,213Inverse Quadratic Interpolation a,b,c = -2,0,2 a,b,c = -2.00001,0,1.99999看一下下面两组数据,IQI方法会发生什么情况?14Zeroin Start with a and b so that f(a) and f(b) have opposite signs Use a secant step t

7、o give c between a and bRepeat the following steps until |b-a|eps|b| or f(b)=0 Arrange a,b and c so that f(a) and f(b) have opposite signs |f(b)|=|f(a)| c is the previous value of b If c=a, consider an IQI stepIf c=a, consider a secant stopIf the IQI or secant step is in the interval a,b,take it If

8、the step is not in the interval, use bisection.15fzerotxMatlab中zeroin的算法实现是fzero. x = fzero(FUN,x0) %x0可以是数,或区间 x = fzero(besselj(0,x),0) %? x = fzero(besselj(0,x),0,pi) x = fzerotx(besselj(0,x),0,pi)16 ezplot(besselj(0,x),-30,30)17函数调用 字符串表达式 cos(pi*t) besselj(0,x) Inline函数Function handle bessj0 z = fzerotx(bessj0,0,pi) function y=bessj0(x) y=besselj(0,x)符号表示 syms x F=besselj(0,x) z=f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论