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

合集下载

Matlab的多项式运算和数据分析

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数据分析与多项式计算.

第三章MATLAB数据分析与多项式计算.
说明: 函数conv(P1,P2)用于求多项式P1和P2的乘积。这里, P1、P2是两个多项式系数向量。
函数[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数据分析与计算

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:多项式运算

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讲MA上的较大元素构成的 新矩阵p。
第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实验一: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多项式插值与数据拟合

matlab在科学计算中的应用5多项式插值与数据拟合
• 取n=10,用Lagrange插值法进行插值计算。
>> 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=

实验五 用Matlab数据拟合

实验五 用Matlab数据拟合

2. 已知观测数据点如表所示 x 1.6 2.7 1.3 4.1 3.6 2.3 y 17.7 49 13.1 189.4 110.8 34.5
0.6
4
4.9
409.1
3
65
2.4
36.9
求a, b, c的值, 使得曲线 f(x)=aex+bsin x+c lnx 与已知数据 点在最小二乘意义上充分接近.
例4 已知观测数据点如表所示
x 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 y 3.1 3.27 3.81 4.5 5.18 6 7.05 8.56 9.69 11.25 13.17 求三个参数 a, b, c的值, 使得曲线 f(x)=aex+bx2+cx3 与 已知数据点在最小二乘意义上充分接近.
1.55
500 106
2.47
2. 93
3. 03
2.89

1000 106 1500 106 2000 106 2375 106
3 1.953 103 1.517 103 1.219 10
/ / N / m 2 3.103 103 2.465 103
解: 描出散点图, 在命令窗口输入: t=[0:1:16] y=[30.0 29.1 28.4 28.1 28.0 27.7 27.5 27.2 27.0 26.8 26.5 26.3 26.1 25.7 25.3 24.8 24.0] plot(t,y,'*')
a=polyfit(t,y,1) a= -0.3012 29.3804 hold on
beta
= 3.0022 4.0304 0.9404

MATLAB程序设计教程总结

MATLAB程序设计教程总结

MATLAB程序设计教程总结MATLAB程序设计教程总结MATLAB程序设计教程总结一、MATLAB操作基础1、MATLAB的主要功能:(1)数值计算和符号计算功能(2)绘图功能(3)编辑语言功能(4)拓展功能2、MATLAB的安装为执行安装盘上的setp.exe文件来启动安装过程,然后按照系统提示进行操作即可。

3、MATLAB的六种操作界面:主窗口、命令窗口、工作空间窗口、当前目录窗口、命令历史窗口、start按钮。

4、MATLAB可通过path命令或对话框设置搜索路径。

5、进入MATLAB帮助界面的3种方法:(1)单击MATLAB主窗口工具栏中的help按钮(2)选择help菜单中前4项的任意一项(3)在命令窗口中输入helpwith、helpdesk或doc命令6、Help、lookfor及模糊查询为MATLAB帮助命令二、MATLAB矩阵及计算1、在MATLAB中变量名是以字母开头,后接字母、下划线的字符序列,最多允许有63个字符,且变量区分大小写,关键字和函数名不能作为变量名。

2、预定义变量:ans、eps、pi、i、j、inf、Inf、NaN、nan、nargin、nargout、realmax、realmin、lasterr、lastwarn。

3、Clear命令删除工作空间中的变量,who和whos用于显示在工作空间中一直驻留的变量名清单。

4、数据输出格式有:formatshort、formatshorte、formatlong、formatlonge、formatbank、formathex、formatt。

5、矩阵的拆分:(1)利用冒号表达式获得子矩阵(2)利用空矩阵删除矩阵的元素(3)利用reshpe(A,m,n)函数可以改变矩阵形状.6、特殊矩阵:zeros,ones,eye,rand.randn,magic(n),vander(n),hilb(n)7、算术运算包括基本算数运算、点运算和关系运算符。

第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行的各元素乘积。
例5-4 求矩阵A的每行元素的乘积和全部元素 的乘积。
5.2.2 二维数据插值
在MATLAB中,提供了解决二维插值问 题的函数interp2,其调用格式为: Z1=interp2(X,Y,Z,X1,Y1,'method') 其中X,Y是两个向量,分别描述两个参数 的采样点,Z是与参数采样点对应的函数值, X1,Y1是两个向量或标量,描述欲插值的点。 Z1是根据相应的插值方法得到的插值结果。 method的取值与一维插值函数相同。X,Y,Z 也可以是矩阵形式。 同样,X1,Y1的取值范围不能超出X,Y的 给定范围,否则,会给出“NaN”错误。
3. 两个向量或矩阵对应元素的比较 函数max和min还能对两个同型的向量或 矩阵进行比较,调用格式为: (1) U=max(A,B):A,B是两个同型的向量 或矩阵,结果U是与A,B同型的向量或矩阵, U的每个元素等于A,B对应元素的较大者。 (2) U=max(A,n):n是一个标量,结果U 是与A同型的向量或矩阵,U的每个元素等于 A对应元素和n中的较大者。

(完整word)Matlab实验报告

(完整word)Matlab实验报告

实验一:Matlab操作环境熟悉一、实验目的1.初步了解Matlab操作环境.2.学习使用图形函数计算器命令funtool及其环境。

二、实验内容熟悉Matlab操作环境,认识命令窗口、内存工作区窗口、历史命令窗口;学会使用format 命令调整命令窗口的数据显示格式;学会使用变量和矩阵的输入,并进行简单的计算;学会使用who和whos命令查看内存变量信息;学会使用图形函数计算器funtool,并进行下列计算:1.单函数运算操作。

求下列函数的符号导数(1)y=sin(x);(2) y=(1+x)^3*(2-x);求下列函数的符号积分(1)y=cos(x);(2)y=1/(1+x^2);(3)y=1/sqrt(1—x^2);(4)y=(x1)/(x+1)/(x+2)求反函数(1)y=(x-1)/(2*x+3); (2) y=exp(x);(3) y=log(x+sqrt(1+x^2));代数式的化简(1)(x+1)*(x-1)*(x-2)/(x-3)/(x—4);(2)sin(x)^2+cos(x)^2;(3)x+sin(x)+2*x—3*cos(x)+4*x*sin(x);2.函数与参数的运算操作。

从y=x^2通过参数的选择去观察下列函数的图形变化(1)y1=(x+1)^2(2)y2=(x+2)^2(3) y3=2*x^2 (4) y4=x^2+2 (5) y5=x^4 (6) y6=x^2/2 3.两个函数之间的操作求和(1)sin(x)+cos(x) (2) 1+x+x^2+x^3+x^4+x^5乘积(1)exp(—x)*sin(x) (2) sin(x)*x商(1)sin(x)/cos(x); (2) x/(1+x^2); (3) 1/(x—1)/(x—2); 求复合函数(1)y=exp(u) u=sin(x) (2) y=sqrt(u) u=1+exp(x^2)(3) y=sin(u) u=asin(x) (4) y=sinh(u) u=-x实验二:MATLAB基本操作与用法一、实验目的1.掌握用MATLAB命令窗口进行简单数学运算。

第6章 MATLAB数据分析与多项式计算_习题答案教学提纲

第6章  MATLAB数据分析与多项式计算_习题答案教学提纲

第6章M A T L A B数据分析与多项式计算_习题答案精品资料第6章 MATLAB数据分析与多项式计算习题6一、选择题1.设A=[1,2,3,4,5;3,4,5,6,7],则min(max(A))的值是()。

BA.1 B.3 C.5 D.72.已知a为3×3矩阵,则运行mean(a)命令是()。

BA.计算a每行的平均值 B.计算a每列的平均值C.a增加一行平均值 D.a增加一列平均值3.在MATLAB命令行窗口输入下列命令:>> x=[1,2,3,4];>> y=polyval(x,1);则y的值为()。

DA.5 B.8 C.24 D.104.设P是多项式系数向量,A为方阵,则函数polyval(P,A)与函数polyvalm(P,A)的值()。

DA.一个是标量,一个是方阵 B.都是标量C.值相等 D.值不相等5.在MATLAB命令行窗口输入下列命令:>> A=[1,0,-2];>> x=roots(A);则x(1)的值为()。

CA.1 B.-2 C.1.4142 D.-1.41426.关于数据插值与曲线拟合,下列说法不正确的是()。

AA.3次样条方法的插值结果肯定比线性插值方法精度高。

B.插值函数是必须满足原始数据点坐标,而拟合函数则是整体最接近原始数据点,而不一定要必须经过原始数据点。

C.曲线拟合常常采用最小二乘原理,即要求拟合函数与原始数据的均方误差达到极小。

D.插值和拟合都是通过已知数据集来求取未知点的函数值。

二、填空题1.设A=[1,2,3;10 20 30;4 5 6],则sum(A)= ,median(A)= 。

[15 27 39],[4 5 6[2.向量[2,0,-1]所代表的多项式是。

2x2-1仅供学习与交流,如有侵权请联系网站删除谢谢2精品资料3.为了求ax2+bx+c=0的根,相应的命令是(假定a、b、c已经赋值)。

MATLAB数据分析与多项式计算实验

MATLAB数据分析与多项式计算实验
>> Ni=1:100;
>> Yi=polyval(p,Ni)
Yi =
Columns 1 through 12
1.0790 1.3671 1.6386 1.8946 2.1360 2.3636 2.5784 2.7812 2.9728 3.1539 3.3252 3.4876
Columns 13 through 24
表8-2lg(x)在11个采样点的函数值
x
1
11
21
31
41
51
61
71
81
91
101
lg(x)
0
1.0414
1.3222
1.4914
1.6128
1.7076
1.7853
1.8513
1.9085
1.9590
2.0043
试求lg(x)的5次拟合多项式p(x),并绘制出lg(x)和p(x)在[1,101]区间的函数曲线。
5、有三个多项式 , , ,试进行以下操作:
(1)求
(2)求 的根
>> A=[1,2,4,0,5];
>> B=[1,2];
>> C=[1,2,3];
>> D=conv(B,C)
D =
1 4 7 6
>> D1=[0,1,4,7,6];
>> P=A+D1
P =
1 3 8 7 11
>> X=roots(p)
3.6415 3.7877 3.9267 4.0592 4.1856 4.3064 4.4222 4.5334 4.6405 4.7437 4.8435 4.9403

数值分析matlab实验报告

数值分析matlab实验报告

数值分析matlab实验报告数值分析 Matlab 实验报告一、实验目的数值分析是研究各种数学问题数值解法的学科,Matlab 则是一款功能强大的科学计算软件。

本次实验旨在通过使用 Matlab 解决一系列数值分析问题,加深对数值分析方法的理解和应用能力,掌握数值计算中的误差分析、数值逼近、数值积分与数值微分等基本概念和方法,并培养运用计算机解决实际数学问题的能力。

二、实验内容(一)误差分析在数值计算中,误差是不可避免的。

通过对给定函数进行计算,分析截断误差和舍入误差的影响。

例如,计算函数$f(x) =\sin(x)$在$x = 05$ 附近的值,比较不同精度下的结果差异。

(二)数值逼近1、多项式插值使用拉格朗日插值法和牛顿插值法对给定的数据点进行插值,得到拟合多项式,并分析其误差。

2、曲线拟合采用最小二乘法对给定的数据进行线性和非线性曲线拟合,如多项式曲线拟合和指数曲线拟合。

(三)数值积分1、牛顿柯特斯公式实现梯形公式、辛普森公式和柯特斯公式,计算给定函数在特定区间上的积分值,并分析误差。

2、高斯求积公式使用高斯勒让德求积公式计算积分,比较其精度与牛顿柯特斯公式的差异。

(四)数值微分利用差商公式计算函数的数值导数,分析步长对结果的影响,探讨如何选择合适的步长以提高精度。

三、实验步骤(一)误差分析1、定义函数`compute_sin_error` 来计算不同精度下的正弦函数值和误差。

```matlabfunction value, error = compute_sin_error(x, precision)true_value = sin(x);computed_value = vpa(sin(x), precision);error = abs(true_value computed_value);end```2、在主程序中调用该函数,分别设置不同的精度进行计算和分析。

(二)数值逼近1、拉格朗日插值法```matlabfunction L = lagrange_interpolation(x, y, xi)n = length(x);L = 0;for i = 1:nli = 1;for j = 1:nif j ~= ili = li (xi x(j))/(x(i) x(j));endendL = L + y(i) li;endend```2、牛顿插值法```matlabfunction N = newton_interpolation(x, y, xi)n = length(x);%计算差商表D = zeros(n, n);D(:, 1) = y';for j = 2:nfor i = j:nD(i, j) =(D(i, j 1) D(i 1, j 1))/(x(i) x(i j + 1));endend%计算插值结果N = D(1, 1);term = 1;for i = 2:nterm = term (xi x(i 1));N = N + D(i, i) term;endend```3、曲线拟合```matlab%线性最小二乘拟合p = polyfit(x, y, 1);y_fit_linear = polyval(p, x);%多项式曲线拟合p = polyfit(x, y, n);% n 为多项式的次数y_fit_poly = polyval(p, x);%指数曲线拟合p = fit(x, y, 'exp1');y_fit_exp = p(x);```(三)数值积分1、梯形公式```matlabfunction T = trapezoidal_rule(f, a, b, n)h =(b a) / n;x = a:h:b;y = f(x);T = h ((y(1) + y(end))/ 2 + sum(y(2:end 1)));end```2、辛普森公式```matlabfunction S = simpson_rule(f, a, b, n)if mod(n, 2) ~= 0error('n 必须为偶数');endh =(b a) / n;x = a:h:b;y = f(x);S = h / 3 (y(1) + 4 sum(y(2:2:end 1))+ 2 sum(y(3:2:end 2))+ y(end));end```3、柯特斯公式```matlabfunction C = cotes_rule(f, a, b, n)h =(b a) / n;x = a:h:b;y = f(x);w = 7, 32, 12, 32, 7 / 90;C = h sum(w y);end```4、高斯勒让德求积公式```matlabfunction G = gauss_legendre_integration(f, a, b)x, w = gauss_legendre(5);%选择适当的节点数t =(b a) / 2 x +(a + b) / 2;G =(b a) / 2 sum(w f(t));end```(四)数值微分```matlabfunction dydx = numerical_derivative(f, x, h)dydx =(f(x + h) f(x h))/(2 h);end```四、实验结果与分析(一)误差分析通过不同精度的计算,发现随着精度的提高,误差逐渐减小,但计算时间也相应增加。

数值分析matlab数值试验

数值分析matlab数值试验

实验一:误差传播及算法稳定性实验1.21、试验程序:function charpt1_2% 误差传播及算法稳定性实验clc;clear all;promps={'请选择递推关系式,若选E1=1/e,En=1-nEn-1,请输入1,若选EN=0,En-1=(1-En)/n,请输入2:'};I=1;while Iresult=inputdlg(promps,'charpt1_2',1,{'1'});Nb=str2num(char(result));if ((Nb~=1)|(Nb~=2))I=0;endend%%%%%%%%%%%%%%%%%I=1;while Iresult=inputdlg('请输入递推步数 n>=1:','charpt1_2',1,{'10'});steps=str2num(char(result));if (steps>0)&(steps==fix(steps)) %% 如果steps大于0且为整数I=0;endend%%%%%%%%%%%%%%%%%result=inputdlg('请输入计算中所采用的有效数字位数n:','charpt1_2',1,{'5'});Sd=str2num(char(result));format long %% 设置显示精度result=zeros(1,steps); %% 存储计算结果err=result; %% 存储计算的绝对误差值func=result; %% 存储用quadl计算的近似值%%%%%%%%%%%%%%%%%%% 用quadl计算积分近似值for n=1:stepsfun=@(x) x.^n.*exp(x-1);func(n)= quadl(fun,0,1);end%%%%%%%%%%%%%%%%%%% 用自定义算法计算if(Nb==1)digits(Sd);result(1)=subs(vpa(1/exp(1)));for n=2:stepsresult(n)=subs(vpa(1-n*result(n-1)));enderr=abs(result-func);elseif(Nb==2)digits(Sd);result(steps)=0;for n=(steps-1):-1:1result(n)=subs(vpa((1-result(n+1))/(n+1)));enderr=abs(result-func);end%%%%%%%%%%%%%%%%%%% 输出结果数值及图像clf;disp('库函数计算值:');disp(sprintf('%e ',func));disp('递推值:');disp(sprintf('%e ',result));disp('误差值:');disp(sprintf('%e ',err));if(Nb==1)plot([1:steps],result,'-rs',[1:steps],func,':k*',[1:steps],err,'-.bo' );elseif(Nb==2)plot([steps:-1:1],result,'-rs',[steps:-1:1],func,':k*',[steps:-1:1],e rr,'-.bo');endxlabel('第n步');ylabel('计算值');legend('自定义算法结果','库函数计算结果','误差值');grid on2、试验结果:选择递推关系式1,递推步数为10,有效数字为5位,计算结果如下:库函数计算值:3.678794e-001 2.642411e-001 2.072766e-001 1.708934e-001 1.455329e-0011.268024e-001 1.123836e-001 1.009323e-001 9.161229e-002 8.387707e-002递推值:3.678800e-001 2.642400e-001 2.072800e-001 1.708800e-001 1.456000e-0011.264000e-001 1.152000e-001 7.840000e-0022.944000e-001 -1.944000e+000误差值:5.588280e-007 1.117662e-006 3.352927e-006 1.341222e-0056.705713e-005 4.023702e-004 2.816427e-003 2.253226e-002 2.027877e-001 2.027877e+00012345678910第n 步计算值选择递推关系式2,递推步数为10,有效数字为5位,计算结果如下: 库函数计算值:3.678794e-001 2.642411e-001 2.072766e-001 1.708934e-001 1.455329e-001 1.268024e-001 1.123836e-001 1.009323e-001 9.161229e-002 8.387707e-002 递推值:3.678800e-001 2.642400e-001 2.072800e-001 1.708900e-001 1.455300e-001 1.267900e-001 1.125000e-001 1.000000e-001 1.000000e-001 0.000000e+000 误差值:5.588280e-007 1.117662e-006 3.352927e-006 3.412224e-006 2.942873e-006 1.237016e-005 1.164270e-004 9.322618e-004 8.387707e-003 8.387707e-002第n 步计算值选择递推关系式1,递推步数为10,有效数字为6位,计算结果如下: 库函数计算值:3.678794e-001 2.642411e-001 2.072766e-001 1.708934e-001 1.455329e-001 1.268024e-001 1.123836e-001 1.009323e-001 9.161229e-002 8.387707e-002 递推值:3.678790e-001 2.642420e-001 2.072740e-001 1.709040e-001 1.454800e-001 1.271200e-001 1.101600e-001 1.187200e-001 -6.848000e-002 1.684800e+000 误差值:4.411720e-007 8.823378e-007 2.647073e-006 1.058778e-0055.294287e-005 3.176298e-004 2.223573e-003 1.778774e-002 1.600923e-001 1.600923e+00012345678910第n 步计算值选择递推关系式2,递推步数为10,有效数字为6位,计算结果如下: 库函数计算值:3.678794e-001 2.642411e-001 2.072766e-001 1.708934e-001 1.455329e-001 1.268024e-001 1.123836e-001 1.009323e-001 9.161229e-002 8.387707e-002 递推值:3.678800e-001 2.642410e-001 2.072770e-001 1.708930e-001 1.455360e-001 1.267860e-001 1.125000e-001 1.000000e-001 1.000000e-001 0.000000e+000 误差值:5.588280e-007 1.176622e-007 3.529274e-007 4.122239e-007 3.057127e-006 1.637016e-005 1.164270e-004 9.322618e-004 8.387707e-003 8.387707e-002第n 步计算值3、结果分析:很明显第二种递推式结果要比第一种好,式1在第七步后有明显误差,而式2在第三步后基本与近似解一致。

matlab实习报告

matlab实习报告

matlab实习报告实习总结报告;学校名称;实习类型学学软件MTLAB实习起止时间年月日至年;所在院(系);班级;学生姓名;学号;年月日;实习总结报告;2013年7月8日至7月26日,我们应数专业进行;这次认识实习分为两大部分:理论知识学习和上机实践;一、实习目的;这次实习的目的是使我们掌握MATLAB的基本知识;二、实习内容;(一)操作基础;MATLAB是一种用于科学计算的高实习总结报告学校名称实习类型学学软件MTLAB 实习起止时间年月日至年月日指导教师所在院(系)班级学生姓名学号年月日实习总结报告2013年7月8日至7月26日,我们应数专业进行了为期3周的实习。

这次认识实习分为两大部分:理论知识学习和上机实践学习。

这次认识实习使我对专业知识有了一定的了解,知道以后的学习重点,感受工作环节,为自己将来走向社会打下基础。

一、实习目的这次实习的目的是使我们掌握MATLAB的基本知识,能运用MATLAB来编写程序,解决一般性的问题,使得我们在完成本课程学习后,掌握MATLAB的基本知识和初步的编程能力,为以后的学习和工作提供了一个非常有用的工具。

二、实习内容(一)操作基础MATLAB是一种用于科学计算的高性能语言。

它将计算、可视化和程序设计集成在一个非常容易的环境中,使用我们熟悉的数学符号表示问题与答案。

MAT LAB系统由5个主要部分组成,包括开发环境、MATLAB数学函数库、MATLAB语言、图形、MATLAB应用程序接口。

对于MATLAB的操作基础,应该学会启动和退出MATLAB、MATLAB的桌面工具和开发环境、命令窗口、历史窗口等等。

(二)矩阵及其运算MATLAB,即“矩阵实验室”,它是以矩阵为基本运算单元.因此,本书从最基本的运算单元出发,介绍MATLAB的命令及其用法.1.矩阵的表示:MATLAB的强大功能之一体现在能直接处理向量或矩阵。

当然首要任务是输入待处理的向量或矩阵。

不管是任何矩阵(向量),我们可以直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔,且空格个数不限;不同的行用分号(;)分隔。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 这门课程。

相关文档
最新文档