8.MATLAB数据分析

概述:

  

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')
原文地址:https://www.cnblogs.com/xiaochi/p/8889055.html