数值分析在生活中的应用举例及Matlab实现
实验数学五:MATLAB在数值计算中的应用
mesh(x0,y0,temps) 结果见图5.6
分别用线性性插值和三次样条插值求已知点的温度。
输入命令 :
19
>> t=interp2(x0,y0,temps,[1.5 2 2.5 3.5],[1.5 1.6 2 4.5],'liner')
t= 76.2500 70.2000 62.0000 NaN
>> T=interp2(x0,y0,temps,[1.5 2 2.5 3.5],[1.5 1.6 2 4.5],'spline')
T= 71.4531 65.5200 60.9688 188.8906
(2)以平滑数据,在x、y方向上每隔0.2个单位的地方 进行插值画出线性和三次样条插值的温度分布曲面图.
输入以下命令得温度的线性插值曲面图: >> x=1:0.2:5; >> y=1:0.2:3; >> z=interp2(x0,y0,temps,x',y,'linear'); >> mesh(x,y,z)
20
>> xlabel('x轴'); >> ylabel('y轴'); >> zlabel('z轴') >> title('线性插值曲面图') 结果见图5.7
而method为可选参数,有四种选择: ‘nearest’ 最邻近插值 ‘linear’ 线性插值
‘spline’ 三次样条插值
‘cubic’ 三次插值
缺省时, 是线性插值 17
例8:测得平板表面3×5网格点处的温度分别为: 82 81 80 82 84 79 63 61 65 81 84 84 82 85 86
一个数值分析在生活中的应用实例
数值分析在实际生活中的应用实例和matlab的实现一、建立回归模型1. 实例设某商品的需求量与消费者的平均收入、商品价格的统计数据如下,建立回归模型,预测平均收入为800、价格为6时的商品需求量.需求量10075807050659010011060收入10006001200500300400130011001300300价格5766875439选择纯二次模型,即2.源程序:直接用多元二项式回归:x1=[1000 600 1200 500 300 400 1300 1100 1300 300];x2=[5 7 6 6 8 7 5 4 3 9];y=[100 75 80 70 50 65 90 100 110 60]';x=[x1' x2'];rstool(x,y,'purequadratic')3.运行结果在左边图形下方的方框中输入800,右边图形下方的方框中输入6。
则画面左边的“Predicted Y ”下方的数据变为86.3971,即预测出平均收入为800、价格为6时的商品需求量为86.3971.在画面左下方的下拉式菜单中选”all ”, 则beta (回归系数)、rmse (剩余标准差)和residuals (残差)都传送到Matlab 工作区中.在Matlab 工作区中输入命令: beta, rmse得结果:beta =110.5313 0.1464 -26.5709 -0.0001 1.8475 rmse =4.5362故回归模型为:2221218475.10001.05709.261464.05313.110x x x x y +--+= 剩余标准差为4.5362, 说明此回归模型的显著性较好.。
Matlab数学软件应用举例
MATLAB的发展史
70 年代中期 , 美国的穆勒教授在给学生开线 性代数课时,为了让学生能使用子程序库又不至于
在编程上花费过多的时间,便为学生编写了使用子
程序的接口程序。他将这个接口程序取名为 MATLAB,意为“矩阵实验室”。
80 年代初他们又采用 c 语言编写了 MATLAB 的
核心。目前 MATLAB 巳成为国际公认的最优秀的数
注释和标点
1. 百分号后的所有文字为注释,不参与运算。
例:syms x y
%定义符号变量x ,y
2. 多条命令可以放在同一行,用逗号或分号分隔,逗号表示要显示 该语句运行结果,分号表示不显示运行结果。 例:x=[2,3];y=[4,5];z1=x+y, z2=x’*y 结果:z1 = z2 = 6 8 12 8 10 15
(1) clc (2) clear (3) clf (4) who (5) whos (6) delete <文件名> (7) whech <文件名>
命令行的编辑与运行
( 9 ) clear all 从工作空间清除所有变量和函数 (10) help <命令名> 查询所列命令的帮助信息 (11) save name 保存工作空间变量到文件 name.mat (12) save name x y 保存工作空间变量 x y到文件 name.mat (13) load name 下载‘name’文件中的所有变量到工作空 间 (14) load name x y 下载‘name’文件中的变量x y到工作空间 (15) diary name1.m 保存工作空间一段文本到文件 name1.m … diary off (16) type name.m 在工作空间查看name.m文件内容 (17) what 列出当前目录下的m文件和mat文件
matlab在数值分析中的应用
• 例:
>> syms t x >> x=dsolve('Dx=x*(1-x^2)') x= [ 1/(1+exp(-2*t)*C1)^(1/2)] [ -1/(1+exp(-2*t)*C1)^(1/2)]
>> syms t x; x=dsolve('Dx=x*(1-x^2)+1') Warning: Explicit solution could not be found; implicit solution returned. > In D:\MATLAB6p5\toolbox\symbolic\dsolve.m at line 292 x= t-Int(1/(a-a^3+1),a=``..x)+C1=0 故只有部分非线性微分方程有解析解。
• 求解: >> x0=[1.2; 0; 0; -1.04935751]; >> tic, [t,y]=ode45('apolloeq',[0,20],x0); toc elapsed_time = 0.8310 >> length(t), >> plot(y(:,1),y(:,3)) ans = 689
MATLAB在数值分析中的应用
等,它们的原函数不能用初等函数表示成 有限形式。
11.1.3定积分问题
原因之二:有些被积函数的原函数过于复 杂,计算不便。例如
f ( x) x 的一个原函数是
F ( x) x
3 2 2
2
2x 3
2
2 x 3 3x 2 x 3 9 ln( 2 x 2 x2 3) 4 16 16 2
对一些典型的微分方程,如可分离变量方 程、一阶线性方程等,有可能找出它们的 一般解表达式,然后用初始条件确定表达 式中的任意常数,这样即能确定解 但是对于常微分方程初值问题: y ' 2x y y (0) 0 则无法求出一般解
11.2 多项式与插值
• 来源于实际、又广泛用于实际。 • 多项式插值的主要目的是用一个多项式 拟合离散点上的函数值,使得可以用该 多项式估计数据点之间的函数值。 • 可导出数值积分方法,有限差分近似 • 关注插值多项式的表达式、精度、选点 效果。
• 例 >> a=[2,-5,6,-1,9]; b=[3,-90,-18]; >> c=conv(a,b) c= 6 -195 432 -453 9 -792 -162 >> [q,r]=deconv(c,b) q= 2 -5 6 -1 9 r= 0 0 0 0 0 0 0 >> poly2sym(c) ans = 6*x^6-195*x^5+432*x^4-453*x^3+9*x^2-792*x-162
t=interp1(hours,temps,h)
plot(hours,temps,'+',h,t)
title('线性插值下的温度曲线'),
数值分析软件及应用
数值分析软件及应用数值分析软件是一种专门用于计算和分析数值问题的软件工具。
它以数学模型为基础,利用数值计算方法对问题进行求解,可以广泛应用于科学研究、工程设计、金融分析等领域。
下面我将介绍一些常见的数值分析软件及其应用。
1. Matlab:Matlab是一种强大的数值计算和科学编程环境,广泛应用于数值计算、数据分析、信号处理、控制系统设计等领域。
它提供了丰富的数值计算库,可以进行线性代数计算、非线性优化、微积分、常微分方程等多种数值计算任务。
Matlab还具有良好的可视化功能,可以绘制高质量的图表和三维图形,方便用户进行数据可视化和结果展示。
2. ANSYS:ANSYS是一种广泛应用于工程领域的数值分析软件,主要用于有限元分析和计算流体力学。
它可以模拟各种不同工程问题,例如结构力学、热传导、电磁场、流体流动等。
ANSYS具有强大的建模和分析功能,可以帮助工程师快速分析和优化设计方案,提高产品性能和可靠性。
3. COMSOL:COMSOL Multiphysics是一种基于有限元法的多物理场仿真软件,可以模拟多种物理学现象的耦合效应。
它适用于各种科学和工程领域,包括电磁场、热传导、流体流动、声学、化学反应等。
COMSOL提供了丰富的物理模型和求解器选项,用户可以根据自己的需求进行自定义建模和分析。
4. Origin:Origin是一种专门用于数据分析和可视化的软件工具。
它提供了丰富的统计分析和数据处理功能,例如回归分析、方差分析、多元分析等。
Origin 还具有强大的绘图和图像处理能力,可以绘制各种类型的图表和图像,从而帮助用户更好地理解和展示数据。
5. Mathematica:Mathematica是一种综合的科学计算软件,可以进行符号计算、数值计算、数据可视化等任务。
它具有强大的数学引擎和丰富的计算库,可以处理各种类型的数学问题,包括代数、微积分、离散数学等。
Mathematica 还具有优秀的可视化能力,用户可以方便地与计算结果进行交互和探索。
Matlab技术的实际应用案例解析
Matlab技术的实际应用案例解析随着计算机技术的发展,Matlab作为一种高级技术语言,被广泛应用于多个领域。
无论是在科研领域还是工程实践中,Matlab都扮演着重要的角色。
本文将通过几个实际应用案例,探讨Matlab技术在不同领域的应用,以期给读者提供一些启示和参考。
一、图像处理领域图像处理是Matlab的一项重要应用领域。
利用Matlab提供的强大的图像处理工具箱,可以实现各种功能,例如图像增强、滤波、分割和识别等。
以下将介绍一个实际应用案例。
案例一:肿瘤图像分割肿瘤图像的分割对于医学诊断非常关键。
在某医院的研究中,研究人员利用Matlab进行了肿瘤图像的分割工作。
首先,他们先对肿瘤图像进行预处理,包括降噪和增强等操作。
然后,利用Matlab提供的图像分割算法,将肿瘤与周围组织分离出来。
最后,通过对分割后的图像进行计算,可以得到肿瘤的大小、形状等信息,为医生提供诊断依据。
二、信号处理领域信号处理是Matlab的另一个重要应用领域。
通过利用Matlab提供的信号处理工具箱,可以实现信号的滤波、谱分析、峰值检测等功能。
以下将介绍一个实际应用案例。
案例二:语音信号增强在通信领域,语音信号是一种常见的信号类型。
在某通信公司的项目中,研发团队利用Matlab对语音信号进行增强。
首先,他们通过Matlab提供的滤波器设计算法,设计了一种高效的降噪滤波器。
然后,他们利用该滤波器对采集到的语音信号进行滤波处理,去除噪声成分。
最后,通过对处理后的语音信号进行主观听感和客观评价,证明了该算法的有效性。
三、控制系统领域Matlab在控制系统领域的应用也非常广泛。
通过Matlab提供的控制系统工具箱,可以进行控制系统的建模、仿真和优化等操作。
以下将介绍一个实际应用案例。
案例三:智能交通信号优化在城市交通系统中,智能交通信号优化是一个重要的研究方向。
在某城市的交通管理局的项目中,研究人员利用Matlab进行了智能交通信号优化的仿真研究。
MATLAB在数值分析中的应用
MATLAB在数值分析中的应用
matlab是一种高级计算及可视化软件,在数值分析方面有着广泛的应用。
其特点是完整的数学和统计功能,强大的可视化和计算能力,易于使用的环境和脚本语言,使得matlab在数值分析领域变得非常流行。
首先,matlab具有强大的符号计算功能,可以求解复杂的多项式及微分方程,进行多项式拟合和矩阵计算等,从而支持数值分析中的基本操作。
其次,matlab还提供了一系列的工具箱,如数值分析工具箱,控制系统工具箱和数据分析工具箱等,这些工具箱可以作为matlab的拓展工具,为数值分析提供支持,有助于研究者解决复杂的问题。
此外,matlab 在多种算法的支持上也拥有全面的支持,包括线性规划、非线性规划、自动微分、数值积分、拟合优化、最优化及矩阵分解,可以用于几乎所有的数值分析任务。
最后,matlab还提供了极强的可视化功能,可以处理矩阵、标量和向量的可视化,包括3D和4D图表,可以帮助研究者快速分析结果。
因此,matlab支持的数值分析功能强大,提供了非常丰富的工具箱和算法支持,并有强大的可视化功能,使其在数值分析领域得到了广泛应用。
MATLAB在数据分析中的应用
MATLAB在数据分析中的应用数据分析是一个庞大的领域,不同类型的数据需要不同的分析工具和技术。
MATLAB作为一种用于数学计算和数据处理的工具,具有广泛的应用。
本文将介绍MATLAB在不同数据分析领域中的应用。
一、统计分析MATLAB提供了许多用于统计分析的函数和工具。
例如,可以使用boxplot函数绘制箱线图以显示数据的分布情况;可以使用histogram函数绘制直方图以分析数据的分布情况;可以使用mean和std函数计算数据的平均值和标准差。
此外,MATLAB还提供了用于回归分析、假设检验和方差分析等的函数和工具。
二、信号处理信号处理是指将信号转换为更有用的形式或提取信号中的特定信息。
MATLAB具有强大的信号处理工具箱,可以进行卷积、滤波、傅里叶变换和功率谱估计等操作。
通过这些工具,可以对音频、图像、视频等信号进行处理和分析,并提取其中的特征或信息。
三、机器学习机器学习是一种通过对大量数据进行学习来自动获取知识和规律的方法。
MATLAB提供了丰富的机器学习工具箱,包括用于分类、聚类、回归、降维和深度学习的函数和工具。
这些工具可以应用于各种数据集,如图像、文本和声音等。
四、金融分析金融分析是指利用金融数据进行分析和决策。
MATLAB提供了许多用于金融分析的工具箱和函数,包括用于投资组合分析、风险管理和衍生品定价的工具。
这些工具可以帮助投资者、金融分析师和风险管理人员做出更好的决策。
五、图像处理图像处理是指对图像进行处理和分析,如去噪、边缘检测、图像增强和目标识别等。
MATLAB提供了丰富的图像处理工具箱,可以用于分析、处理和可视化各种类型的图像。
这些工具可以应用于各种领域,如医疗、自动驾驶和安全监控等。
六、生物信息学生物信息学是指将计算机科学和统计学等技术应用于生命科学中的数据分析和研究。
MATLAB提供了用于生物数据分析的工具箱和函数,包括用于基因识别、蛋白质序列分析和生物图像处理的工具。
MATLAB的常用应用总结
§7 MATLAB 的应用7.1 MATLAB 在数值分析中的应用插值与拟合是来源于实际、又广泛应用于实际的两种重要方法。
随着计算机的不断发展及计算水平的不断提高,它们已在国民生产和科学研究等方面扮演着越来越重要的角色。
下面对插值中分段线性插值、拟合中的最为重要的最小二乘法拟合加以介绍。
7.1.1 分段线性插值所谓分段线性插值就是通过插值点用折线段连接起来逼近原曲线,这也是计算机绘制图形的基本原理。
实现分段线性插值不需编制函数程序,MA TLAB 自身提供了内部函数interp1其主要用法如下:interp1(x,y,xi) 一维插值◆ yi=interp1(x,y,xi)对一组点(x,y) 进行插值,计算插值点xi 的函数值。
x 为节点向量值,y 为对应的节点函数值。
如果y 为矩阵,则插值对y 的每一列进行,若y 的维数超出x 或 xi 的维数,则返回NaN 。
◆ yi=interp1(y,xi)此格式默认x=1:n ,n 为向量y 的元素个数值,或等于矩阵y 的size(y,1)。
◆ yi=interp1(x,y,xi,’method’)method 用来指定插值的算法。
默认为线性算法。
其值常用的可以是如下的字符串。
● nearest 线性最近项插值。
● linear 线性插值。
● spline 三次样条插值。
● cubic 三次插值。
所有的插值方法要求x 是单调的。
x 也可能并非连续等距的。
正弦曲线的插值示例:>> x=0:0.1:10;>> y=sin(x);>> xi=0:0.25:10;>> yi=interp1(x,y,xi);>> plot(x,y,’0’,xi,yi)则可以得到相应的插值曲线(读者可自己上机实验)。
Matlab 也能够完成二维插值的运算,相应的函数为interp2,使用方法与interpl 基本相同,只是输入和输出的参数为矩阵,对应于二维平面上的数据点,详细的用法见Matlab 联机帮助。
MATLAB使用教程(5)应用举例
2019/2/16 黄建华制作 4
例5.1 雨量预报方法的评价
对于问题二,我们认为公众的感受主要体现在预测 与实际之间偏差的大小程度,然而,实际测量值未知, 因此我们考虑在分级预报中加入准确概率的方式来实 现公众满意度的提高。我们认为雨量的实测值应该在 预测值点处服从正态分布,通过合理的假设和推导, 我们得到:正态分布的均值可以取为雨量预测值,不 同雨量分级区间上的方差可以近似取为对应区间上的 总偏差平方和的平均值。运用Matlab软件编程,可以 实现对每一个预报数据的预报内容的改变,并且通过 几个不同的数据体现程序运行所得到的结果。最后, 对模型的缺点进行了讨论和改进。
2019/2/16
黄建华制作
10
例5.1 雨量预报方法的评价
将文件全部拷贝在默认的work文件加下,运行程序sjzr.m:
2019/2/16
黄建华制作
11
例5.1 雨量预报方法的评价
2019/2/16
黄建华制作
12
例5.1 雨量预报方法的评价
程序huatu.m %画一个时点预测曲面图与实测散点图比较
2019/2/16
黄建华制作
3
例5.1 雨量预报方法的评价
模型的分析: 本题的关键主要是采用Matlab软件对所提供的数 据进行分析并得到主要结论。 对于问题一,采用load命令和循环结构实现数据文 件的载入,再从实测数据文件中提出实测点位置数据, 并且依次从预测数据文件中通过曲面拟合命令 griddata得到相应日期、时段、方法下的对应位置上 的预测估计值。然后分别计算两种预报方法下的实测 值和预测值的偏差并且求对应的总偏差平方和,根据 两个总偏差平方和的大小来得出两种方法的优劣比较, 通过Matlab程序的实现得到结果为:第一种方法比第 二种方法好。
2-MATLAB在数值分析中的应用
分段插值
一维插值:可以分为最近插值、线性插值、三次样 条插值,分段三次Hermite插值。 y=interp1(x0,y0,x) y=interp1(x0,y0,x,’method’) method= nearst: 最近插值 linear: 线性插值(默认值) spline: 分段三次样条插值 pchip:分段三次Hermite插值
-9-
Polyinterp(symbol)
symx =sym(‘x’) P = polyinterp(x0,y0,symx) pretty(P) P = simplify(P) P= x^3-2*x-5 8/3*z*(x-1)*(x-2)+1/2*x*(x-1)*(x-3)3*x*(x-2)*(x-3)-5/6*(-x+1)*(x-2)*(x-3)
0.5 0 1 2 3 4 5 6 7 8 9
-2-
插值和拟合
在平面上给定n个点(xk,yk),可以唯一确定一个最多n-1次 的多项式通过这些点,这个多项式叫插值多项式
P(xk ) = yk , k = 1,2,…,n Lagrange插值多项式
x xj P( x ) k 1 j k xk x j
2 3
sk ,0 yk sk ,2 P xk 2
sk ,1 dk sk ,3
hk 2P xk P xk 1
6 P xk 1 P xk 6hk
-21-
x = 1:6; y = [16 18 21 17 15 12];
Lagrange插值多项式基函数
P( x) c1 xn1 c2 xn2 ... cn1 x cn
n 1 x1 n 1 x2 x n 1 n n2 x1 n2 x2
MATLAB在实际生活中的应用小论文
MATLAB 在实际问题中的分析与应用自20世纪80年代以来,出现了多种科学计算语言,亦称数学软件,比较流行的有MATLAB 、Mathematical 、Maple 等。
因为他们具有功能强、效率高、简单易学等特点,在在许多领域等到广泛应用。
MATLAB 便是一种影响大、流行广的科学计算语言。
MATLAB 的语法规则简单,更加贴近人的思维方式。
MATLAB 是英文Matrix Laboratory(矩阵实验室)的缩写。
自1984年由美国Math Works 公司推向市场以来,得到了广泛的应用和发展。
在欧美各高等院校MATLAB 已经成为线性代数、自动控制理论、数字信号处理、时间序列分析、动态系统仿真、图像处理等诸多课程的基本教学工具,成为大学生、硕士生以及博士生必须掌握的基本技能。
在设计研究单位和工业部门,MATLAB 已被广泛的应用于研究和解决各种具体的工程问题。
近年来,MATLAB 在我国也开始流行,应用MATLAB 的单位和个人急剧增加。
可以预见,MATLAB 将在我国科学研究和工程应用中发挥越来越大的作用。
Mat lab 是当前数值计算方面应用地非常广泛的一种计算机软件,特别是在工程应用求解中发挥了重要作用。
其所具有的浅显易懂的编程语言、强大的绘图功能、大量的内部函数等都深深地吸引了我认真地去学习它。
同时在上《过程装备力学基础》时,其中涉及有很多的问题是超越方程、微积分的问题,难以用普通的线性方法求解,而Mat lab 在此方面有强大的功能,特别是超越方程的精确求解以及图形的绘制方面。
数学当中的绘制函数图象、绘制立体图形的交线(如绘制两个等直径圆柱体的交线)、求多项式的根等问题,这些问题如果依靠我们人工进行操作,则需要很多的时间和精力,当我们掌握了基本原理后,借助于MATLAB 进行解决则会大大提高效率和精确度。
仅举一些运用MATLAB 的例子。
常用控制命令:click :%清屏; clear :%清变量; save :%保存变量; load :%导入变量 一、利用公式直接进行赋值计算本金P 以每年n 次,每次i%的增值率(n 与i 的乘积为每年增值额的百分比)增加,当增加到r ×P 时所花费的时间T 为:(利用复利计息公式可得到下式))01.01ln(ln )01.01(i n rT i P P r nT +=⇒+=⨯(12,5.0,2===n i r )MATLAB 的表达形式及结果如下: >> r=2;i=0.5;n=12; %变量赋值 >> T=log(r)/(n*log(1+0.01*i)) 计算结果显示为:T = 11.5813即所花费的时间为T=11.5813 年。
数值分析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. 数值实例下面给定的是乌鲁木齐最近1个月早晨7:00左右(新疆时间)的天气预报所得到的温度,按照数据找出任意次曲线拟合方程和它的图像。
下面用MATLAB编程对上述数据进行最小二乘拟合。
下面用MATLAB编程对上述数据进行最小二乘拟合2、程序代码x=[1:1:30];y=[9,10,11,12,13,14,13,12,11,9,10,11,12,13,14,12,11,10,9,8,7,8,9,11,9,7,6,5,3,1];a1=polyfit(x,y,3) %三次多项式拟合%a2= polyfit(x,y,9) %九次多项式拟合%a3= polyfit(x,y,15) %十五次多项式拟合%b1=polyval(a1,x)b2=polyval(a2,x)b3=polyval(a3,x)r1= sum((y-b1).^2) %三次多项式误差平方和%r2= sum((y-b2).^2) %九次次多项式误差平方和%r3= sum((y-b3).^2) %十五次多项式误差平方和%plot(x,y,'*') %用*画出x,y图像%hold onplot(x,b1, 'r') %用红色线画出x,b1图像%hold onplot(x,b2, 'g') %用绿色线画出x,b2图像%hold onplot(x,b3, 'b:o') %用蓝色o线画出x,b3图像%3、数值结果不同次数多项式拟合误差平方和为:r1=67.6659r2=20.1060r3=3.7952r1、r2、r3分别表示三次、九次、十五次多项式误差平方和。
4、拟合曲线如下图二、 线性方程组的求解( 高斯-塞德尔迭代算法 )1、实例: 求解线性方程组(见书P233页)⎪⎪⎩⎪⎪⎨⎧=++=-+=+-3612363311420238321321321x x x x x x x x x 记A x=b, 其中⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=363320,,12361114238321b x A x x x任取初始值()()Tx0000=,进行迭代。
数值分析课程设计报告(MATLAB版)
(2)取右端向量 b 的三位有效数字得 b [1.83 1.08 0.783]T ,求方程组的准确 解 X ,并与 X 的数据 [1 1 1]T 作比较 。说明矩阵的病态性。
算法及相应结果: (1)在 MATLAB 命令窗口里输入如下命令: >> H=[1 1/2 1/3;1/2 1/3 1/4;1/3 1/4 1/5]; b=[11/6 13/12 47/60]'; >> x=H\b 回车得到结果为: x = 1.0000 1.0000 1.0000 (2)紧接着在上题基础上继续输入如下命令: >> c=[1.83 1.08 0.783]'; x1=H\c 回车得到如下结果: x1 = 1.0800 0.5400 1.4400
问题分析:考虑由直线段(2 个点)产生第一个图形(5 个点)的过程,设 P 1 和 P5 分别为原始直线段的两个端点。现在需要在直线段的中间依次插入三个点 。显然, P2 位于 P P2 , P3 , P4 产生第一次迭代的图形(图 1-4) 1 点右端直线段的三分 之一处, P4 点绕 P2 旋转 60 度(逆时针方向)而得到的,故可以处理为向量 P2 P4 经正交变换而得到向量 P2 P3 ,形成算法如下: (1) P2 P 1 (P 5 P 1) / 3 ; (2) P4 P 1 2( P 5 P 1) / 3 ; (3) P3 P2 ( P4 P2 ) AT ; 在算法的第三步中,A 为正交矩阵。
运行结果: 0.0884 0.0580 0.0431 0.0343 0.0285 0.0243 0.0212 0.0188 0.0169 0.0154 0.0141 0.0130 0.0120 0.0112 0.0105 0.0099 0.0094 0.0087 0.0092 0.0042 (2)从 I 30 较粗略的估计值出发,我们不妨取 0.01. 源程序:
Matlab软件在数值分析中的应用
《数值分析》课程设计Matlab软件在数值分析中的应用院(系)名称2013 年05 月31日数值分析课程设计评阅书课程设计任务书2012—2013学年第二学期专业班级:学号:姓名:课程设计名称:数值分析Ⅰ、Ⅱ设计题目:Matlab软件在数值分析中的应用完成期限:自2013 年05月21 日至2013年05 月31日共10天设计依据、要求及主要内容:一、设计目的实验方法与理论方法是推进科学技术发展的两大基本方法,由于这些问题不可能用实验手段来实现,因此,学习研究了数值模型.Matlab软件在解决数值模型中起到关键的作用,对于数值分析的研究也十分重要.二、设计内容(1)Matlab在数值代数、数值逼近、常微分方程中的应用(2)Matlab在数值分析中的具体应用方法(3)Matlab软件中用不同的方法解决一些数学方面难解的问题.三、设计要求1.Matlab软件利用编程解决一些复杂问题,对重点部分加以分析.2.举一些例子使用所用的方法编写Matlab程序求解.3.对于在数值分析中的应用应该总结概括完整.计划答辩时间:2013年06 月 5 日工作任务与工作量要求:查阅文献资料不少于3篇,课程设计报告1篇不少于3000字.指导教师(签字):教研室主任(签字):批准日期:2013 年05 月20 日Matlab软件在数值分析中的应用摘要Matlab已经成为国际上最流行的科学与工程计算的软件工具,是当今最优秀的科学计算软件之一,它集数值计算、图形处理、符号推演、文字处理、动态仿真等功能于一身.Matlab软件在数值分析中的应用也越来越重要,分类讨论了Matlab在数值分析中的应用如:数值代数、数值逼近、常微分方程的计算中的应用,并给出了相应的求解方法.关键词:数值分析,Matlab,数值代数,数值逼近,微分方程目录1 前言 (1)2 解题思想和方法 (1)2.1数值方法的特点: (1)2.2数制与浮点运算 (1)2.3误差分析 (2)2.4下面对于范数和极限的讨论 (2)2.5解线性方程组的直接法 (3)2.6线性代数方程组的迭代解法 (3)2.7矩阵特征值问题的求解 (4)2.8非线性方程求根 (7)2.9函数插值 (8)2.11一致逼近与平方逼近 (9)2.12数值积分 (9)3 对方程Matlab求解 (10)3.1幂法的Matlab程序 (10)3.2 用Newton法 (11)总结 (13)参考文献 (13)1 前言数值分析能提高自己的思维能力,锻炼自己的理解能力还有学习能力.通过本学期的学习,使我清楚地认识到数值分析对于我们专业的重要性.它也将运用到我们生活中的方方面面,对我们今后的工作生活也有很大的作用.而学习数值分析,我们需要树立算法意识、培养算法设计与分析的能力和应用计算的能力,掌握不同数学问题的求解理论与方法.还有更多的知识需要我们去深入研究,去获取更多的知识.还有就是数值分析在数学建模中也非常重要,他锻炼了一个人的思维能力,在建模中能够较好的去分析问题,更好的去寻找思路.数值分析也离不开Matlab,在学习中我们也常常用Matlab来编程一种计算方式的计算算法.在计算不同数学问题的求解理论方法要树立算法意识和培养算法设计与分析的能力和应用计算机的能力,通过一学期的学习深深感悟到要想把数值分析学习好,需要很深的数学功底和努力学习,在学习中我们要结合实际深刻理解定理、算法,不断有意识和无意识的发现并接受定理,算法蕴含的思想,让它为自我知能的一部分,去引领我们的生活,这样的数学学习才是完美的.2 解题思想和方法首先要有可靠的理论分析,以确保算法在理论上的收敛性和数值上的稳定性.其次要对计算的结果进行误差估计,以确定其是否满足精度,还要考虑算法的运行效率即算法的运算量和存储量.以及编写Matlab程序实现在计算机上的应用,使其能在一些问题上更快地收敛.2.1数值方法的特点:1)数值结果要能算得出来,其次结果应有一定的精度2)误差满足指定的值3)计算时间应尽可能少2.2数制与浮点运算1、数制即在计算机中一个数通常可以用十进制、二进制、八进制等表示.2、浮点数即用整数部分加小数部分来表示一个实数.对于二进制的转换举例说明: 10(291)=2(100100011) 2.3误差分析误差*x x -的具体数值无法确定,设法给出其绝对值的一个上界*x x E ε-=≤绝对误差 *x x ε-=相对误差 *x x xδ-= %x 的相对误差 对于方法的稳定:一种数值方法的传播误差应该可以控制 2.4下面对于范数和极限的讨论学习它主要目的是利用范数求特征值计算矩阵方程组 1向量范数11nj j x x ==∑{12max ,,,}n xx x x ∞=21/221()nj j x x ==∑2矩阵范数设.是n R 中的向量范数,对于任何m n R ⨯,若定义1max x A Ax ==则A 是矩阵A 的范数,得到的范数即为向量范数的从属范数.1范数的从属范数 111max mij j ni A a <≤==∑∞范数的从属范数 11max nij i mj Aa ∞<≤==∑2范数的从属范数 1(1)2nk n n k =+=∑ 另:矩阵的F 范数与谱范数均与2范数相容但F 范数不是从属范数,从属范数是所有相容范数中的最小者.2A ≤ F A对于任何,0()n n k A R A k ⨯∈→→∞的充分必要条件是()1A ρ<. 2.5解线性方程组的直接法 1.回迭过程的实现:1/()/n n nn nii ij j ii j i x b u x b u x u =+=⎧⎪⎨=-⎪⎩∑ i=n-1,….,1 整个回迭过程乘除法运算量为:1(1)2nk n n k =+=∑. 2.三对角矩阵是一类很重要的特殊矩阵,在数学和物理学中有广泛的应用.三对角矩阵的特征,用待定系数法求解三对角线性方程组的数值解,并与常用的LU 分解法从理论分析和数据实验两方面进行比较,结果表明,两者的时间复杂性前者稍差,而精度两者则相当,最后写出两者的C 程序并运行结果.接下来用一种简单和容易实现的方法求出三对角矩阵的行列式,再利用其逆矩阵可以分解成两个很特殊的矩阵的乘积,给出一种算法实现三对角矩阵的逆的简便计算.LU 分解:设A 的前n-1个顺序主子阵非奇异,则存在单位下三角矩阵L 及上三角矩阵U 使A=LU 且分解是唯一的. 2.6线性代数方程组的迭代解法迭代法发的一般形式,Ax b =改写成x Hx g =+,H 为n n R ⨯矩阵g n R ∈向量而(0)n x R ∈定义向量序列;(1)()k k x Hx g +=+, {}k x 为迭代序列解方程组的方法:Jaclbi 迭代法和Gauss-Seidel 迭代法,超松弛迭代法,对于一般的方程组Ax=b,其中n n A R ⨯∈,detA ≠0,记A=D-L-U.D 为对角部分 L 为严格下三角部分 U 严格上三角矩阵. 设方程组 i x B x f =+11()j B D L U I D A --=+=- 1J f D b -=1(1)()()111 ()i nk k k ii ij j ij j j j i ii x b a x a x a -+==+=--∑∑ 此为Jaclbi 迭代法 .11()()G B D L U I D L A --=-=-- 1()g f D L b -=-1(1)(1)()111 ()i nk k k ii ij j ij j j j i ii x b a x a x a -++==+=--∑∑ i=1,2,…..,n;k=1,2,…. 另外:编程时双保险,避免死循环给出值满足精度,知最大循环次数. 2.7矩阵特征值问题的求解它包括矩阵特征值和特征向量的计算,而矩阵特征值的计算方法本质上都是迭代法.解决问题的方法有乘幂法和反乘幂法. 乘幂法的基本公式()(1)()()()max()/k k k k k k k y Az m y z y m -⎧=⎪=⎨⎪=⎩带原点位移的反幂法的计算公式()(1)()()()()max()/k k i k k k k kA I y z m y z y m λ-⎧-=⎪=⎨⎪=⎩ 在Matlab 中的实验举例说明:function [k,lambda,vk,wc]=ydwyfmf(A,v0,jlamb,jd,max1) [n,n]=size(A);A1=A-jlamb*eye(n);jd=jd*0.1;RAl=det(A1);if RA1==0disp('A-aE的n阶行列式n1等于0,所以A-aE不能进行LU分解')returnendlambda=0;if RAl~=0for p=1:nh(p)=det(A1(1:p,1:p));endhl=h(1:n);if h(1,i)==0disp('因为A-aE的各阶主子式等于0,所以A-aE不能进行LU分解')returnendendif h(1,i)~=0disp('因为A-aE的各阶主子式都不等于0,所以A-aE不能进行LU分解')k=1;wc=1;state=1;vk=v0;while((k<=max1)&(state==1))[L U]=lu(A);Yk=L/Vk;Vk=U/Yk;[m j]=max(abs(Vk));mk=m;Vk1=Vk/mk;Yk1=L/Vk1;Vk1=U/Yk1;[m j]=max(abs(Vk1));mk1=m;Vk2=(1/mk1)*Vk1;tzw1=abs((mk-mk1)/mk1);tzw2=abs(mk1-mk);Txw1=norm(Vk)-norm(Vk1);Txw2=(norm(Vk)-norm(Vk1)) rm(Vk1);Txw=min(Txw1,Txw2);tzw=min(tzw1,tzw2);Vk=Vk2;mk=mk1;wc=max(Txw,tzw);Vk=Vk2;mk=mk1;state=0;if(wc>jd)state=1;k=k+1;%Vk=Vk2,mk=mk1endif(Wc<=jd)disp('A-aE的秩R(A-aE)和各阶顺序主子式值h1,迭代次数k,按模最小特征值的近似值lambda,特征向量的近似向量Vk,相邻两次迭代的误差Wc如下:') elsedisp('A-aE的秩R(A-aE)和各阶顺序主子式值h1,迭代次数k已经达到最大迭代次数max1,按模最小特征值的迭代值lambda,特征向量的迭代向量Vk,相邻两次迭代的误差Wc如下:')endh1,RA1endend[V,D]=eig(A,'nobalance');Vk;k=k-1;Wc;lambdan=jlamb+1/mk1;2.8非线性方程求根求()f x =0的解,设*x 为方程的根,即()*0f x =.如果存在正整数使()*()()m f x x x g x =-,且0< *()g x <∞,则称*x 为他的m 重根.当()f x 在*x 可微时,*x 为()f x 的重根的充要条件是*x 是()'f x 的根.确定根的存在性定理:若()f x 在[],a b 上连续,且()().0f a f b <,则()f x 在[],a b 上至少有一个根,steffensen 方法21()()k k k k k k k k y f x y x x f x y y +=⎧⎪⎨=-⎪+-⎩关于它还有一个重要定理,如果()f x 在*x 处二次连续可微,且'*()0f x ≠,则steffensen 方法局部平方收敛,如果'*(1)*()()0m f x f x -===,*()0m f x ≠,则steffensen方法局部线性收敛.切线法(Newton 法)在Matlab 中编程如下: function [C,D]=newploy(X,Y) n=length(X); D=zeros(n,n); D(:,1)=Y'; for j=2:nfor k=j:nD(k,j)=(D(k,j-1)-D(k-1,j-1))/(X(k)-X(k-j+1)); end end C=D(n,n); for k=(n-1):-1:1C=conv(C,poly(X(k)));m=length(C); C(m)=C(m)+D(k,k); end 2.9函数插值插值问题的提法是:假定区间[a ,b]上的实值函数f (x )在该区间上 n+1个互不相同点x 0,x 1……x n 处的值是f (x 0),……f(x n ),要求估算f (x )在[a ,b]中某点x*的值.基本思路是,找到一个函数P(x),在x 0,x 1……x n 的节点上与f(x)函数值相同(有时,甚至一阶导数值也相同),用P(x*)的值作为函数f(x*)的近似.拉格朗日插值公式对给定的n+1个节点x 0,x 1,x 2,…,x n 及对应的函数值y 0,y 1,y 2,…,y n , 构造一个n 次插值多项式:)(0x l y y k nk k ∑==简单程序示例:x=[0.0 0.1 0.195 0.3 0.401 0.5];y=[0.39849 0.39695 0.39142 0.38138 0.368120.35206 ]; T=interp1(x,y,0..25,'linear') %线性插值 (返回结果T=0.3862)T=interp1(x,y,0.25,'nearest') % 两点插值 (返回结果T=0.3814)T=interp1(x,y,0.25,'spline') % 三次样条插值 (返回结果T =0.3867)T=interp1(x,y,0.25,'cubic') %三次插值 (返回结果T =0.3867) 2.10样条函数在插值问题中,样条插值通常比多项式插值好用.用低阶的样条插值能产生和高阶的多项式插值类似的效果,并且可以避免被称为龙格现象的数值不稳定的出现.并且低阶的样条插值还具有“保凸”的重要性质.2.11一致逼近与平方逼近近似代替又称为逼近,函数 f (x ) 称为被逼近函数;P (x ) 称为逼近函数,两者之差称为逼近的误差.1、一致逼近(均匀逼近)以)()(max x p x f bx a -≤≤ 作为度量误差f (x )- P (x ) 的“大小” 标准.2、 平方逼近(均方逼近)以[]122(()())ba f x p x dx -⎰作为度量误差f (x )- P (x )的“大小” 标准.function c=pf1(f,n,a,b) %c 最佳平方逼近多项式的系数syms x; for i=1:n+1 for j=1:n+1A(i,j)=int(x^(i+j-2),x,a,b); endB(i)=int(f*x^(i-1),x,a,b); end c=inv(A)*B';2.12数值积分1.插值型的求积公式:构造出的求积0()nn k k k f x =I =A ∑,()bk k al x dx A =⎰ 公式积称为是插值型求积公式2.牛顿——柯特斯公式:设将积分区间划分为n 等分,步长 b ah n-=,选取等距节点 k x a kh =+ ,构造出的插值型求积公式:()0()()nn n k k k b a C f x =I =-∑称为牛顿—柯特斯公式,式中()001nn n kj j kt j Cdt n k j=≠-=-∏⎰例dx x x⎰+1024x=0:1/8:1; y=x./(4+x.^2); trapz(x,y) 运行结果:ans= 0.11140235452955 3 利用Matlab 求解3.1幂法的Matlab 程序用幂法计算矩阵的主特征值和对应的特征向量的Matlab 主程序 function [k,lambda,Vk,Wc]=mifa(A,V0,jd,max1) lambda=0;k=1;Wc =1; ,jd=jd*0.1;state=1; V=V0; while((k<=max1)&(state==1)) Vk=A*V; [m j]=max(abs(Vk)); mk=m; tzw=abs(lambda-mk); Vk=(1/mk)*Vk; Txw=norm(V-Vk); Wc=max(Txw,tzw); V=Vk;lambda=mk;state=0; if(Wc>jd) state=1; endk=k+1;Wc=Wc; end if(Wc<=jd)disp('请注意:迭代次数k,主特征值的近似值lambda,主特征向量的近似向量Vk,相邻两次迭代的误差Wc 如下:')elsedisp('请注意:迭代次数k 已经达到最大迭代次数max1,主特征值的迭代值lambda,主特征向量的迭代向量Vk,相邻两次迭代的误差Wc 如下:')endVk=V;k=k-1;Wc;用幂法计算下列矩阵的主特征值和对应的特征向量的近似向量,精度. 解 (1)输入MATLAB 程序 A=[1 -1;2 4];V0=[1,1]';[k,lambda,Vk,Wc]=mifa(A,V0,0.00001,100),[V ,D] = eig (A), Dzd=max(diag(D)), wuD= abs(Dzd- lambda), wuV=V(:,2)./Vk, 运行后屏幕显示结果请注意:迭代次数k,主特征值的近似值lambda,主特征向量的近似向量Vk,相邻两次迭代的误差Wc 如下: k = lambda = Wc =33 3.00000173836804 8.691862856124999e-007Vk = V = wuV =-0.49999942054432-0.707106781186550.44721359549996-0.894428227562941.000000000000000.70710678118655-0.89442719099992-0.89442719099992Dzd = wuD =3 1.738368038406435e-006由输出结果可看出,迭代33次,相邻两次迭代的误差Wc 8.69 19e-007,矩阵的主特征值的近似值lambda3.000 00和对应的特征向量的近似向量Vk (-0.500 00,1.000 00, lambda 与例5.1.1中的最大特征值近似相等,绝对误差约为1.738 37e-006,Vk 与特征向量 的第1个分量的绝对误差约等于0,第2个分量的绝对值相同.由wuV 可以看出,的特征向量V(:,2) 与Vk 的对应分量的比值近似相等.因此,用程序mifa.m 计算的结果达到预先给定的精度. 3.2 用Newton 法例.使用Newton 法计算方程0107222=--x e x 在区间[]2,2-上的根,其初始值x.5.1解:编写主程序为:[x,time]=Newton('2*exp(2*x)-7*x^2-10',1.5,1e-5)x=0:0.01:2;y=2*exp(2*x)-7*x.^2-10;plot(x,y)grid运行并调用Newton的主程序结果为:wucha=0.2430wucha=0.0615wucha=0.0311……………wucha=2.3876e-005wucha=1.5073e-005wucha=9.5154e-006x=1.1197time=20总结通过一周的时间,数值分析课程设计终于完成了.在这期间,我收获了很多,也学习很多.以前仅仅只学习书本上的理论知识,从没有自己的动手实践.通过做这次的课程设计,使我把理论的知识与实践结合到了一起,达到了理论与实践的结合.此外,也提高了自己的动手能力.而最大难题就是程序,由于不擅长编程序,在编写程序是总是出现问题,于是,自己在网上搜了了一些资料,并通过查阅此资料.并且通过自己的修改终于能运行出来了时候,心里有一点小小的自豪感.一个学期的数值分析学习,使我有很多感悟.其中我感受最深的是数值分析是一门重视算法和原理的学科,它的内容更接近于实际,像求解线性方程组、矩阵的特征值等,是数学理论更加有实际意义,随着学习的深入,我发现要想学会数值分析必须把那些理论和定理搞得非常透彻,虽然我现在还无法真正理解那些思想,但我会不断的有意识的无意识的去熟悉那些定理和蕴含的思想.进而真正让数学帮助我们全方位的成长.通过这次课程设计,我从中学会了很多,也发现自己真的还有很多不足以及很多东西需要去学习.所以在以后的生活学习中要不断的扩大自己的视野,多学习一些与专业有关的知识,不能只满足于课本上的知识.所以在完成本专业的基础上,要不断涉猎,完善自我,希望自己在以后的课程中会得到更好的锻练.总的来说这次课程设计还是有很多的收获的,并且特别感谢我们组的成员在做课程设计的过程中对我的帮助.参考文献[1] 冯国忱黄明游.数值分析(上册)[M].北京:高等教育出版社,2007.[2] 宋叶志贾东志.MATLAB数值分析与应用[M].北京:机械工业出版社,2009.[3] 张德丰.MATLAB数值分析与应用[M].北京:国防工业出版社,2007.[4] 陈东彦李冬梅,王树忠.数学建模[M].北京:科学出版社,2007[5]李庆扬王能超易大义.数值分析[M].4版.北京清华大学出版社,2005。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Matlab 实验报告
学院:数学与信息科学学院班级:信息班
学号:20135034027
姓名:马永杉
最小二乘法,用MATLAB实现
1.数值实例
下面给定的是郑州最近1个月早晨7:00左右的天气预报所得到的温度,按照数据找出任意次曲线拟合方程和它的图像。
下面用MATLAB编程对上述数据进行最小二乘拟合。
2、程序代码
x=[1:1:30];
y=[9,10,11,12,13,14,13,12,11,9,10,11,12,13,14,12,11,10,9,8,7,8,9,11,9 ,7,6,5,3,1];
a1=polyfit(x,y,3) %三次多项式拟合%
a2= polyfit(x,y,9) %九次多项式拟合%
a3= polyfit(x,y,15) %十五次多项式拟合%
b1=polyval(a1,x)
b2=polyval(a2,x)
b3=polyval(a3,x)
r1= sum((y-b1).^2) %三次多项式误差平方和%
r2= sum((y-b2).^2) %九次次多项式误差平方和%
r3= sum((y-b3).^2) %十五次多项式误差平方和%
plot(x,y,'*') %用*画出x,y图像%
hold on
plot(x,b1, 'r') %用红色线画出x,b1图像%
hold on
plot(x,b2, 'g') %用绿色线画出x,b2图像%
hold on
plot(x,b3, 'b:o') %用蓝色o线画出x,b3图像%
2.流程图
4.数值结果分析
不同次数多项式拟合误差平方和为:
r1=67.6659
r2=20.1060
r3=3.7952
r1、r2、r3分别表示三次、九次、十五次多项式误差平方和。
5、拟合曲线如下图。