实验三 求代数方程的近似根(解)
求代数方程的根是最常见的数学问题之一(这里称为代数方程,主要是想和后面的微分方程区别开.为简明起见,在本实验的以下叙述中,把代数方程简称为方程),当是一次多项式时,称为线性方程,否则称之为非线性方程.
当是非线性方程时,由于的多样性,尚无一般的解析解法可使用,但如果对任意的精度要求,能求出方程的近似根,则可以认为求根的计算问题已经解决,至少能满足实际要求.
本实验介绍一些求方程实根的近似值的有效方法,要求在使用这些方法前先确定求根区间,或给出某根的近似值.在实际问题抽象出的数学模型中,可以根据物理背景确定;也可根据的草图等方法确定,还可用对分法、迭代法以及牛顿切线法大致确定根的分布情况.
通过本实验希望你能:
1.了解对分法、迭代法、牛顿切线法求方程近似根的基本过程;
2.求代数方程(组)的解.
1.abs( ):求绝对值函数.
2.diff(f):对独立变量求微分,f为符号表达式.
diff(f, 'a'):对变量a求微分,f为符号表达式.
diff(f, 'a', n):对变量a求n次微分,f为符号表达式.
例如:
syms x t
diff(sin(x^2)*t^6, 't', 6)
ans=
720*sin(x^2)
3.roots([c(1), c(2),…, c(n+1)]):求解多项式的所有根.例如:
求解:.
p = [1 -6 -72 -27];
r = roots(p)
r =
12.1229
-5.7345
-0.3884
4.solve('表达式'):求表达式的解.
solve('2*sin(x)=1')
ans =
1/6*pi
5.linsolve(A, b):求线性方程组A*x=b的解.
例如:
A= [9 0; -1 8]; b=[1; 2];
linsolve(A, b)
ans=
[ 1/9]
[19/72]
6.fzero(fun, x0):在x0附近求fun的解.其中fun为一个定义的函数,用“@函数名”方式进行调用.
例如:
fzero(@sin, 3)
ans=
3.1416
7.subs(f, 'x ', a):将a的值赋给符号表达式f中的x,并计算出值.
例如:
subs('x^2 ', 'x ', 2)
ans = 4
首先,我们介绍几种与求根有关的方法:
1.对分法
对分法思想:将区域不断对分,判断根在某个分段内,再对该段对分,依此类推,直到满足精度为止.对分法适用于求有根区间内的单实根或奇重实根.
设在上连续,,即,或,.则根据连续函数的介值定理,在内至少存在一点,使.
下面的方法可以求出该根:
(1)令,计算;
(2)若,则是的根,停止计算,输出结果.
若,则令,,若,则令,;.
……,有