多项式
- 多项式的表示
对于多项式
P(x)= a0xn+ a1xn-1+…+ an-1x+an
可用矩阵表示,即
P=[a0 a1 … an-1 an]
例: 系数向量直接输入多项式2x3-5x2+6x+3
命令如下:
p=[2,-5,6,3];
y=poly2sym(p) % 将系数向量表示成符号多项式
y = 2*x^3 - 5*x^2 + 6*x + 3
-
- 多项式计算
polyval函数用来求代数多项式的值,其调用格式为:
- 多项式计算
Y=polyval(P,x)
- 若x为数值,则求多项式在该点的值;
- 若x为矩阵,则对矩阵每个元素求其多项式的值。
例: 已知多项式x4+8x3-10,分别取x=1.2和一个3×2矩阵为自变量计算该多项式的值
w=[1,8,0,0,-10];
x=1.2;
s1=polyval(w,x) // 多项式求值
s2=x.^4+8*x.^3-10 // 表达式验证
y=[1.2 -0.9; 0.3 1.4; 1 0.1];
s3=polyval(w,y) // 多项式求值
结果:
s1 = 5.8976
s2 = 5.8976
s3 =
5.8976 -15.1759
-9.7759 15.7936
-1.0000 -9.9919
- 多项式求根
x=roots(P)
其中P为多项式的系数向量,求得的根赋给向量x,即x(1),x(2),…,x(n)分别代表多项式的n个根
线性方程组
一般形式的线性方程组:
可转换为:
例: 求解线性方程组
程序如下:
A=[2,1,-5,1; ...
1,-5,0,7; ...
0,2,1,-1; ...
1,6,-1,-4];
B=[13,-9,6,0]';
X=A\B % 求解
% R=inv(A)*B
C=A*X % 验证
det(A):求方阵A的行列式
rank(A):求矩阵A的秩,即A中线性无关的行数和列数
inv(A):求方阵A的逆矩阵
trace: 求矩阵A的迹
- 矩阵分解
常见的矩阵分解有:
LU分解
QR分解
Cholesky分解
曲线拟合
使用polyfit函数求最小二乘法拟合多项式的系数,其调用格式为:
[P,S]=polyfit(X,Y,m)
X和Y为采样点数据;P为m次多项式的系数向量;
S为在采样点的误差向量,包括:
R:polyfit函数中,先根据输入的x构建范德蒙矩阵V,然后进行QR分解,得到的上三角矩阵。
df:自由度, df=length(Y)-(n+1)。
normr:标准偏差、残差范数。
clc; clear; close all;
x=1:5;
y=[2.7,7.4,20.0,54.5,148.4];
[b s]=polyfit(x,y,3)
% 3次多项式拟合
% b是多项式拟合系数
% s是误差向量
xi=1:0.2:5;
yi=polyval(b,xi); % 拟合函数在xi的数值
yf=polyval(b,x); % 拟合函数在x的数值
plot(x,y,'rd',xi,yi,'b-.');
N2=norm(yf-y) % 残差范数