2 MATLAB2014a多项式计算

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3 2 例:已知 p( x) 2 x x 3 ,求p(x)的零点。
p=[2,-1,0,3]; x=roots(p)
有理多项式
• 有理多项式的展开
num = 5 3 -2 den = -4 0 8 r= -1.4167 -0.6653 1.3320 p= 1.5737 -1.1644 -0.4093 k= -1.2500 7 3
插值法又称“内插法”,是利用函数f (x)在某区间中已知
的若干点的函数值,作出适当的特定函数,在区间的其他 点上用这特定函数的值作为函数f (x)的近似值,这种方法 称为插值法。
一维插值 二维插值
一元函数 二元函数
临近点插值 线性插值 三次样条插值 立方插值
一维快速傅里叶插值
• 函数:y=interpft(x,n)
例:在sin(x)函数上进行插值 x=0:1.2:10 %length=9
yi = -0.0000 0.6755 -0.9962 0.7937 -0.1743
y=sin(x)
n=2*length(x) yi=interpft(y,n)
0.5377 0.9320 0.9773 0.1445 -0.4425 -0.8787 -0.7619 -0.2794 0.2947 1.0282 0.8546 0.3423 -0.3208
多项式计算
Matlab多项式运算
在 Matlab 中,n 次多项式是用一个长度为 n+1 的向量来表示,缺少的幂次项系数为0。例如:
p( x) an x an1 x
n
n1
a1 x a0
在 Matlab中表示为相应的向量:
[an , an1, , a1, a0 ]
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)
5x 3 3x 2 - 2x 7 - 1.4167 - 0.6653 1.3320 - 1.25 3 x - 1.5737 x 1.1644 x 0.4093 - 4x 8x 3
方程可能有多个根,但 fzero 只给出距离 x0 最近的一个 x0 是一个标量,不能缺省 fzero 先找出一个包含 x0 的区间,使得 f 在这个区间 两个端点上的函数值异号,然后再在这个区间内寻找方程 f=0 的根;如果找不到这样的区间,则返回 NaN。 由于 fzero 是根据函数是否穿越横轴来决定零点,因 此它无法确定函数曲线仅触及横轴但不穿越的零点,如 |sin(x)| 的所有零点。
例 >> syms a b c x
>> f=sym('a*x*x+b*x+c=0') >>solve(f) ans = [ 1/2/a*(-b+(b^2-4*c*a)^(1/2))] [ 1/2/a*(-b-(b^2-4*c*a)^(1/2))] >> solve('1+x=sin(x)') ans = -1.9345632107520242675632614537689 >>dsolve( ' Dy=x ','x') %求微分方程y'=x的通解,指定x为自变量。 ans = 1/2*x^2+C1 >>dsolve(' D2y=1+Dy ','y(0)=1','Dy(0)=0' ) %求微分方程y''=1+y'的解,加初始条件 ans = -t+exp(t) >>[x,y]=dsolve('Dx=y+x,Dy=2*x') %微分方程组的通解 x= -1/2*C1*exp(-t)+C2*exp(2*t) y= C1*exp(-t)+C2*exp(2*t)
3 2 例4 已知p(x ) 2x x 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维向量。
29
应用举例
应用举例
应用举例
应用举例
exp(-t) sin(t)+exp(-t) cos(t)
250
200
150
100
50
0
-6
-4
-2 t
0
2
4
应用举例
xi=0:0.6:10.4
plot(x,y,'ro') hold on
plot(xi,yi,'b.-')
ቤተ መጻሕፍቲ ባይዱ
微积分
微积分
• 1 极限
2 微分
• diff(f)
求表达式f对默认自变量的一次微分值;
• diff(f, t) 求表达式f对自变量t的一次微分值; • diff(f,n) 求表达式f对默认自变量的n次微分值; • diff(f,t,n) 求表达式f对自变量t的n次微分值。
[2, 1, 0, 3] [ 0, 0, 2, 1] [2, 1, 2, 4]
p2 2 x 1
p1 p2 2 x 3 x 2 2 x 4
多项式乘法运算: k=conv(p,q)
例1 计算多项式 2 x 3 x 2 3 和 2 x 1 的乘积
p=[2,-1,0,3]; q=[2,1]; k=conv(p,q)
3 积分
符号积分:
int(f)
• int(f, t) • int(f, a, b) • int(f, t, a, b)
求表达式f对默认自变量的积分值;
求表达式f对自变量t的不定积分值; 求表达式f对默认自变量的定积分 值,积分区间为[a,b]; 求表达式f对自变量t的定积分值,积 分区间为[a,b]
4 方程求解
• 1代数方程 • 代数方程的求解由函数solve实现: • solve(f) 求解符号方程式f • solve(f1,…,fn) 求解由f1,…,fn组成的代数方程组
• 2常微分方程 • 使用函数dsolve来求解常微分方程: • dsolve('eq1, eq2, ...', 'cond1, cond2, ...', 'v')
• 有理多项式展开的逆运算
- 1.4167 - 0.6653 1.3320 ? - 1.25 x - 1.5737 x 1.1644 x 0.4093 ?
[n,d]=residue(r,p,k)
n= -1.2500 -0.7500 0.5000 -1.7500 d= 1.0000 -0.0000 -2.0000 -0.7500
例:
2x3 x2 3
[2, 1, 0, 3]
注:系数中的零不能省!
多项式四则运算
多项式加减运算:Matlab没有提供专门进行多项式 加减运算的函数,事实上,多项式的加减就是其所对 应的系数向量的加减运算。 对于次数相同的多项式,可以直接对其系数向量 进行加减运算; 如果两个多项式次数不同,则应该把低次多项式 中系数不足的高次项用0补足,然后进行加减运算。 例: p1 2 x 3 x 2 3
例 解方程组
1 x1 4x 1 x 2 e 1 10 x 1 4x 2 1 x 12 0 8
[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])


多项式的导数:polyder
k=polyder(p):多项式 p 的导数; k=polyder(p,q): p*q 的导数; [k,d]=polyder(p,q) p/q 的导数,k是分子,d是分母。
3 2 p ( x ) 2 x x 3 例3 已知
q( x) 2 x 1
求 p' , ( p q)', ( p / q)'
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 是向量或矩阵,则采用数组运算(点运算)!
- 1.4167 - 0.6653 1.3320 - 1.25x3 - 0.75x2 0.5x 1.75 - 1.25 x - 1.5737 x 1.1644 x 0.4093 x3 - 2x - 0.75
非线性方程的根
Matlab 非线性方程的数值求解 fzero(f,x0):求方程 f=0 在 x0 附近的根。
fzero('sin(x)-0.1*x',6)
fzero('sin(x)-0.1*x',[2,6])
非线性方程组求解
[x,f,h]=fsolve(‘F’,X0) F为字符串表示的函数; x返回F在x0附近的一个零点,f返回F在x的 函数值;h返回值如果大于0,说明计算结果 可靠。

非线性方程组求解
多项式除法运算:[k,r]=deconv(p,q)
其中 k 返回的是多项式 p 除以 q 的商,r 是余式。 [k,r]=deconv(p,q) <==> p=conv(q,k)+r
例2 计算多项式 x 3 2 x 2 5和x 2 x 2的商,并验算。
p=[1 2 0 -5]; q=[1 -1 2]; [k,r]=deconv(p,q) conv(k,q)+r
fzero 的另外一种调用方式
fzero(f,[a,b])
求方程 f=0 在 [a,b] 区间内的根。 方程在 [a,b] 内可能有多个根,但 fzero 只给出一个 f 不是方程!也不能使用符号表达式!
例1 求函数 y sinx 0.1x在x 6附近和 [2,6] 内的零点 .
相关文档
最新文档