找回密码
 注册
Simdroid-非首页
查看: 551|回复: 2

【原创】MATLAB新手教學 (3) 多 項 式

[复制链接]
发表于 2003-6-4 06:36:35 | 显示全部楼层 |阅读模式 来自 台湾
多 項 式
  
MATLAB支援多項式的運算,除了一般的四則運算外更可以求多項式的根
多項式微分積分等工作,以及有理數等運算
非常方便使用
  
多項式的表示法
輸入多項式x^4+2*x^2+5x+10
  
首先必須將多項式的係數由最高向至最低項依序找出來
並存在一陣列中
注意缺項部分必須補零
  
P=[1 0 2 5 10]
即為以上的多項式
  
多項式乘法
多項式乘法必須使用函數conv,也就是執行兩個陣列的卷積。
  
如以下兩個多項式a(x)=5*x^3+2*x^2+x+1和b(x)= 2*x^3+x^2+x+10的乘積
  
>>a=[5 2 1 1] ; b=[2 1 1 10];
>>c=conv(a , b)
c =
  
    10     9     9    55    22    11    10
  
結果是c(x)=10*x^6+9*x^5+9*x^4+55*x^3+22*x^2+11x+10。
  
若為兩個以上的多項式的乘法需要重覆使用onv。
  
多項式加法與減法
對多項式加法與減法可以使用(+)與(-)號,MATLAB並不提供一個直接的函數。如果兩個多項式向量大小相同,標準的的陣列加法有效。
  
把多項式a(x)與上面給出的b(x)相加
>>d=a+b
d =
  
     7     3     2    11
  
結果是d(x)= 7*x^3+3*x^2+2*x+11。
  
>> d=a-b
  
d =
  
     3     1     0    -9
  
結果是d(x)= 3*x^3+x^2-9。
  
注意
多項式做加法或減法對於階次不同,低階的多項式必須補零
就是剛才介紹的缺項補零
否則會出現錯誤訊息
   
多項式除法
在MATLAB中,由函數deconv完成一個多項式除以另一個多項式。
>> [q,r]=deconv(c,b)
q =
  
     5     2     1     1
  
r =
  
     0     0     0     0     0     0     0
  
這個結果是b被c除,給出商多項式q和餘數r,在現在情況下r是零,因爲b和q的乘積恰好是c。
  
多項式根
找出多項式的根用函數roots找出一個多項式的根
  
輸入多項式x^4+2*x^2+5x+10
  
>>p=[1 0 2 5 10]
>> r=roots(p)
  
r =
  
   1.0874 + 1.8254i
   1.0874 - 1.8254i
  -1.0874 + 1.0163i
  -1.0874 - 1.0163i
  
因爲在MATLAB中,無論是一個多項式,還是它的根,都是向量,MATLAB按慣例規定,多項式是行向量,根是列向量。
  
MATLAB中給出一個多項式的根,也可以由poly命令構造相應的多項式。>>pp=poly(r)
pp =
  
    1.0000   -0.0000    2.0000    5.0000   10.0000
  
如果一些根有虛部,由於截斷誤差差,則poly的結果有一些小的虛部,這是很普通的。消除虛假的虛部只要使用函數real抽取實部
  
多項式導數
MATLAB由polyder函數提供一個多項式的導數表示。
  
>>h=polyder(p)
h =
  
     4     0     4     5
  
多項式值
MATLAB中由函數polyval來完成多項式係值
  
>> x=[1 2 3] ;  
>>v=polyval(p , x) ;
>> v
  
v =
  
    18    44   124
  
由當x為1 2 3時所對應的多項式的值
因此x=1多項式值為18
x=2多項式值為44
x=3多項式值為124
  
可以將多項式畫出
plot(x , v)
title('多項式x^4+2*x^2+5x+10作圖')
xlabel(' x ')
  
有理多項式
在MATLAB中使用residue函數求有理多項式,有理多項式由它們的分子多項式和分母多項式表示,
  
>>b = [ 5 3 -2 7]
>>a = [-4 0 8 3]
[r, p, k] = residue(b,a)
  
r =
   -1.4167
   -0.6653
    1.3320
  
p =
    1.5737
   -1.1644
   -0.4093
  
k =
   -1.2500
  
結果是餘數、極點和部分分式展開的常數項。
  
這個函數也執行逆運算。
  
[b,a] = residue(r,p,k)
  
b =
   -1.2500   -0.7500    0.5000   -1.7500
  
a =
    1.0000   -0.0000   -2.0000   -0.7500
  
大家可以試試

评分

1

查看全部评分

发表于 2003-6-7 16:15:15 | 显示全部楼层 来自 湖南长沙

回复: 【原创】MATLAB新手教學 (3) 多 項 式

Simdroid开发平台
真是辛苦啦!
很有用
ballet 该用户已被删除
发表于 2003-6-7 17:29:59 | 显示全部楼层 来自 北京邮电大学
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-6-6 07:35 , Processed in 0.042421 second(s), 18 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表