多项式MATLAB命令
程序员文章站
2022-04-01 09:55:14
...
一个多项式的幂级数形式可表示为:
也可表为嵌套形式:
或因子形式:
N阶多项式n个根,其中包含重根和复根。若多项式所有系数均为实数,则全部复根都将以共轭对的形式出现 。
幂系数:
在MATLAB里,多项式用行向量表示,其元素为多项式的系数,并从左至右按降幂排列。
例1:
在matlab中被表示为 :
p=[2 1 4 5]
poly2sym(p)
ans =
2*x^3+x^2+4*x+5
多项式函数调用:
Roots:多项式的零点可用命令roots求的。
如例1:
>> r=roots(p)
r =
0.2500 + 1.5612i
0.2500 - 1.5612i
-1.0000
所有零点由一个列向量给出。
Poly:由零点可得原始多项式的各系数,但可能相差一个常数倍。
如例1:
>> poly(r)
ans =
1.0000 0.5000 2.0000 2.5000
注意:若存在重根,这种转换可能会降低精度。
如例2:
>> r=roots([1 -6 15 -20 15 -6 1])
r =
1.0042 + 0.0025i
1.0042 - 0.0025i
1.0000 + 0.0049i
1.0000 - 0.0049i
0.9958 + 0.0024i
0.9958 - 0.0024i
舍入误差的影响,与计算精度有关。
polyval:计算多项式的值。
如例3:
计算y(2.5)的值
>> c=[3,-7,2,1,1];
>>xi=2.5;
>>yi=polyval(c,xi)
yi =
23.8125
如果xi是含有多个横坐标值的数组,则yi也为与xi长度相同的向量。
>>c=[3,-7,2,1,1];
>>xi=[2.5,3];
>>yi=polyval(c,xi)
yi =
23.8125 76.0000
polyfit:给定n+1个点将可以唯一确定一个n阶多项式。利用命令polyfit可容易确定多项式的系数。
(曲线拟合:已知离散点上的数据集,即已知在点集上的函数值,构造一个解析函数(其图形为一曲线)使在原离散点上尽可能接近给定的值)
如例4:
>> x=[1.1,2.3,3.9,9.1];
>> y=[3.887,4.276,4.651,2.117];
>> a=polyfit(x,y,length(x)-1) %Polyfit的第三个参数是多项式的阶数。
a =
1 至 3 列
-0.0093 0.0355 0.2870
4 列
3.5406
>> poly2sym(a) %求出多项式
ans =
- (647*x^3)/69888 + (5117895565554271*x^2)/144115188075855872 + (2585253578334195*x)/9007199254740992 + 7972787511422351/2251799813685248
多项式积分:
poly_itg(p)求多项式积分。
调用格式:py=poly_itg(p)
p:被积多项式的系数
py:求积后多项式的系数
poly_itg.m
function py=poly_itg(p)
n=length(p);
py=[p.*[n:-1:1].^(-1),0]
不包括最后一项积分常数
多项式微分:
Polyder:求多项式一阶导数的系数。
调用格式为: b=polyder(c )
c为多项式y的系数,b是微分后的系数,其值为:
两个多项式的和与差:
poly_add:求两个多项式的和,其调用格式为:
c= poly_add(a,b)
多项式a减去b,可表示为:
c= poly_add(a,-b)
功能:两个多项式相加
调用格式:b=poly_add(p1,p2)
b:求和后的系数数组
main.m
p1=[1,3,4];
p2=[2,1,3];
b=poly_add(p1,p2)
##########################
poly_add.m
function p3=poly_add(p1,p2)
n1=length(p1);
n2=length(p2);
if n1==n2 p3=p1+p2;end
if n1>n2 p3=p1+[zeros(1,n1-n2),p2];end
if n1<n2 p3=[zeros(1,n2-n1),p1]+p2;end
b =
3 4 7
m阶多项式与n阶多项式的乘积是d=m+n阶的多项式
计算yc系数的MATLAB命令是:
c=conv(a,b)
多项式yb除多项式ya的除法满足:
其中yq是商,yr是除法的余数。多项式yq和yr可由命令
deconv 算出。
例:
[q, r]=deconv(a,b)
例5
例
>> a=[2,-5,6,-1,9];
>> b=[3,-90,-18];
>> c=conv(a,b)
c =
6 -195 432 -453 9 -792 -162
>> [q,r]=deconv(c,b)
q =
2 -5 6 -1 9
r =
0 0 0 0 0 0 0
>> poly2sym(c)
ans =
6*x^6-195*x^5+432*x^4-453*x^3+9*x^2-792*x-162