第二章 非线性方程(组)的数值解法的 MATLAB 程序
9.
高等教育出版社 教育电子音像出版社 作者:任玉杰
本章主要介绍方程根的有关概念,求方程根的步骤,确定根的初始近似值的方法(作图
法,逐步搜索法等),求根的方法(二分法,迭代法,牛顿法,割线法,米勒(Müller)法
和迭代法的加速等)及其 MATLAB 程序,求解非线性方程组的方法及其 MATLAB 程序.
2.1
2.1 2.1
2.1 方程
方程方程
方程(
((
(组
组组
组)
))
)的根及其
的根及其的根及其
的根及其 MATLAB
MATLABMATLAB
MATLAB 命令
命令命令
命令
2.1.2
2.1.2 2.1.2
2.1.2 求解方程
求解方程求解方程
求解方程(
((
(组
组组
组)
))
)的
的的
的 solve 命令
命令命令
命令
求方程f(x)=q(x)的根可以用MATLAB命令:
>> x=solve('方程f(x)=q(x)',’待求符号变量x’)
求方程组f
i
(x
1
,…,x
n
)=q
i
(x
1
,…,x
n
) (i=1,2,…,n)的根可以用MATLAB命令:
>>E1=sym('方程f1(x1,…,xn)=q1(x1,…,xn)');
…………………………………………………….
En=sym('方程fn(x1,…,xn)=qn(x1,…,xn)');
[x1,x2,…,xn]=solve(E1,E2,…,En, x1,…,xn)
2.1.3
2.1.3 2.1.3
2.1.3 求解
求解求解
求解多项式
多项式多项式
多项式方程
方程方程
方程(
((
(组
组组
组)
))
)的
的的
的roots命令
命令命令
命令
如果
)(xf
为多项式,则可分别用如下命令求方程
0)(
=
xf
的根,或求导数
)(
'
xf
(见
表 2-1).
表 2-1 求解多项式方程(组)的 roots 命令
命 令 功 能
xk =roots(fa)
输入多项式
)(xf
的系数 fa(按降幂排列),运行后输
出 xk 为
0)(
=
xf
的全部根.
dfa=polyder(fa)
输入多项式
)(xf
的系数 fa(按降幂排列),运行后输
出 dfa 为多项式
)(xf
的导数
)(
'
xf
的系数.
dfx=poly2sym(dfa)
输入多项式
)(xf
的导数
)(
'
xf
的系数 dfa(按降幂排
列),运行后输出 dfx 为多项式
)(xf
的导数
)(
'
xf
.
2.1.4
2.1.4 2.1.4
2.1.4
求解方程
求解方程求解方程
求解方程(
((
(组
组组
组)
))
)的
的的
的fsolve命令
命令命令
命令
如果非线性方程(组)是多项式形式,求这样方程(组)的数值解可以直接调用上面已
经介绍过的roots命令.如果非线性方程(组)是含有超越函数,则无法使用roots命令,需要
调用MATLAB系统中提供的另一个程序fsolve来求解.当然,程序fsolve也可以用于多项式方程
(组),但是它的计算量明显比roots命令的大.
fsolve命令使用最小二乘法(least squares method)解非线性方程(组)
(F
X
=
)
0
的数值解,其中 X 和 F(X)可以是向量或矩阵.此种方法需要尝试着输入解 X 的初始值(向
量或矩阵)X
0
,即使程序中的迭代序列收敛,也不一定收敛到
(F
X
=
)
0 的根(见例 2.1.8).
fsolve 的调用格式
的调用格式的调用格式
的调用格式: X=fsolve(F,X0)
第二章
第二章第二章
第二章
非线性方程
非线性方程非线性方程
非线性方程(
((
(组
组组
组)
))
)的数值解法
的数值解法的数值解法
的数值解法
- 1
- 2
- 3
前往页