Matlab程序设计实验5数据分析和多项式计算
Matlab的多项式运算和数据分析

课程名称:Matlab语言程序设计实验题目:Matlab的多项式运算和数据分析一、实验目的1. 掌握Matlab 中多项式函数的使用;2. 掌握利用Matlab 实现数据拟合的方法;3. 掌握Matlab 中的数据分析函数的使用。
二、实验内容和结果1.求多项式函数432)(23++=x x x p 的根,求以得到的根向量为根的多项式;求)(x p 的导函数系数向量1q 和以5为常数项的原函数系数向量2q ;在同一绘图窗口中用plot 绘制)(x p ,)(1x q ,)(2x q 的图像,并加图例。
clcp=[2 3 0 4]; x=0:0.01:2; p1=roots(p); yy=poly2sym(p1) y=polyval(p,x); plot(x,y,'g') hold onq1=polyder(p) y1=polyval(q1,x); plot(x,y1,'b') hold onq2=[2 3 0 5]; y2=polyval(q2,x); plot(x,y2,'r') hold onlegend('p(x)','q1(x)','q2(x)') xlabel('x') ylabel('y')0.20.40.60.81 1.2 1.4 1.6 1.820510152025303540xy2.用电压10=V 伏的电池给电容器充电,电容器上t 时刻的电压为}exp{)()(0τtV V V t v ---=,其中0V 是电容器的初始电压,τ是充电常数。
试由下面一组t ,V 数据确定0V 和τ。
t=[.5 1 2 3 4 5 7 9];v=[6.36 6.48 7.26 8.22 8.66 8.99 9.43 9.63]; u1=10-v; u3=log(u1); u4=exp(u3); plot(t,u3,'*r'); hold onq=polyfit(t,u3,1) y=polyval(q,t); plot(t,y); tt=1/-.2835 v0=10-exp(1.4766)v0 =5.6220τ=-3.52730V =5.6220 拟合图0123456789-1.5-1-0.50.511.53.利用多项式函数和eig 求3阶Pascal 矩阵的特征值,并比较二者的结果。
第三章MATLAB数据分析与多项式计算.

函数[Q,r]=deconv(P1,P2)用于对多项式P1和P2作除法 运算(退卷积)。其中Q返回多项式P1除以P2的商式,r返回P1 除以P2的余式.这里,Q和r仍是多项式系数向量.
例3-1 分别计对多项式x4+8x3-10与多项式2x2-x+3的进行乘法 和除法运算 p1=[1 8 0 0 -10]; p2=[2 -1 3]; p=conv(p1,p2) , %乘法运算 y=poly2sym(p) [q,r]=deconv([p1,p2]) %除法运算 p= 2 15 -5 24 -20 10 -30 y= 2*x^6+15*x^5-5*x^4+24*x^3-20*x^2+10*x-30
yi_cubic =
75.0000 106.2979 140.7981 179.3200 224.7603 yi_nearest = 75.0000 123.2000 123.2000 179.3200 250.0000
例3-16 某观测站测得某日6:00时至18:00时之间每隔2小时的室 内外温度t(℃),用3次样条插值分别求得该日室内外6:30至 17:30时之间每隔2小时各点的近似温度(℃)。 设时间变量h为一行向量,温度变量t为一个1*2矩阵,其中 第一列存放室内温度,第二列储存室外温度。命令如下: h=6:2:18; t=[18,20,22,25,30,28,24;15,19,24,28,34,32,30];
说明: 1.求多项式P的导函数,参数P为多项式系数向量,返回值p为P的导函数系数向量. 2. 求P*Q积的导函数,参数P,Q均为多项式系数向量,返回值p为P*Q的导函数系数向量 3.求P/Q商的导函数, [p,q] (向量表示)为返回值分别存放导函数的分子与分母
MATLAB05数据分析与计算

MATHEMATICS
5.1.4 累加和与累乘积 在MATLAB中,使用cumsum和cumprod函数能方便地求得 向量和矩阵元素的累加和与累乘积向量,函数的调用格式 为: cumsum(X):返回向量X累加和向量。 cumprod(X):返回向量X累乘积向量。 cumsum(A):返回一个矩阵,其第i列是A的第i列的累加和向 量。 cumprod(A):返回一个矩阵,其第i列是A的第i列的累乘积 向量。 cumsum(A,dim):当dim为1时,该函数等同于cumsum(A); 当dim为2时,返回一个矩阵,其第i行是A的第i行的累加 和向量。 cumprod(A,dim):当dim为1时,该函数等同于cumprod(A); 当dim为2时,返回一个向量,其第i行是A的第i行的累乘 积向量。 例5-6 求s的值。
MATHEMATICS
5.2.3 多项式的导函数 对多项式求导数的函数是: p=polyder(P):求多项式P的导函数 p=polyder(P,Q):求P· Q的导函数 [p,q]=polyder(P,Q):求P/Q的导函数,导函数的分 子存入p,分母存入q。
上述函数中,参数P,Q是多项式的向量表示,结果 p,q也是多项式的向量表示。
MATHEMATICS
5.1.5 排序 MATLAB中对向量X是排序函数是sort(X),函数返 回一个对X中的元素按升序排列的新向量。 sort函数也可以对矩阵A的各列或各行重新排序,其 调用格式为: [Y,I]=sort(A,dim) 其中dim指明对A的列还是行进行排序。若dim=1, 则按列排;若dim=2,则按行排。Y是排序后的矩 阵,而I记录Y中的元素在A中位置。
MATHEMATICS
(2) [y,I]=max(X):返回向量X的最大值存入y,最大 值的序号存入I,如果X中包含复数元素,则按模 取最大值。 求向量X的最小值的函数是min(X),用法和max(X) 完全相同。 例5-1 求向量x的最大值。 命令如下: x=[-43,72,9,16,23,47]; y=max(x) %求向量x中的最大值 [y,l]=max(x) %求向量x中的最大值及其该元素 的位置
matlab实验3:多项式运算

代数多项式求值
y = polyval(p,x)
计算多项式 p 在 x 点的值
注:若 x 是向量或矩阵,则采用数组运算 (点运算)! 例:已知 p(x)=2x3-x2+3,分别取 x=2 和一个 22 矩阵,
求 p(x) 在 x 处的每个分量上的值
>> p=[2,-1,0,3]; >> x=2; y = polyval(p,x) >> x=[-1,2;-2,1]; y = polyval(p,x)
例:解方程组
x
2yz xz3
2
x 3y 8
>> A=[1 2 -1; 1 0 1; 1 3 0]; >> b=[2;3;8]; >> x=linsolve(A,b)
b是列向量!
非线性方程的根
Matlab 非线性方程的数值求解
fzero(f,x0):求方程 f=0 在 x0 附近的根。
符号求解
solve 也可以用来解方程组 solve( f1 , f2 , ... , fN , v , ... , fN 确定的方程组关于 v1 , v2 , ... , vN 的解
例:解方程组
x 2 y z 27
x
z
3
x2 3 y2 28
例:2x3-x2+3 <-> [2,-1,0,3]
特别注意:系数中的零是不能省的!
多项式的符号形式:poly2sym 如,>> poly2sym([2,-1,0,3])
运行结果:ans = 2*x^3-x^2+3
多项式四则运算
多项式加减运算
多项式的加减运算就是其所对应的系数向量的加减运算
第5讲MATLAB多项式及插值

第5讲MATLAB多项式及插值
5.1.2 求和与求积
数据序列求和与求积的函数是sum和prod,其使用方 法类似。设X是一个向量,A是一个矩阵,函数的调用格 式为:
sum(X):返回向量X各元素的和。 prod(X):返回向量X各元素的乘积。 sum(A):返回一个行向量,其第i个元素是A的第i列的元素和。 prod(A):返回一个行向量,其第i个元素是A的第i列的元素乘积。 sum(A,dim):当dim为1时,该函数等同于sum(A);当dim为2时, 返回一个列向量,其第i个元素是A的第i行的各元素之和。 prod(A,dim):当dim为1时,该函数等同于prod(A);当dim为2时, 返回一个列向量,其第i个元素是A的第i行的各元素乘积。
为解决Rung问题,引入分段插值。 第5讲MATLAB多项式及插值
算法分析:所谓分段插值就是通过插值点用折线或低次曲线 连接起来逼近原曲线。
MATLAB实现 可调用内部函数。 ➢ 命令 interp1
功能 : 一维数据插值(表格查找)。该命令对数据点之 间计算内插值。它找出一元函数f(x)在中间点的数值。其 中函数f(x)由所给数据决定。
t = 1900:10:1990; p = [75.995 91.972 105.711 123.203 131.669...
150.697 179.323 203.212 226.505 249.633]; 对应于美国从1900年到1990年的每10年的人口数,求 1975年的人口。由此推断美国1900年到2000年每一年的 人口数,并画出图形。
k1
j1
xxj ) xk xj
jk
MATLAB中没有直接实现拉格朗日算法的函数,我们已经介 绍过该函数的书写:
MATLAB实验

MATLAB实验一:MATLAB语言基本概念实验实验目的:1. 熟悉MATLAB语言及使用环境;2.掌握MATLAB的常用命令;3.掌握MATLAB的工作空间的使用;4.掌握MATLAB的获得帮助的途径。
5.掌握科学计算的有关方法,熟悉MATLAB语言及其在科学计算中的运用;6.掌握MATLAB的命令运行方式和M文件运行方式;7.掌握矩阵在MATLAB中的运用。
实验方案分析及设计:本次实验主要目的是了解MATLAB的使用环境,以及常用的一些命令的使用;了解矩阵在MATLAB实验中的具体运用,以及相关的一些符号命令的使用。
实验器材:电脑一台,MATLAB软件实验步骤:打开MATLAB程序,将实验内容中的题目依次输入MATLAB中,运行得到并记录结果,最后再对所得结果进行验证。
实验内容及要求:1.熟悉MATLAB的菜单和快捷键的功能2.熟悉MATLAB的命令窗口的使用3.熟悉常用指令的使用format clc clear help lookfor who whos 4.熟悉命令历史窗口的使用5. 熟悉MATLAB工作空间的功能将工作空间中的变量保存为M文件,并提取该文件中的变量6.熟悉MATLAB获取帮助的途径将所有plot开头的函数列出来,并详细给出plotfis函数的使用方法1. 输入 A=[7 1 5;2 5 6;3 1 5],B=[1 1 1; 2 2 2;3 3 3],在命令窗口中执行下列表达式,掌握其含义:A(2, 3) A(:,2) A(3,:) A(:,1:2:3)A(:,3).*B(:,2) A(:,3)*B(2,:) A*BA.*BA^2 A.^2 B/A B./AA=[7 1 5;2 5 6;3 1 5]7 1 52 5 63 1 5>> B=[1 1 1; 2 2 2;3 3 3]1 1 12 2 23 3 3>> A(2, 3)6>> A(:,2)151>> A(3,:)3 1 5>> A(:,1:2:3)7 52 63 5>> A(:,3).*B(:,2)51215>> A(:,3)*B(2,:)10 10 1012 12 1210 10 10>> A*B24 24 2430 30 3020 20 20>> A.*B7 1 54 10 129 3 15>> A^266 17 6642 33 7038 13 46>> A.^249 1 254 25 369 1 25>> B/A0.1842 0.2105 -0.23680.3684 0.4211 -0.47370.5526 0.6316 -0.7105>> B./A0.1429 1.0000 0.20001.0000 0.4000 0.33331.0000 3.0000 0.60002.输入 C=1:2:20,则 C (i )表示什么?其中 i=1,2,3, (10)1到19差为2,i 代表公差3. 试用 help 命令理解下面程序各指令的含义:cleart =0:0.001:2*pi;subplot(2,2,1);polar(t, 1+cos(t))subplot(2,2,2);plot(cos(t).^3,sin(t).^3)subplot(2,2,3);polar(t,abs(sin(t).*cos(t)))subplot(2,2,4);polar(t,(cos(2*t)).^0.5)4计算矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡897473535与⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡638976242之和。
多项式计算

2. 多项式的四则运算 1 多项式的加减运算
多项式的加减运算非常简单,即相应向量相加减。 2 多项式乘法
conv(P1,P2):多项式相乘,其中,P1、P2是两个多项式系数向量。 3 多项式除法
[Q,r]=deconv(P1,P2):多项式相除,其中Q返回多项式P1除以P2的商式,r返 回P1除以P2的余式。这里,Q和r仍是多项式系数向量。deconv是conv的逆函 数,因此有下式成立。
例4 某工业过程需要对工件进行高温加热,热量由一个燃烧装置产生。该装置中共有两条输送管 道,一条管道按固定量提供燃料,一条管道注入空气。空气能够帮助燃烧,但是过高的空气流量 又会带走热量,降低加热效率。经过数十次空气流量实验,技术部门取得了相应的结果数据,并 通过曲线拟合得知空气流量与加热效率在[0, 2]范围内基本满足多项式p(x)=-38.89x2+126.11x3.42(x表示空气流量),请推算空气流量在[0, 2]范围内什么水平时,加热效率为最高。
3 -5 0 -4 10 3 >> f-g1 ans =
3 -5 0 -10 0 9 >> conv(f,g) ans=
9 0 -34 -6 -20 64 15 -18 >> [Q,r]=deconv(f,g) Q=
1.0000 -3.3333 6.5556 -16.5926 r=
0 0 0 0 107.6296 -43.7778 >> conv(g,Q)+r ans =
5.2 多项式计算 多项式的表示 多项式的四则运算 多项式的求导 多项式的求值 多项式的求根
专题五 数据分析与多项式计算
1. 多项式的表示
在MATLAB中,n次多项式用一个长度为n+1的行向量表示。如有n次多项式:
matlab在科学计算中的应用5多项式插值与数据拟合

>> x=[-5:1:5]; y=1./(1+x.^2); x0=[-5:0.1:5]; >> y0=lagrange(x,y,x0); >> y1=1./(1+x0.^2); %绘制图形 >> plot(x0,y0,'--r') %插值曲线 >> hold on >> plot(x0,y1,‘-b') %原曲线
5.1 关于多项式MATLAB命令
• 一个多项式的幂级数形式可表示为:
y c1xn c2 xn1 cn x cn1
• 也可表为嵌套形式
y ( ((c1x c2 )x c3)x cn )x cn1
• 或因子形式
y c1(x r1)(x r2 ) (x rn )
N阶多项式n个根,其中包含重根和复根。若多 项式所有系数均为实数,则全部复根都将以共轭对 的形式出现
cn 2
x2
cn1x cn2
多项式微分:
y c1xn c2 xn1
cn x cn1
y' nc1xn1 (n 1)c2 xn2 cn
• Polyder: 求多项式一阶导数的系数。 调用格式为: b=polyder(c ) c为多项式y的系数,b是微分后的系数,
其值为:
[nc1, (n 1)c2 , , cn ]
23.8125 76.0000
• polyfit:给定n+1个点将可以唯一确定一个n阶多项式。利 用命令polyfit可容易确定多项式的系数。 例:
>> x=[1.1,2.3,3.9,5.1]; >> y=[3.887,4.276,4.651,2.117]; >> a=polyfit(x,y,length(x)-1) a=
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB程序设计实验5 数据分析和多项式计算
班级:电信1105
姓名:
学号:*********
一.实验目的
1.掌握数据统计和分析的方法。
2.掌握数值插值与曲线拟合的方法和应用。
3.掌握快速傅立叶变换的应用方法。
4.掌握多项式的常用运算
二.实验内容
1.利用randn函数生成符合正态分布的10x5随机矩阵,进行以下操作:
a)矩阵中各列元素的均值和标准方差。
b)矩阵的最大元素和最小元素。
c)求矩阵每行元素的和以及全部元素之和。
d)分别对矩阵的每列元素按照升序、每列元素按照降序排列。
X=randn(10,5);
%a
X_mean=mean(X)%求随机矩阵X各列的平均值
X_std=std(X,0,1)%求随机矩阵X各列的标准方差
%b
X_max=max(X)%求每列最大值
X_min=min(X)%求每列最小值
%c
X_sum=sum(X,2)%按行求和
X_sumall=sum(sum(X))%全部值求和
%d
X_sort=sort(X)%按列升序
X_sort1=sort(X,2,'descend')%按行降序
2.
a)对表1使用3次样条插值计算0~90度内整数点的正弦值,0~75度内整数点的正
切值。
b)对表1使用5次多项式拟合方法计算0~90度内整数点的正弦值,0~75度内整数
点的正切值。
c)对a)和b)的相应计算结果进行比较,绘出两种方法的误差曲线。
表1
%a 3次样条插值
disp('3次样条插值')
x1=0:0.1:pi/2;
y1=sin(x1);
y1_0=interp1(x1,y1,0,'spline')
y1_15=interp1(x1,y1,pi/12,'spline')
y1_30=interp1(x1,y1,pi/6,'spline')
y1_45=interp1(x1,y1,pi/4,'spline')
y1_60=interp1(x1,y1,pi/3,'spline')
y1_75=interp1(x1,y1,5*pi/12,'spline')
y1_90=interp1(x1,y1,pi/2,'spline')
y2=tan(x1);
y2_0=interp1(x1,y2,0,'spline')
y2_15=interp1(x1,y2,pi/12,'spline')
y2_30=interp1(x1,y2,pi/6,'spline')
y2_45=interp1(x1,y2,pi/4,'spline')
y2_60=interp1(x1,y2,pi/3,'spline')
y2_75=interp1(x1,y2,5*pi/12,'spline')
%b 5次多项式拟合
disp('5次多项式拟合')
x2=0:pi/12:pi/2;
y=[0 0.2588 0.5000 0.7071 0.8660 0.9659 1.0000]; y1=polyfit(x2,y,5)
x3=0:pi/12:5*pi/12;
ya=[0 0.2679 0.5774 1.0000 1.7320 3.7320];
y2=polyfit(x3,ya,5)
%c 误差曲线
a_sin=[y1_0 y1_15 y1_30 y1_45 y1_60 y1_75 y1_90]-y a_tan=[y2_0 y2_15 y2_30 y2_45 y2_60 y2_75]-ya; subplot(2,1,1);
plot(x2,a_sin,'-*');
title('a_sin');
axis([0,pi/2,-0.39* 1.0e-004,0.28* 1.0e-004]); subplot(2,1,2);
plot(x3,a_tan,'-o');
title('a_tan');
axis([0,5*pi/12,-0.026,0.003]);
xc=0:0.1:pi/2;
yc_sin=polyval(y1,xc)-sin(xc);
xc1=0:0.1:5*pi/12;
yc_tan=polyval(y2,xc1)-tan(xc1);
subplot(2,1,1);
plot(xc,yc_sin,'-*');
title('yc_sin');
axis([0,pi/2,-0.33* 1.0e-004,0.04* 1.0e-004]); subplot(2,1,2); plot(xc1,yc_tan,'-o'); title('yc_tan');
axis([0,5*pi/12,-0.01,0.062]);
3. 已知(),0t
h t e t -=≥,取点数N=64,对t 从0~5秒进行采样,用FFT 做快速傅立叶
变换,并绘制相应的振幅-频率图。
N=64; T=5;
t=linspace(0,T,N); x=exp(-t); dt=t(2)-t(1); f=1/dt; X=fft(x); F=X(1:N/2+1); f=f*(0:N/2)/N; plot(f,abs(F),'-*') xlabel('Frequency');
ylabel('|F(k)|')
4. 有两个多项式()4
3
23513P x x x x =-++,()2
58Q x x x =++,求()P x 、
()()P x Q x 、()()/P x Q x 的导数。
disp('p(x)的导数系数为:') p=[2 -3 0 5 13]; yp=polyder(p)
disp('p(x)q(x)的导数系数为:') q=[1 5 8]; pq=polyder(p,q)
disp('p(x)/q(x)的导数求解') [a,b]=polyder(p,q)
5. 有三个多项式()4321245p x x x x =+++,()22p x x =+,()2323p x x x =++,求
()()()()123p x p x p x p x =+以及()0p x =的根。
p1=[1 2 4 0 5]; p2=[1 2]; p3=[0 1 2 3]; p4=conv(p2,p3); p=p1+p4 x=roots(p)
三.实验感想
通过本次试验,使我进一步的了解了matlab 在数据分析和多项式计算中的强大优越点,
非常好用,而且使我更有兴趣继续学习matlab 这门课程。