- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验 5 非线性方程求解
实验目的:
1.熟练掌握非线性方程求解的 MATLAB 实现;
2 .会用 MATLAB 解决一些非线性方程问题。
实验内容:
由 《微积分》的零点定理知,如果函数 y f (x) 在闭区间 a,b上连续,且满足
f (a)f (b) 0 ,则方程f (x) 0 在开区间a,b内至少存在一个零点.此定理给出了零点存
在的充分条件,但没给出零点的个数,也没给出求解方法,这在解决一些实际问题时显然是
不够的,本节主要解决这两个问题.
5.1 非线性方程简介
当f (x) 为非线性函数时,方程
f (x) 0 (5.1)
称为非线性方程.当f (x) 为n( 2) 次代数多项式时,(5.1)式称为n次代数方程,即
n n1
a x a x a x a 0
n n1 1 0
由代数基本定理知,n次代数方程一定有n个根 (包括复根),但当 n 5 时便没有现成的
求解公式可用;当f (x) 为包含三角函数、指数函数或对数函数的超越函数时,(5.1)式称
为超越方程,如
x
x
e sin( ) 0
2
此类方程不仅很难求得解析解,有时连解的存在性,解的个数也难以判断.
求解非线性方程的常用方法为 Bolzano 二分法和 Newton-Raphson 迭代法,下面介绍这
些算法的 MATLAB 软件实现。
5.2 非线性方程 (组)的MATLAB 求解
MATLAB 提供了几个求解非线性方程 (组)的函数,其使用方法分别为:
(1)[x,fval,exitflag]=fzero(f ,x0,options) 用于求解非线性方程,输入量 f
为方程左端的函数;x0 是迭代初值或有根区间[a,b],此时要求 f 在 a,b 两点的函数值异
号;options 为控制算法的参数向量,可省略;输出量 x 为问题的解;fval 为函数 f 在解 x
处的值,可省略;exitflag用来描述程序的运行情况,若大于 0,则表示迭代收敛于解x.fzero
求得的结果不一定是函数 f 的零根,而只是函数值符号发生改变的点,此点有可能是间断点.
(2)x=roots(p) 用于求解多项式方程的零根,其中 p 为多项式的系数 (按降幂排列).
输出量 x 为方程的零根.该指令每次只能求解一个一元多项式方程的零根,不能用于求多项
式方程组的解.
(3)[x,fval,exitflag]=fsolve(f,x0,options)用于求解非线性方程组,输入量
和输出量可参考 fzero.
例 1 在无阻尼强迫振荡的研究中会经常遇到函数h(x) xsin x .试求一点x 0,2,
满足h(x) 1.
解:问题即为求非线性方程
xsin x 1 0 x [0,2]
的零根,建立 M 函数文件 h.m 如下:
function y=h(x)
y=x*sin(x)- 1;
在 MATLAB 指令窗中输入下面指令
x0=[0,2];[x,fval,exitflag]=fzero(h,x0)
运行得结果为:x =1.1142,fval =2.2204e-016,exitflag =1,即所求非线性方程的解为
1.1142.
上述方法主要用来求单根,对于多根情形,一般用图形放大法进行求解,即先根据曲线
的图形大体确定出根的数量及所在范围,然后再进一步确定
文档评论(0)