割线法

割线法求解方程\(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. iOS 采用个推时,未收到推送消息,测试DeviceToken无效

    一般在调试时我们使用任何boundleID,即为*的profile文件 但在使用推送后进行调试,除了创建和上传APN证书,还需要重新生成 (1)特定程序的BoundleID (2)包含Push Not ...

  2. vi命令大全

    参考 http://www.cnblogs.com/88999660/articles/1581524.html 最近要用到linux和shell脚本,所以多学习下,反正没什么坏处 在linux里面, ...

  3. 导入.pch文件

    Xcode5中创建一个工程的时候,系统会自动创建一个以以工程名为名字的pch(Precompile Prefix Header)文件,开发的过程中可以将广泛使用的头文件以及宏包含在该文件下,编译器就会 ...

  4. Logistic Regression分类器

    1. 两类Logistic回归 Logistic回归是一种非常高效的分类器.它不仅可以预测样本的类别,还可以计算出分类的概率信息. 不妨设有$n$个训练样本$\{x_1, ..., x_n\}$,$x ...

  5. uC/OS-II内核的服务文件

    /*************************************************************************************************** ...

  6. VMWare12虚拟CentOS7共享文件的过程

    环境: 宿主机:Win10企业版,虚拟机:VMware pro12.5,虚拟OS:CentOS7.0 过程: VMware菜单:虚拟机->设置->选项,选中宿主机要共享的磁盘或目录,点击确 ...

  7. DataView

    表示用于排序.筛选.搜索.编辑和导航的 DataTable 的可绑定数据的自定义视图. DataView的功能类似于数据库的视图,他是数据源DataTable的封装对象,可以对数据源进行排序.搜索.过 ...

  8. 转移大于2m的pdf文件到另外一个文件夹

    转移大于2m的pdf文件到另外一个文件夹 remove_moret2M_pdfs.py # -*- coding: utf-8 -*- """ Created on Mo ...

  9. MySQL数据库常用函数

    一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 不区分大小写 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等 ...

  10. Nginx实现简易泛域名CDN节点

    如何使用Nginx泛域名解析+反向代理+静态资源缓存呢? 安装nginx,安装过程不再赘述,记得带上pcre.gzip.sub.status这几个模块,另外如果想开通在线清理缓存功能,需要安装ngx_ ...