2-MATLAB2014a多项式计算

  • 格式:ppt
  • 大小:1.07 MB
  • 文档页数:35

下载文档原格式

  / 35
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

- 1.4167 x - 1.5737
- 0.6653 x 1.1644
1.3320 x 0.4093
- 1.25
- 1.25x3
- 0.75x2 0.5x x3 - 2x - 0.75
1.75
非线性方程的根
Matlab 非线性方程的数值求解 fzero(f,x0):求方程 f=0 在 x0 附近的根。
插值
插值法又称“内插法”,是利用函数f (x)在某区间中已知 的若干点的函数值,作出适当的特定函数,在区间的其他 点上用这特定函数的值作为函数f (x)的近似值,这种方法 称为插值法。
➢ 多项式除法运算:[k,r]=deconv(p,q)
其中 k 返回的是多项式 p 除以 q 的商,r 是余式。
[k,r]=deconv(p,q) <==> p=conv(q,k)+r
例2 计算多项式x3 2x2 5和x2 x 2的商,并验算。
p=[1 2 0 -5]; q=[1 -1 2]; [k,r]=deconv(p,q) conv(k,q)+r
➢例:p1 2x3 x2 3 p2 2x 1
p1 p2 2x3 x2 2x 4
[2, 1, 0, 3] [ 0, 0, 2,1] [2, 1, 2, 4]
➢ 多项式乘法运算: k=conv(p,q)
例1 计算多项式 2x3 x2 3 和 2x 1 的乘积
p=[2,-1,0,3]; q=[2,1]; k=conv(p,q)
多项式计算
❖ Matlab多项式运算
在 Matlab 中,n 次多项式是用一个长度为 n+1 的向量来表示,缺少的幂次项系数为0。例如:
p(x) an xn an1xn1 a1x a0
在 Matlab中表示为相应的向量:
[an ,an1,,a1,a0 ]
例: 2x3 x2 3
[2, 1, 0, 3]
例:已知 p(x) 2x3 x2 3 ,求p(x)的零点。
p=[2,-1,0,3]; x=roots(p)
有理多项式
• 有理多项式的展开
5x 3 3x 2 - 2x 7 - 4x 3 8x 3
num=[5,3,-2,7] den=[-4,0,8,3] [r,p,k]=residue(num,den)
多项式的导数:polyder
k=polyder(p):多项式 p 的导数; k=polyder(p,q): p*q 的导数;
[k,d]=polyder(p,q) p/q 的导数,k是分子,d是分母。
例3 已知 p(x) 2x3 x2 3 q(x) 2x 1 求 p',( p q)',( p / q)'
非线性方程组求解
[x,f,h]=fsolve(‘F’,X0) F为字符串表示的函数; x返回F在x0附近的一个零点,f返回F在x的
函数值;h返回值如果大于0,说明计算结果 可靠。
非线性方程组求解
例 解方程组
4x1
x1
x2 4x 2
1 e x1
10
1 8
x
2 1
1 0
[x,y,h]=fsolve('[4*x(1)-x(2)+exp(x(1))/10-1,x(1)+4*x(2)+x(1).^2/8]',[0,0])
方程可能有多个根,但 fzero 只给出距离 x0 最近的一个 x0 是一个标量,不能缺省 fzero 先找出一个包含 x0 的区间,使得 f 在这个区间 两个端点上的函数值异号,然后再在这个区间内寻找方程 f=0 的根;如果找不到这样的区间,则返回 NaN。 由于 fzero 是根据函数是否穿越横轴来决定零点,因 此它无法确定函数曲线仅触及横轴但不穿越的零点,如 |sin(x)| 的所有零点。
例4 已知p(x ) 2x 3 x 2 3 ,分别取 x=2和一个22矩阵, 求 p(x) 在 x 处的值
p=[2,-1,0,3]; x=2; polyval(p,x) x=[-1, 2;-2,1]; polyval(p,x)
多项式求根
x=roots(p):若p是n次多项式,则输出x为包 含p=0的n个根的n维向量。
x
1.3320 0.4093
- 1.25
• 有理多项式展开的逆运算
- 1.4167 x - 1.5737
- 0.6653 x 1.1644
x
1.3320 0.4093
-
1.25
? ?
[n,d]=residue(r,p,k)
n= -1.2500 -0.7500 0.5000 -1.7500
d= 1.0000 -0.0000 -2.0000 -0.7500
num = 5 3 -2 7
den = -4 0 8 3
r= -1.4167 -0.6653 1.3320
p= 1.5737 -1.1644 -0.4093
k= -1.2500
5x 3 3x 2 - 4x 3
- 2x 8x 3
7
Leabharlann Baidu
- 1.4167 x - 1.5737
- 0.6653 x 1.1644
注:系数中的零不能省!
多项式四则运算
➢ 多项式加减运算:Matlab没有提供专门进行多项式 加减运算的函数,事实上,多项式的加减就是其所对 应的系数向量的加减运算。
✓ 对于次数相同的多项式,可以直接对其系数向量 进行加减运算; ✓ 如果两个多项式次数不同,则应该把低次多项式 中系数不足的高次项用0补足,然后进行加减运算。
k1=polyder([2,-1,0,3]); k2=polyder([2,-1,0,3],[2,1]); [k,d]=polyder([2,-1,0,3],[2,1])
多项式求值
➢ 代数多项式求值:
y=polyval(p,x):计算多项式 p 在 x 点的值
注:若 x 是向量或矩阵,则采用数组运算(点运算)!
fzero 的另外一种调用方式 fzero(f,[a,b])
求方程 f=0 在 [a,b] 区间内的根。 方程在 [a,b] 内可能有多个根,但 fzero 只给出一个
f 不是方程!也不能使用符号表达式!
例1 求函数y sin x 0.1x在x 6附近和[2,6]内的零点.
fzero('sin(x)-0.1*x',6) fzero('sin(x)-0.1*x',[2,6])