割线法

割线法求解方程\(f(x)=0\)的根需要两个接近真实根\(x^\*\)的初值\(x_0\)和\(x_1\),于是得到函数\(f(x)\)上两个点\((x_0,y_0=f(x_0))\)和\((x_1,y_1=f(x_1))\),连接这两点得到一条直线(割线):

\begin{equation*}
y-y_1=\frac{y_1-y_0}{x_1-x_0}(x-x_1)
\end{equation*}

由于我们要求解\(f(x)=0\),因此设\(y=0\),由上式解出\(x\),作为下次迭代的初值。这个过程一直进行下去,有如下迭代关系:

\begin{equation}
x_{i+1}=x_i-\frac{x_i-x_{i-1}}{y_i-y_{i-1}}y_i
\tag{6.1}\label{6.1}
\end{equation}

其中\(y_i=f(x_i)\)。以上过程如图6.1所示。



图6.1 割线法求根

割线法需要两个初值,但是不需要求函数的导数。割线法程序如下:

function x = mysecant (f,x0 ,x1 ,n)
% Solves f(x) = 0 by doing n steps of the secant method
% starting with x0 and x1.
% Inputs : f -- the function , input as an inline function
% x0 -- starting guess , a number
% x1 -- second starting geuss
% n -- the number of steps to do
% Output : x -- the approximate solution
y0 = f(x0 );
y1 = f(x1 );
for i = 1:n % Do n times
x = x1 - (x1 -x0 )* y1 /(y1 -y0) % secant formula .
y=f(x) % y value at the new approximate solution .
% Move numbers to get ready for the next step
x0=x1;
y0=y1;
x1=x;
y1=y;
end

盈不足术

盈不足术是割线法和二分法的综合。如二分法,我们先选定两个初始点\(a\)和\(b\),且保证\(f(a)\)和\(f(b)\)异号。然后我们根据割线法,得到新的迭代结果,

\begin{equation*}
x =b-\frac{b-a}{f(b)-f(a)}f(b)
\end{equation*}

然后我们按照二分法,判断\(f(x)\)的符号,如果\(f(x)\)与\(f(a)\)同号,则把\(x\)设为新的\(a\),否则,把\(x\)设为新的\(b\)。注意到,一般情况下,\(a\)和\(b\)其中之一逐渐趋近于\(x^\*\),而不大可能二者共同趋近于\(x^\*\),因此不大会\(b-a\nrightarrow 0\)。比如,图6.1中的函数,\(a\rightarrow x^\*\),而\(b\nrightarrow x^\*\)。

收敛性

如果我们选的初值\(x_0\)比较好,牛顿法会很快收敛到\(x^\*\)。割线法要比牛顿法慢一些,盈不足术会更慢。二分法是收敛最慢的。

如果我们选的初值或初始区间不够好,割线法——如牛顿法一样——可能会不收敛。盈不足术——如二分法一样——总是收敛的,因为盈不足术会一直保证根在一个确定的区间内。

模拟和实验

尽管牛顿法最快,但有些情况下,牛顿法不太好用,甚至根本不能用。比如难以导出\(f'(x)\)表达式的情况。在科学和工程中的一些问题中,甚至连\(f(x)\)的表达式都没有,\(f(x)\)是实验和模拟的结果时就是这样的情况。在这样的情况下,割线法一般是最佳选择。

练习

6.1 用纸和计算器对方程\(f(x)=x^3-4=0\)应用三次盈不足术迭代,初始区间\([1,3]\),计算各次迭代结果的误差和相对误差,并与练习3.3和5.2结果做比较。

6.2 写出函数程序myregfalsi,实现盈不足术,并使残量绝对值小于给定公差,并将程序解方程\(f(x)=2x^3+3x-1=0\),初始区间为\([0,1]\),公差为\(10^{-8}\)。程序需要迭代多少步?与练习5.1结果做比较。

Todd's Matlab讲义第6讲:割线法的更多相关文章

  1. Todd's Matlab讲义第5讲:二分法和找根

    二分法和if ... else ... end 语句 先回顾一下二分法.要求方程\(f(x)=0\)的根.假设\(c = f(a) < 0\)和\(d = f(b) > 0\),如果\(f ...

  2. Todd's Matlab讲义第4讲:控制误差和条件语句

    误差和残量 数值求解方程\(f(x)=0\)的根,有多种方法测算结果的近似程度.最直接的方法是计算误差.第\(n\)步迭代结果与真值\(x^\*\)的差即为第\(n\)步迭代的误差: \begin{e ...

  3. Todd's Matlab讲义第3讲:牛顿法和for循环

    方程数值求解 下面几讲,我们将聚集如下方程的解法: \begin{equation} f(x)=0 \tag{3.1}\label{3.1} \end{equation} 在微积分课程中,我们知道,许 ...

  4. Todd's Matlab讲义第2讲:Matlab 编程

    Matlab也可以编程,可存为以.m为后缀的文件,称为M文件.M文件有两种:函数和脚本. 函数程序 点击新建图标,在打开的窗口里输入如下内容: function y = myfunc (x) y = ...

  5. Todd's Matlab讲义第1讲:向量,函数和作图

    向量 Matlab 中最基本的对象是矩阵,向量是特殊的矩阵.行向量是\(1\times n\)矩阵,列向量是\(m\times 1\)矩阵.输入如下行向量: >> v=[0 1 2 3] ...

  6. 基于MATLAB的GUI(Graphical User Interface)音频实时显示设计

    摘要:本文章的设计主要讲基于matlab的gui音频实时显示设计,此次设计的gui相当于一个简洁的音乐播放器,界面只有”录音“和”播放“两个控件,哈哈,够简洁吧.通过”录音“按钮可以实现声音从电脑的声 ...

  7. Bag of Words/Bag of Features的Matlab源码发布

    2010年11月19日 ⁄ 技术, 科研 ⁄ 共 1296字 ⁄ 评论数 26 ⁄ 被围观 4,150 阅读+ 由于自己以前发过一篇文章讲bow特征的matlab代码的优化的<Bag-Of-Wo ...

  8. Coursera台大机器学习技法课程笔记03-Kernel Support Vector Machine

    这一节讲的是核化的SVM,Andrew Ng的那篇讲义也讲过,讲的也不错. 首先讲的是kernel trick,为了简化将低维特征映射高维特征后的计算,使用了核技巧.讲义中还讲了核函数的判定,即什么样 ...

  9. 转自 z55250825 的几篇关于FFT的博文(一)

        关于FFT,咱们都会迫不及待地 @  .....(大雾)(貌似被玩坏了...)    .....0.0学习FFT前先orz FFT君.         首先先是更详细的链接(手写版题解点赞0v ...

随机推荐

  1. [NOIP2014] 提高组 洛谷P1941 飞扬的小鸟

    题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便 ...

  2. 雷赛dmc2410控制卡,驱动器 光栅 加电机

    一般驱动器为9pin接口:(1:VCC 2:限位近端 3:限位远端 4:GND):电源是供给限位器的 ,5:A+ 6:A- 7:B+ 8:B- 注意驱动器的电流大小和细分设置,电流一般1A左右 电流过 ...

  3. SQL数据操作和查询

    1.Oracle中可以把查询的结果根据结果集中的表结构和数据形成一张新表. CREATE TABLE 表名 AS SELECT语句,例如: CREATE TABLE INFOS1 AS SELECT  ...

  4. AngularJs $cacheFactory 缓存服务

    可能之前的api写的有些枯燥吧,因为不烧脑,不需要很多逻辑思维来做处理,那么之后的文章会有趣很多,慢慢的开始烧脑了,准备好大量脑细胞的死亡吧~   先来篇简单的缓存服务. 本文将api文档里的$cac ...

  5. django-redis和redis-py

    项目之前使用memcache做缓存,现在转到redis,改写几个语句的事情,然后就这种我把django-redis和py-redis搞混了,记录一下. django默认使用memcache做缓存,这里 ...

  6. Linux DHCP通过OPTION43为H3C的AP下发AC地址

    对于DHCP服务,可以在很多平台上进行设置.那么这里我们就主要讲解一下在Linux DHCP服务器上通过option 43实现H3C的AP自动联系AC注册的相关内容.原来的DHCP Server是放在 ...

  7. Win7系统开放C盘下文件夹Everyone权限

    安装软件时遇到这样的情况:我就是管理员权限啊,怎么会安装有问题呢? 后来知道,用户名即使分配了你是管理员权限,有些文件还是有限制的(特别是C盘) 昨天遇到一个问题,有个文件夹里的隐藏文件就是无法显示, ...

  8. css011 表格和表单的格式化

    css011 表格和表单的格式化 一.    让表格专司其职    Html中创建一个三行三列的表格 <table> <caption align="bottom" ...

  9. Eclipse中修改Web项目的URL访问路径

    背景 访问路径,也就是指在浏览器中访问该web系统时的根路径,比如http://localhost:8080/xxxx/index.jsp  这里的xxxx,也就是request.getContext ...

  10. Apple Instruments

    启动Xcode,选择Xcode > Open Developer Tool > Instruments. 如果无法选择当前设备,请尝试重启设备. 将设备设置为Use for develop ...