Matlab中多项式

来源:互联网 发布:明教喵哥捏脸数据 编辑:程序博客网 时间:2024/06/05 10:03
%% 1.多项式加减乘除
%% 2.多项式求根
%% 3.多项式求值
%% 4.多项式分式展开
%% 5.多项式拟合
%% 6.插值
%% 7.函数的零点
%% 8.函数的极值点(多元函数的未写入)


% 1.多项式加减乘除


a1=[1,2,3,5];
b1=[2,5,9];
c1=a1+b1;%表示多项式a(x)=x^3+2x^2+3x^1+5,b(x)=2x^2+5x^1+9 的加法运算
poly2str(c1,'x');%按照标准形式输出
poly2str(conv(a1,b1),'x');%conv(a,b),表示两个多项式的乘法运算
[q,r]=deconv(a1,b1)%表示除法,a1,b1表示被除数和除数,q,r表示商多项式和余数多项式的系数向量


% 2.多项式求根


C=[1 2 3 4];
D=roots(C);%表示求多项式 f(x)=x^3+2x^2+3x+4 的全部根
poly(D)%表示已知根创建多项式


% 3.多项式求值


E=[2 -3 0 0 5];
x1=1.3;
x2=[1.2 1 5;3 -2 9;-1 2/3 4];
y1=polyval(E,x1);%计算x=x1时多项式的值
y2=polyval(E,x2);%计算x2中每个元素对应的多项式的值
y3=polyvalm(E,x2);%计算矩阵x2对应的多项式的值


% 4.多项式分式展开


F=[1 2 3 4];
G=[4 5 2];
[r p k]=residue(F,G)%表示F/G多项式,F/G=r1/(x-p1)+r2/(x-p2)+r3/(x-p3)+...+rn/(x-pn)+k(x)




% 5.多项式拟合


%%插值表示由离散的数据点得到函数表达式(数据点都经过这个函数曲线),拟合或回归表示由
%%数据点得到光滑的数据曲线,这条曲线不需要完全经过这些数据点,但能拟合出最佳数据点
H=0:0.1:1;
I=[-0.46 1.66 3.29 6.17 7.12 7.33 7.66 8.99 9.5 9.2 11.5];
p1=polyfit(H,I,1);%1阶线性拟合
y1=poly2str(p1,'x');%化为标准多项式表示


% 6.插值


x=linspace(0,5,6);
y=sin(x);
x0=linspace(0,5,23);
y0=sin(x0);
%下面的是一维差值interp1(x,y,x0,'method')二维差值的方法为interp2(x,y,z,x1,y1,'method')
y1=interp1(x,y,x0);%线性插值(默认)
y2=interp1(x,y,x0,'spline');%三次样条插值
y3=interp1(x,y,x0,'cubic');%立方插值,要求x的值等距
err=[y1-y0;y2-y0;y3-y0];%产值结果与精确解之间的差值
s=[std(err(1,:)),std(err(2,:)),std(err(3,:))];%不同差值方法残差的标准方差,std()表示计算标准方差


% 7.函数的零点


f=inline('(sin(x))*exp(0.1*x)+cos(x)');
[x y]=fzero(f,3);%计算函数在 3 附近的零点,y为零点纵坐标
x0=[2 2 2];
%下面为计算方程 f=2x+3y^2+xz 在 x0 附近的零点
[x,fval]=fsolve('2*x(1)+3*x(2)^2+x(1)*x(3)',x0)%x为零点横坐标,fval为零点纵坐标


% 8.函数的极值点(多元函数的未写入)


f=inline('2*exp(-x)*cos(x)');
[x,ymin]=fminbnd(f,0,3);%求函数f=2*exp(-x)*cos(x)在区间[0,3]内的极小值
[x,ymin]=fminbnd('-2*exp(-x)*cos(x)',0,3);%求函数f=2*exp(-x)*cos(x)在区间[0,3]内的极大值
ymax=-ymin;





















原创粉丝点击