Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#9 |
普通会员
注册日期: 2012-05-21
帖子: 37
声望力: 13 ![]() |
![]()
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是一个向量,其长度等于多项式的根的个数。 |
![]() |
![]() |