多项式的表示方式
在 Matlab 中,n 次多项式是用一个长度为 n+1的向量来表示,缺少的幂次项系数为 0。
多项式加减运算
Matlab 没有提供专门进行多项式加减运算的函数,事实上,多项式的加减就是其所对应的系数向量的加减运算
对于次数相同的多项式,可以直接对其系数向量进行加减运算;
如果两个多项式次数不同,则应该把低次多项式中系数不足的高次项用 0 补足,然后进行加减运算。
多现实四则运算
k=conv(p,q)
计算多项式 2x3-x2+3和2x+1的乘积
多项式乘法
多项式除法
[k,r]=deconv(p,q)
其中 k 返回的是多项式 p 除以 q 的商,r 是余式。
多项式求导
k=polyder§ : 多项式 p 的导数;
k=polyder(p,q): p*q 的导数;
[k,d]=polyder(p,q): p/q 的导数,k 是分子,d 是分母
例:
已知p(x)=2x3-x2+3,q(x)=2x+1,
求p’ , (p*q)’ , (p/q)’
多项式的值
计算多项式在定点的值
代数多项式求值:
y= polyval(p,x): 计算多项式 p 在 x 点的值
若 x 是向量或矩阵,则采用数组运算 (点运算)
例:
已知p(x)=2x3-x2+3,分别取x=2和一个2*2矩阵,求p(x)在x处的每个分量上的值
矩阵多项式求值
Y=polyvalm(p,X)
采用的是普通矩阵运算
X 必须是方阵
例:
多项式的零点
x=roots§:若 p 是 n 次多项式,则输出是 p=0 的 n 个根组成的 n 维向量。
例:
已知p(x)=2x3-x2+3,求p(x)的零点
若已知多项式的全部零点,则可用 poly 函数给出该多项式
线性方程组求解
linsolve(A,b):解线性方程组
非线性方程的数值求解
fzero(f,x0):求函数 f 在 x0 附近取值为零的点。
1.可能有多个点,但 fzero 只给出距离 x0 最近的一个
2.x0 是一个标量,不能缺省
3.fzero 先找出一个包含 x0 的区间,使得 f 在这个区间两个端点上的函数值异号,然后再在这个区间内寻找函数 f 的零点;如果找不到这样的区间,则返回 NaN。
4.由于 fzero 是根据函数是否穿越横轴来决定零点,因此它基本无法确定函数曲线仅触及横轴但不穿越的零点,如 |sin(x)| 的零点。
fzero(f,[a,b]):求函数 f 在 [a,b] 区间内取值为0的点。函数在 [a,b] 内可能有多个零点,但 fzero 只给出一个。
参数 f 可通过以下方式给出:
例:
符号求解
s=solve(f,v):求方程f=0关于指定自变量的解;
s=solve(f):求方程f=0关于默认自变量的解。
f符号表达式(低版本可以用字符串表示的方程或字符串 )
f 中不含等号,即方程为 f=0。
例:
解方程x2-3*x+1=0
solve 也可以用来解方程组
**solve( f1 , f2 , … , fN , v1 , v2 , … , vN)
**
求解由 f1 , f2 , … , fN 确定的方程组关于 v1 , v2 , … , vN 的解
例: