概述:
1 clc;
2 clear all;
3 p1=[4 3 2 1];
4 y=poly2sym(p1) %由向量创建多项式
5 disp(y) %显示多项式
1 多项式的求值与求根
1 clc;
2 clear all;
3 p=[1 -1 -6]; %多项式的系数向量
4 x=2:5;
5 y=polyval(p,x) %多项式在x处的值
1 clc;
2 clear all;
3 x=[1 2 ;3 4];
4 p=[2 3 4];
5 y1=polyvalm(p,x) %采用polyvalm( )函数,以矩阵为计算单位
6
7 x=[1 2 ;3 4];
8 p=[2 3 4];
9 y2=polyval(p,x) %采用polyval( )函数,以矩阵的元素为计算单位
1 clc;
2 clear all;
3 p=[1 0 0 -1 -6];
4 x1=roots(p) %对多项式p求根
5
6 x2=[4 5];
7 y=poly(x2); %求以x2为根的多项式
8 y=poly2sym(y)
2 多项式乘法和除法
1 clc;
2 clear all;
3 p1=[4 2 0 5]; %缺少的幂次用0补齐
4 p2=[5 8 1];
5
6 %转成表达式
7 y1=poly2sym(p1)
8 y2=poly2sym(p2)
9
10 p3=conv(p1,p2); %多项式相乘
11 y=poly2sym(p3)
12
13 %定义一个变量
14 syms x
15 p1=sym2poly(4*x^3+2*x^2+5)
16 p2=sym2poly(5*x^2+8*x+1)
17 p3=conv(p1,p2); %多项式相乘
18 y=poly2sym(p3)
3 多项式的导数和积分
1 clc;
2 clear all;
3 p1=[4 3 2];
4 p2=[2 2 1];
5 y1=polyder(p1);%对多项式p1求导
6 y1=poly2sym(y1)
7
8 y2=polyder(p1,p2); %对多项式p1和p2的乘积求导
9 y2=poly2sym(y2)
10
11 [q,d]=polyder(p1,p2);%对多项式p1除以p2的商求导
12 q=poly2sym(q)
13 d=poly2sym(d)
1 clc;
2 clear all;
3 p1=[3 2 2];
4 y1=polyint(p1,3); %对多项式p1进行积分,常数项为3
5 y1=poly2sym(y1)
6 y2=polyint(p1); %对多项式p1进行积分,常数项为0
7 y2=poly2sym(y2)
4 多项式展开
1 clc;
2 clear all;
3 b=[1 -1 -7 -1];%分子多项式
4 a=poly([1;5;6]);%分母多项式
5 [r,p,k]=residue(b,a) %进行多项式b/a展开
6 [b1,a1]=residue(r,p,k);%通过余数、极点和常数项来求多项式b1/a1
7 b1=poly2sym(b1)
8 a1=poly2sym(a1)
9
10 b=[1 -1 -7 -1];%多项式a有三重根
11 a=poly([1;1;1]);%分母多项式
12 [r,p,k]=residue(b,a) %进行多项式b/a展开
5 多项式拟合
1 clc;
2 clear all;
3 x=[0.2 0.3 0.5 0.6 0.8 0.9 1.2 1.3 1.5 1.8];
4 y=[1 2 3 5 6 7 6 5 4 1];
5 p5=polyfit(x,y,5);%5阶多项式拟合
6 %在x处求值
7 y5=polyval(p5,x);
8 p5=vpa(poly2sym(p5),5)%显示5阶多项式
9
10 p9=polyfit(x,y,9);%9阶多项式拟合
11 %求值
12 y9=polyval(p9,x);
13
14 figure;%画图显示
15 plot(x,y,'bo');
16 hold on;
17 plot(x,y5,'r:');
18 plot(x,y9,'g--');
19 legend('原始数据','5阶多项式拟合','9阶多项式拟合');
20 xlabel('x');
21 ylabel('y');
6 曲线拟合图形用户接口
7 一维插值
1 clc;
2 clear all;
3 x=0:0.2:2;
4 y=(x.^2-3*x+5).*exp(-3*x).*sin(x);
5 xi=0:0.03:2; %要插值的数据
6 yi_nearest=interp1(x,y,xi,'nearest'); %临近点插值
7 yi_linear=interp1(x,y,xi); %默认为线性插值
8 yi_spine=interp1(x,y,xi,'spine'); %三次样条插值
9 yi_pchip=interp1(x,y,xi,'pchip'); %分段三次Hermite插值
10 yi_v5cubic=interp1(x,y,xi,'v5cubic'); %MATLAB5中三次多项式插值
11 figure; %画图显示
12 hold on;
13 subplot(231);
14 plot(x,y,'ro');
15 title('已知数据点');
16 subplot(232);
17 plot(x,y,'ro',xi,yi_nearest,'b-');
18 title('临近点插值');
19 subplot(233);
20 plot(x,y,'ro',xi,yi_linear,'b-');
21 title('线性插值');
22 subplot(234);
23 plot(x,y,'ro',xi,yi_spine,'b-');
24 title('三次样条插值');
25 subplot(235);
26 plot(x,y,'ro',xi,yi_pchip,'b-');
27 title('分段三次Hermite插值');
28 subplot(236);
29 plot(x,y,'ro',xi,yi_v5cubic,'b-');
30 title('MATLAB5中三次多项式插值');
1 clc;
2 clear all;
3 x=0:1.1:8;
4 y=sin(x);
5 n=2*length(x); %增采样1倍
6 yi=interpft(y,n);%采用一维快速傅立叶插值
7 xi=0:0.55:8.3;%要插值的数据
8 figure;%画图显示
9 hold on;
10 plot(x,y,'ro',xi,yi,'b-');
11 legend('原始数据','插值后结果');
8 二维插值
1 clc;
2 clear all;
3 [x,y]=meshgrid(-4:0.8:4); %原始数据
4 z=peaks(x,y);
5 [xi,yi]=meshgrid(-4:0.2:4); %插值数据
6 zi_nearest=interp2(x,y,z,xi,yi,'nearest'); %临近点插值
7 zi_linear=interp2(x,y,z,xi,yi); %系统默认为线性插值
8 zi_spline=interp2(x,y,z,xi,yi,'spline'); %三次样条插值
9 zi_cubic=interp2(x,y,z,xi,yi,'cubic'); %三次多项式插值
10 figure; %数据显示
11 hold on;
12 subplot(321);
13 surf(x,y,z);
14 title('原始数据');
15 subplot(322);
16 surf(xi,yi,zi_nearest);
17 title('临近点插值');
18 subplot(323);
19 surf(xi,yi,zi_linear);
20 title('线性插值');
21 subplot(324);
22 surf(xi,yi,zi_spline);
23 title('三次样条插值');
24 subplot(325);
25 surf(xi,yi,zi_cubic);
26 title('三次多项式插值');
9 样条插值
1 clc;
2 clear all;
3 x=0:10;%原始数据
4 y=sin(x);
5 xi=0:.25:10;%插值数据
6 yi=spline(x,y,xi);%三次样条插值
7 pp=spline(x,y);%产生插值函数
8 y1=ppval(pp,xi); %结果相同y1=yi
9 y2=interp1(x,y,xi,'spline'); %结果相同y2=yi
10 figure;%画图显示
11 plot(x,y,'o',xi,yi);
12 legend('原始数据','三次样条插值');
10 高维插值
1 clc;
2 clear all;
3 [x,y,z,v]=flow(10);
4 [xi,yi,zi]=meshgrid(.1:.25:10,-3:.25:3,-3:.25:3);
5 vi = interp3(x,y,z,v,xi,yi,zi); % vi为25*40*25
6 slice(xi,yi,zi,vi,[6 9.5],2,[-2 .2]);
7 shading flat
11 函数的极限
1 clc;
2 clear all;
3 syms x;
4 f=(3*x^2-1)/(3*x^2-2*x+3);
5 y=limit(f,x,1)
1 clc;
2 clear all;
3 syms x;
4 f=x/(x-1)-2/(x^2-1);
5 y=limit(f,x,1)
1 clc;
2 clear all;
3 syms x;
4 f=((x^x)^x);
5 y=limit(f,x,0,'right')