回复: MATLAB应用大全 书连载
5.1.2 多项式的求值与求根
在MATLAB中,通过函数polyval()和polyvalm()可以对多项式进行求值,两者的区别为前者是代数多项式求值,后者是矩阵多项式求值。通过函数roots()对多项式进行求根,如果已经知道多项式的根,也可以通过函数poly()建立相对应的多项式。下面分别进行 介绍。
1.多项式求值
在MATLAB中,提供了两个函数对多项式进行求值,函数polyval()和polyvalm()。函数polyval()以数组或矩阵中的元素为计算单位,函数polyvalm()以矩阵为计算单位。
函数polyval()的调用方式为y=polyval(p, x),其中参数p为行向量形式的多项式,参数x为带入多项式的值。参数x可以是标量,也可以是向量和矩阵。如果参数x为向量或矩阵,则该函数对向量或矩阵中的每一个元素计算多项式的值,其返回值y也分别为向量或矩阵。
【例5-3】 求多项式 在点2、3、4、5的值。代码如下:
>> clear all;
p=[1 -1 -6]; %多项式的系数向量
x=2:5;
y=polyval(p,x) %求多项式在x处的值
运行程序后输出结果如下:
y =
-4 0 6 14
函数polyvalm()的调用方式为y=polyvalm(p, x),其中参数p为行向量形式的多项式,参数x必须为方阵,输出结果仍然为方阵。
【例5-4】 求 时,多项式 的值。
利用函数polyvalm()时,输出结果计算公式为 ,常数值变为常数乘以相同阶次的单位矩阵。如果采用函数polyval(),计算矩阵中每个元素对应的多项式的值。下面分别采用函数polyvalm()和polyval()对该矩阵进行计算,代码如下:
>> x=[1 2 ;3 4];
p=[2 3 4];
y1=polyvalm(p,x) %采用polyvalm()函数,以矩阵为计算单位
x=[1 2 ;3 4];
p=[2 3 4];
y2=polyval(p,x) %采用polyval()函数,以矩阵的元素为计算单位
运行程序后,输出结果如下:
y1 =
21 26
39 60
y2 =
9 18
31 48
当采用函数polyval()时,虽然输入参数是矩阵,但在计算时将矩阵的每个元素分别输入多项式,计算对应的输出。
2.多项式求根
在MATLAB中,利用roots()函数来求多项式的根,其调用格式为x=roots(p),其中参数p为多项式系数,输出参数x为多项式的根。对于n次多项式具有n个根,这些根可能是实根,也可能是共轭复根。在MATLAB中,如果已经知道多项式的根,可以利用函数poly()求多项式的系数,其调用格式为y=poly(x),输入参数x为根,输出参数y为得到的多项式系数向量。
【例5-5】 求多项式 的根,以及以4和5为根的多项式。代码如下:
>> clear all;
p=[1 0 0 -1 -6];
x1=roots(p) %对多项式p求根
x2=[4 5];
y=poly(x2); %求以x2为根的多项式
y=poly2sym(y)
运行程序后,输出结果如下:
x1 =
1.6638
-0.1021 + 1.5684i
-0.1021 - 1.5684i
-1.4597
y =
x^2 - 9*x + 20
利用函数roots()计算多项式的根,非常方便,函数的返回值x是一个向量,其长度等于多项式的根的个数。
|