Matlab Math 零点和根 Cleve morler著 陈文斌(wbchen@fudan.edu.cn) 复旦大学2002
Matlab Math Cleve Morler著 陈文斌(wbchen@fudan.edu.cn) 复旦大学2002 零点和根
Bisection 我们知道√2在1和2之间,先试x=32,因为x的平 方大于2,那么√2在[,321 3.513.27 24816”32”64 ATLAB M=2a=1b=3k=0 else while b-aeps a=X X=(a+b)/2; end ifx>m k=k+1; b=x end
Bisection 我们知道 在1和2之间,先试x=3/2,因为x的平 方大于2,那么 在[1,3/2]… 2 2 ,... 64 27 ,1 32 13 ,1 16 5 ,1 8 3 ,1 4 1 ,1 2 1 1 M=2;a=1;b=3;k=0; while b-a>eps x=(a+b) /2; if x^2 >M b=x else a = x end k=k+1; end
Interval bisection 观察一下ab变化的情况: 程序结束需要多少次? 最后ab是多少? 用 format hex表示呢? 为什么是这样的?
Interval bisection 观察一下a,b变化的情况: 程序结束需要多少次? 最后a,b是多少? 用format hex表示呢? 为什么是这样的?
Interval bisection--f(x) Find a very small interval, perhaps two successive floating point numbers on which the function change sign MATLAB else while abs(b-a >eps*abs(b)a=x X=(a+b)/2 end if sign(f(x)==sign(f(b))k=k+1 b=x en f= inline(x^2-2");a=1;b-2: 计算sqrt(2)
Interval bisection--f(x) Find a very small interval, perhaps two 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('x^2-2'); a=1; b=2; 计算sqrt(2)
Interval bisection 分法是慢的,用上面的代码,对任何 函数她都需要运行52步,但是她是完全 可靠的。这与我们后面介绍的方法不同
Interval bisection 二分法是慢的,用上面的代码,对任何 函数她都需要运行52步,但是她是完全 可靠的。这与我们后面介绍的方法不同
Newton's Method 对于求(x)=0的根, Newton法要求过y=f(x)上任一点 的切线,并求切线与x轴的交。迭代过程是 n+1=X一 MAtLaB while abs(x-xprev ) >eps*abs(x) Prev=X, x=X-f(x)/fprime(x) end
Newton's Method 对于求f(x) = 0的根,Newton法要求过y=f(x)上任一点 的切线,并求切线与x-轴的交。迭代过程是 '( ) ( ) 1 n n n n f x f x x x k=0; while abs(x-xprev)>eps*abs(x) xprev = x; x = x-f(x)/fprime(x) end
Newton's Method 对于平方根问题, Newton法是优雅而有效的 f(x)=x-M 零点就是√M Newton法 M M x+ n+ 2x MATLAB 150000000000000 11.41666666667 while abs(x-xprev ) >eps abs(x) 141421568627451 f」 6步 Prev=X 141421356237469 X=0.5*(X+M/x) 141421356237309 end 141421356237309
Newton's Method 对于平方根问题,Newton法是优雅而有效的 f x x M 2 ( ) 零点就是 M n n n n n n x M x x x M x x 2 1 2 2 1 Newton法 k=0; while abs(x-xprev)>eps*abs(x) xprev = x; x = 0.5*(x+M/x) end 1.50000000000000 1.41666666666667 1.41421568627451 1.41421356237469 1.41421356237309 1.41421356237309 6步
Newton's Method 缺点: 函数〔x)必须是光滑的,要容易计算导数初始猜想要靠近 零点 优点:收敛速度快,二次收敛。如果函数的一阶和二阶导数 连续,且初始值靠近零点,我们可以证明 2∫"(x I=O(en
Newton's Method 缺点: 函数f(x)必须是光滑的,要容易计算导数;初始猜想要靠近 零点。 优点:收敛速度快,二次收敛。如果函数的一阶和二阶导数 连续,且初始值靠近零点,我们可以证明 2 1 '( ) ' '( ) 2 1 n n n e f x f e ( ) 2 n 1 n e O e
Newton's Method 下面构造一个让 Newton方法无限进行而不收敛的例子 f(n) Xn+I-a o-d X一a d-a f(x) f(x)2(x-a) f(x)= signi(x-a)√x-a Newton方法不收敛,原因?
Newton's Method '( ) ( ) 1 n n n n f x f x x x 下面构造一个让Newton方法无限进行而不收敛的例子 ( ) 1 x a x a n n ( ) '( ) ( ) x a f x f x x a 2( ) 1 ( ) '( ) f x x a f x f (x) sign(x a) | x a | Newton方法不收敛,原因?
sign(x-2 ) sqrt(abs(x-2)) 1.5 0.5 0.5 15 X
0 0.5 1 1.5 2 2.5 3 3.5 4 -1.5 -1 -0.5 0 0.5 1 1.5 x sign(x-2) sqrt(abs(x-2))