工程数值计算matlab实验报告
基于matlab的实验报告
基于matlab的实验报告实验报告:基于MATLAB 的实验一、实验目的通过使用MATLAB 软件,掌握如何进行数据分析、图像处理、算法实现等一系列实验操作,提高实验者的实践能力和动手能力。
二、实验原理MATLAB 是一种在科学计算和技术开发领域广泛应用的计算机软件。
它能进行矩阵计算、绘制函数和数据图像、实现算法以及进行数据分析等。
通过掌握MATLAB 的使用,能够快速、高效地解决各种科学和工程问题。
三、实验内容1. 数据分析:使用MATLAB 的数据分析工具进行数据的导入、处理和分析。
2. 图像处理:利用MATLAB 的图像处理工具包对图像进行滤波、增强、分割等操作。
3. 算法实现:使用MATLAB 实现常用的算法,如排序、搜索、图像压缩等。
四、实验步骤1. 数据分析:(1)使用MATLAB 的读取数据函数将数据导入MATLAB 环境中。
(2)利用MATLAB 的数据处理函数进行数据清洗和预处理。
(3)使用MATLAB 的统计工具进行数据分析,如求平均值、标准差等。
(4)利用MATLAB 的绘图函数将分析结果可视化。
2. 图像处理:(1)使用MATLAB 的读取图像函数将图像导入MATLAB 环境中。
(2)利用MATLAB 的图像处理工具包进行滤波操作,如均值滤波、中值滤波等。
(3)使用MATLAB 的图像增强函数对图像进行锐化、变换等操作。
(4)利用MATLAB 的图像分割算法对图像进行分割。
3. 算法实现:(1)使用MATLAB 编写排序算法,如冒泡排序、快速排序等。
(2)使用MATLAB 编写搜索算法,如二分查找、线性搜索等。
(3)使用MATLAB 实现图像压缩算法,如离散余弦变换(DCT)。
五、实验结果实验中,我们使用MATLAB 完成了数据分析、图像处理和算法实现的一系列实验操作。
通过数据分析,我们成功导入了数据并对其进行了清洗和预处理,最后得到了数据的统计结果。
在图像处理方面,我们对图像进行了滤波、增强和分割等操作,最终得到了处理后的图像。
工程数值计算matlab实验报告
工程数值计算m a t l a b实验报告(共8页)-本页仅作为预览文档封面,使用时请删除本页-《工程数值计算》上机实验报告(第一次)学生姓名 *** 班级 ******** 学号 ********* 任课教师 *** 上机时间 2019 年 10月 31日,报告完成 2019 年11月 2 日1、实验目的:设计一个圆柱凸轮,底圆半径 R=200mm,凸轮的上端面不在同一平面上,圆柱的高度要根据动杆位移变化的需要进行设计和加工。
工程上,可根据圆周等分9个点的高度值y(θθ)(见下表),确定圆周上任何一点的圆柱高度y(θ),用于凸轮的加工和制造。
任务:分别用以下方法确定角度 35°、110°、250°对应的圆柱高度。
(1)待定系数法插值(提示:参考程序)(2)拉格朗日插值(参考程序:m2_4;m2_5)任务:分别用 3 次和 5 次多项式回归方法,拟合凸轮柱体高度轮廓函数y(θ)(提示:可采用常用函数 polyfit,参考程序)。
2、计算方法:针对实验任务,结合课堂内容,说明解决方法,如:采用何种理论,列出相关公式,说明计算步骤,写出程序框图等;(1)待定系数法插值计算原理:设多项式为θθ(x)=θ0+θ1θ+θ2θ2+⋯θθθθ(θ≤θ)将数据代如后得到线性方程组{θ0+θ1θ0+θ2θ02+⋯+θθθ0θ=θ0θ0+θ1θ1+θ2θ12+⋯+θθθ1θ=θ1⋮θ0+θ1θθ+θ2θθ2+⋯+θθθθθ=θθ写成矩阵形式[ 1θ0θ02⋯θ0θ1θ1θ12⋯θ1θ1θ2θ22⋯θ2θ⋮⋮⋮⋱⋮1θθθθ2⋯θθθ][θ0θ1θ2⋮θθ] =[ θ0θ1θ2⋮θθ](写成V*a=yi) 解得a =θ−1∗θθ代入x=35、110、250;解得对应y 值。
程序框图如下:(2)拉格朗日插值计算原理:给定n 个插值节点和对应的函数值,利用n 次拉格朗日插值多项式公式θθ(θ)=∑θθθθ(θ)θθ=0,其中θθ(θ)=(θ−θ0)⋯(θ−θθ−1)(θ−θθ+1)⋯(θ−θθ)(θθ−θ0)⋯(θθ−θθ−1)(θθ−θθ+1)⋯(θθ−θθ),可以得到插值区间内任意x 的函数值y为y (x )=θθ(θ)。
MATLAB数值运算实验报告
实验报告系(部):信息工程班级:XX:学号:课程:MATLAB 实验名称:Matlab数值运算目录一. 实验目的2二. 实验容2三. 实验步骤2四. 实验具体过程及数据分析4五. 实验原始记录12六. 实验心得、体会及思考14一. 实验目的掌握MATLAB的数值运算及其运算中所用到的函数,掌握构造数组和细胞数组的操作。
二. 实验容1.多项式运算。
2.多项式插值和拟合。
3.数值微积分。
4.构造数组和细胞数组。
三. 实验步骤1.多项式运算(1)多项式表示。
在MATLAB中,多项式表示成向量形式。
如:s^4+3s*s^3-5*s^2+9>>S=[1 3 -5 0 9](2)多项式的加减法相当于向量的加减法,但须注意阶次要一样。
如不同,低阶要补0。
如多项式2*s^2+3*s+9与多项式s^4+3*s^3-5*s^2+4s+7相加。
(3)多项式的乘、除法分别用函数conv和deconv实现。
(4)多项式求根用函数roots(5)多项式求值用函数polyval练习1:求(s^2+1)(s+3)(s+1)/(s^3+2*s+1)的“商〞及“余〞多项式2.多项式插值和拟合有一组实验数据如表所示请分别用拟合〔二阶至三阶〕和插值〔线性和三次样条〕的方法来估测X=9.5时Y的值。
3.数值微积分(1)差分使用diff函数的实现(2)可以用因变量和自变量差分的结果相除得到数值微分(3)Cumsum函数求累计积分,trapz函数用梯形法求定积分,即曲线的面积练习:如图瑞士地图,为了算出其国土面积,首先对地图作如下测量:以由西向向为X轴,由南到北方为Y轴,选择方便的原点,并将从最西边点到最东边界点在X轴的区间适当划分假设干级,在每个分点的Y方向测出南边界点和北边界点的Y坐标Y1和Y2,这样就得到了下表,根据地图比例知道18mm相当于40km,试有测量数据计算瑞士国土近似面积,与其准确值41228km^2比拟。
4.构造数组与细胞数组(1)构造数组的创立(2)构造数组的操作练习:创立一构造数组stusorce,其域为:No,Name,English,Math,Chinese,Total,Average。
matlab数值计算实验报告
matlab数值计算实验报告Matlab数值计算实验报告引言:Matlab是一种广泛应用于科学与工程领域的高级计算机语言和环境,它提供了丰富的函数库和工具箱,方便用户进行数值计算、数据分析和可视化等任务。
本实验报告将介绍我在使用Matlab进行数值计算实验中的一些经验和心得体会。
一、数值计算方法数值计算方法是一种利用数值近似来解决实际问题的方法,它在科学和工程领域具有广泛的应用。
在Matlab中,我们可以利用内置的函数和工具箱来实现各种数值计算方法,例如插值、数值积分、数值微分等。
二、插值方法插值是一种通过已知数据点来推测未知数据点的方法。
在Matlab中,我们可以使用interp1函数来进行插值计算。
例如,我们可以通过已知的一些离散数据点,利用interp1函数来估计其他位置的数值。
这在信号处理、图像处理等领域具有重要的应用。
三、数值积分数值积分是一种通过分割曲线或曲面来近似计算其面积或体积的方法。
在Matlab中,我们可以使用quad函数来进行数值积分计算。
例如,我们可以通过quad函数来计算某个函数在给定区间上的积分值。
这在概率统计、物理学等领域具有广泛的应用。
四、数值微分数值微分是一种通过数值逼近来计算函数导数的方法。
在Matlab中,我们可以使用diff函数来进行数值微分计算。
例如,我们可以通过diff函数来计算某个函数在给定点上的导数值。
这在优化算法、控制系统等领域具有重要的应用。
五、数值求解数值求解是一种通过数值近似来计算方程或方程组的根的方法。
在Matlab中,我们可以使用fsolve函数来进行数值求解计算。
例如,我们可以通过fsolve函数来求解某个非线性方程的根。
这在工程计算、金融分析等领域具有广泛的应用。
六、实验应用在本次实验中,我使用Matlab进行了一些数值计算的应用实验。
例如,我利用插值方法来估计某个信号在给定位置的数值,利用数值积分方法来计算某个曲线下的面积,利用数值微分方法来计算某个函数在给定点的导数值,以及利用数值求解方法来求解某个方程的根。
实验五+MATLAB数值计算(含实验报告)
实验五 MATLAB 数值计算一、实验目的1.掌握求数值导数和数值积分的方法。
2.掌握代数方程数值求解的方法。
3.掌握常微分方程数值求解的方法。
二、实验的设备及条件计算机一台(带有MATLAB7.0以上的软件环境)。
设计提示1.参考本节主要内容,学习并理解相关函数的含义及调用方法。
三、实验内容1.线性系统方程:分别使用左除(\)和求逆(inv )求解下面系统方程的解:⎪⎩⎪⎨⎧=+=+=++377251463c b b a c b a2. 数值积分:使用quad 和trapz 求解⎰-503/dx xe x 的数值积分,并与其解析解9243/5+--e 相比较;3. 请完成教材P154页中实验指导环节的实验内容第2题4. 请完成教材P155页中思考练习的第3题(1),并绘制解在该求解区间(即[0,5])上的图像;。
5、请完成教材P164页实验指导环节的实验内容第5题。
(提示:该函数的符号导数,可以通过函数diff 求得。
首先定义符号变表达式,如求sin(x)的一阶符号导数,可以先定义f=’sin(x)’;df=diff(f);可求得df=cos(x)。
其中df 即为函数f 的一阶符号导数)。
四、实验报告要求(包含预习报告要求和最终报告要求)1.实验名称2.实验目的3.实验设备及条件4.实验内容及要求5.实验程序设计指程序代码。
6.实验结果及结果分析实验结果要求必须客观,现象。
结果分析是对实验结果的理论评判。
7.实验中出现的问题及解决方法8. 思考题的回答五、实验报告的提交方式Word文档,命名方式:实验号_你的学号_姓名例如本次实验:实验一_000000001_张三.doc(信息101提交报告邮箱):E_mail: *******************(网络工程101提交作业邮箱):E_mail: *******************(注意网络班的M是大写的)下一次课前提交,过期不收!六、参考文献参考教材和Matlab帮助文件。
数值分析matlab实验报告
数值分析matlab实验报告《数值分析MATLAB实验报告》摘要:本实验报告基于MATLAB软件进行了数值分析实验,通过对不同数学问题的数值计算和分析,验证了数值分析方法的有效性和准确性。
实验结果表明,MATLAB在数值分析领域具有较高的应用价值和实用性。
一、引言数值分析是一门研究利用计算机进行数值计算和分析的学科,其应用范围涵盖了数学、物理、工程等多个领域。
MATLAB是一种常用的数值计算软件,具有强大的数值分析功能,能够进行高效、准确的数值计算和分析,因此在科学研究和工程实践中得到了广泛的应用。
二、实验目的本实验旨在通过MATLAB软件对数值分析方法进行实验验证,探究其在不同数学问题上的应用效果和准确性,为数值分析方法的实际应用提供参考和指导。
三、实验内容1. 利用MATLAB进行方程求解实验在该实验中,利用MATLAB对给定的方程进行求解,比较数值解和解析解的差异,验证数值解的准确性和可靠性。
2. 利用MATLAB进行数值积分实验通过MATLAB对给定函数进行数值积分,比较数值积分结果和解析积分结果,验证数值积分的精度和稳定性。
3. 利用MATLAB进行常微分方程数值解实验通过MATLAB对给定的常微分方程进行数值解,比较数值解和解析解的差异,验证数值解的准确性和可靠性。
四、实验结果与分析通过对以上实验内容的实际操作和分析,得出以下结论:1. 在方程求解实验中,MATLAB给出的数值解与解析解基本吻合,验证了MATLAB在方程求解方面的高准确性和可靠性。
2. 在数值积分实验中,MATLAB给出的数值积分结果与解析积分结果基本吻合,验证了MATLAB在数值积分方面的高精度和稳定性。
3. 在常微分方程数值解实验中,MATLAB给出的数值解与解析解基本吻合,验证了MATLAB在常微分方程数值解方面的高准确性和可靠性。
五、结论与展望本实验通过MATLAB软件对数值分析方法进行了实验验证,得出了数值分析方法在不同数学问题上的高准确性和可靠性。
数值分析实验报告matlab
数值分析实验报告matlab数值分析实验报告引言:数值分析是一门研究利用计算机数值方法解决数学问题的学科,它在科学计算、工程设计、金融分析等领域具有重要的应用价值。
本实验报告旨在通过使用MATLAB软件,探索数值分析的基本原理和方法,并通过实际案例加深对数值分析的理解。
一、误差分析在数值计算中,误差是无法避免的。
误差分析是数值分析中的重要一环,它帮助我们了解数值计算的准确性和稳定性。
在实验中,我们通过计算机模拟了一个简单的数学问题,并分别计算了绝对误差和相对误差。
通过比较不同算法的误差大小,我们可以选择最适合的算法来解决实际问题。
二、插值与拟合插值和拟合是数值分析中常用的方法,它们可以通过已知的数据点来推导出未知数据点的近似值。
在本实验中,我们通过MATLAB的插值函数和拟合函数,分别进行了插值和拟合的实验。
通过比较不同插值和拟合方法的结果,我们可以选择最适合的方法来处理实际问题。
三、数值积分数值积分是数值分析中的重要内容,它可以用来计算曲线下的面积或函数的积分值。
在实验中,我们通过MATLAB的数值积分函数,对一些简单的函数进行了积分计算。
通过比较数值积分和解析积分的结果,我们可以评估数值积分的准确性和稳定性,并选择最适合的积分方法来解决实际问题。
四、常微分方程的数值解法常微分方程是数值分析中的重要内容,它可以用来描述许多自然现象和工程问题。
在实验中,我们通过MATLAB的常微分方程求解函数,对一些简单的微分方程进行了数值解法的计算。
通过比较数值解和解析解的结果,我们可以评估数值解法的准确性和稳定性,并选择最适合的数值解法来解决实际问题。
五、线性方程组的数值解法线性方程组是数值分析中的经典问题,它在科学计算和工程设计中广泛应用。
在实验中,我们通过MATLAB的线性方程组求解函数,对一些简单的线性方程组进行了数值解法的计算。
通过比较数值解和解析解的结果,我们可以评估数值解法的准确性和稳定性,并选择最适合的数值解法来解决实际问题。
matlab 实验报告
matlab 实验报告Matlab 实验报告引言:Matlab(Matrix Laboratory)是一种强大的科学计算软件,它为科学家、工程师和研究人员提供了一个强大的计算环境。
本实验报告旨在介绍我对Matlab的实验结果和使用体验,以及对其优点和局限性的思考。
一、Matlab的基本功能和特点Matlab是一种高级编程语言和开发环境,它具有广泛的数学和工程计算功能。
通过Matlab,我可以进行矩阵运算、数值计算、数据可视化、算法开发等一系列操作。
Matlab的语法简洁易懂,可以快速实现复杂的计算任务。
此外,Matlab还提供了大量的工具箱,如信号处理、控制系统、图像处理等,使得各种领域的科学研究和工程应用变得更加便捷。
二、实验结果与应用案例在本次实验中,我选择了一个经典的数值计算问题——求解非线性方程。
通过Matlab的数值计算能力,我可以使用不同的迭代方法来求解方程的根。
在实验中,我使用了牛顿迭代法、二分法和割线法来求解方程。
通过对比这些方法的收敛速度和精度,我得出了不同方法的优缺点。
在实际应用中,Matlab可以广泛应用于信号处理、图像处理、数据分析等领域。
例如,在信号处理中,我可以使用Matlab的信号处理工具箱来进行滤波、频谱分析等操作。
在图像处理中,我可以利用Matlab的图像处理工具箱进行图像增强、边缘检测等操作。
这些应用案例充分展示了Matlab在科学计算和工程应用中的重要性和灵活性。
三、Matlab的优点1. 强大的计算功能:Matlab提供了丰富的数学和工程计算函数,可以高效地进行复杂的计算任务。
2. 简洁的语法:Matlab的语法简洁易懂,使得编程变得更加高效和便捷。
3. 丰富的工具箱:Matlab提供了大量的工具箱,覆盖了各种领域的科学计算和工程应用需求。
4. 可视化能力强:Matlab提供了丰富的绘图函数,可以直观地展示数据和计算结果。
四、Matlab的局限性1. 高昂的价格:Matlab是一款商业软件,其价格较高,对于个人用户而言可能不太容易承受。
工程数值计算matlab实验报告-第三次实验
《工程数值计算》上机实验报告(第三次)学生姓名 **** 班级 **** 学号 *****任课教师 ***** 上机时间 2019 年 11月 7 日, 报告完成 2019 年 11月 8 日1.实验目的:简述实验任务和目的任务3.1:采用以下两种方法求解线性方程组{2x 1+2x 2+3x 3=34x 1+7x 2+7x 3=1−2x 1+4x 2+5x 3=−7(1)逆矩阵法 (2)数值迭代法任务3.2:非线性方程(组)的求根 (1)求2x 5−4x 4+3x 3−8x 2+9=0的根 (2))伞兵降落速度方程为v (t )=gm c(1−e −cm t ),其中g=9.81m/s^2 , m=68kg ,若要下落t=10s 时速度达到v=40m/s 请问阻力系数c 是多少? (3)求方程{x 2+xy +y =3x 2−4x +3=0 的解任务3.3:微分方程组的求解已知大气动力学模型的洛伦兹方程{dxdt =σ(y −x)dxdt =rx −y −xz dx dt =xy −bz ,其中x(t)为大气流动的强度,y(t)和z(t)为水平和垂直方向的温度变化。
如果σ=10,b=2.666667,r = 28,初始条件为 x(0)=6,y(0)=z(0)=5,请你:(1)计算 t=0~20范围内x(t)、y(t)和z(t)的数值解。
(2)分别画出y(t)和z(t)随时间t 的变化曲线y –t 和z –t 。
(3)分别画出x 随y 和x 随z 变化的曲线(相平面图):x –y 和x -z 。
(4)轻微改变初始条件x(0)=6.01,y(0)=z(0)=5,重复以上过程,画出相平面图(x –y 和x – z ),并与以上结果进行比较。
2.计算方法:针对实验任务,结合课堂内容,说明解决方法,如:采用何种理论,列出相关公式,说明计算步骤,写出程序框图等任务3.1两种方法求解线性方程组(1)逆矩阵法 计算原理:对于[a 11a 12⋯a 1n a 21a 22⋯a 21⋮⋮⋱⋮a n1a n2⋯a nn ][x 1x 2⋮x n ]=[b 1b 2⋮b n ] 或Ax=b 解为[x 1x 2⋮x n ]=[a 11a 12⋯a 1n a 21a 22⋯a 21⋮⋮⋱⋮a n1a n2⋯a nn ]−1[b 1b 2⋮b n] 或x =A −1b 流程图:(2)数值迭代法对于线性方程组{a 11x 1+⋯+a 1n x n =b 1a 21x 1+⋯+a 2n x n =b 2⋮a n1x 1+⋯+a nn x n =b n将对角线上各项留在左边,其余移到右边,方程写为{ x 1=−1a 11( a 12x 2+a 13x 3+⋯+a 1 n−1x n−1+a 1n x n −b 1) x 2=−1a 22(a 21x 1 +a 23x 3+⋯+a 2 n−1x n−1+a 2n x n −b 2)⋮x n =−1a nn (a n1x 1+a n2x 2+a n3x 3+⋯+a n n−1x n−1 −b n )写成迭代形式系数矩阵A 3×3列向量BInv 函数求A 的逆A −1×B输出{x 1(k+1)=−1a 11( a 12x 2(k )+a 13x 3(k )+⋯+a 1n x n (k )−b 1) x 2(k+1)=−1a 22(a 21x 1(k+1) +a 23x 3(k )+⋯+a 2n x n (k )−b 2) ⋮x n (k+1)=−1a nn (a n1x 1(k+1)+a n2x 2(k+1)+a n3x 3(k+1)+⋯+a nn x n (k+1)−b 1)经过多次迭代计算逐渐逼近真值。
计算方法matlab实验报告
计算方法matlab实验报告计算方法MATLAB实验报告引言:计算方法是一门研究如何用计算机来解决数学问题的学科。
在计算方法的学习过程中,MATLAB作为一种强大的数值计算软件,被广泛应用于科学计算、工程计算、数据分析等领域。
本实验报告将介绍在计算方法课程中使用MATLAB 进行的实验内容和实验结果。
一、二分法求方程根在数值计算中,求解非线性方程是一个常见的问题。
二分法是一种简单而有效的求解非线性方程根的方法。
在MATLAB中,可以通过编写函数和使用循环结构来实现二分法求解方程根。
实验步骤:1. 编写函数f(x),表示待求解的非线性方程。
2. 设定初始区间[a, b],满足f(a) * f(b) < 0。
3. 利用二分法迭代求解方程根,直到满足精度要求或迭代次数达到预设值。
实验结果:通过在MATLAB中编写相应的函数和脚本,我们成功求解了多个非线性方程的根。
例如,对于方程f(x) = x^3 - 2x - 5,我们通过二分法迭代了5次,得到了方程的一个根x ≈ 2.0946。
二、高斯消元法解线性方程组线性方程组的求解是计算方法中的重要内容之一。
高斯消元法是一种常用的求解线性方程组的方法,它通过矩阵变换将线性方程组化为上三角矩阵,从而简化求解过程。
在MATLAB中,可以利用矩阵运算和循环结构来实现高斯消元法。
实验步骤:1. 构建线性方程组的系数矩阵A和常数向量b。
2. 利用高斯消元法将系数矩阵A化为上三角矩阵U,并相应地对常数向量b进行变换。
3. 利用回代法求解上三角矩阵U,得到线性方程组的解向量x。
实验结果:通过在MATLAB中编写相应的函数和脚本,我们成功求解了多个线性方程组。
例如,对于线性方程组:2x + 3y - z = 13x - 2y + 2z = -3-x + y + 3z = 7经过高斯消元法的计算,我们得到了方程组的解x = 1,y = -2,z = 3。
三、数值积分方法数值积分是计算方法中的重要内容之一,它用于计算函数在给定区间上的定积分。
工程数值计算matlab实验报告-第三次实验
《工程数值计算》上机实验报告(第三次)学生姓名 **** 班级 **** 学号 *****任课教师 ***** 上机时间 2019 年 11月 7 日, 报告完成 2019 年 11月 8 日1.实验目的:简述实验任务和目的任务3.1:采用以下两种方法求解线性方程组{2x 1+2x 2+3x 3=34x 1+7x 2+7x 3=1−2x 1+4x 2+5x 3=−7(1)逆矩阵法 (2)数值迭代法任务3.2:非线性方程(组)的求根 (1)求2x 5−4x 4+3x 3−8x 2+9=0的根 (2))伞兵降落速度方程为v (t )=gm c(1−e −cm t ),其中g=9.81m/s^2 , m=68kg ,若要下落t=10s 时速度达到v=40m/s 请问阻力系数c 是多少? (3)求方程{x 2+xy +y =3x 2−4x +3=0 的解任务3.3:微分方程组的求解已知大气动力学模型的洛伦兹方程{dxdt =σ(y −x)dxdt =rx −y −xz dx dt =xy −bz ,其中x(t)为大气流动的强度,y(t)和z(t)为水平和垂直方向的温度变化。
如果σ=10,b=2.666667,r = 28,初始条件为 x(0)=6,y(0)=z(0)=5,请你:(1)计算 t=0~20范围内x(t)、y(t)和z(t)的数值解。
(2)分别画出y(t)和z(t)随时间t 的变化曲线y –t 和z –t 。
(3)分别画出x 随y 和x 随z 变化的曲线(相平面图):x –y 和x -z 。
(4)轻微改变初始条件x(0)=6.01,y(0)=z(0)=5,重复以上过程,画出相平面图(x –y 和x – z ),并与以上结果进行比较。
2.计算方法:针对实验任务,结合课堂内容,说明解决方法,如:采用何种理论,列出相关公式,说明计算步骤,写出程序框图等任务3.1两种方法求解线性方程组(1)逆矩阵法 计算原理:对于[a 11a 12⋯a 1n a 21a 22⋯a 21⋮⋮⋱⋮a n1a n2⋯a nn ][x 1x 2⋮x n ]=[b 1b 2⋮b n ] 或Ax=b 解为[x 1x 2⋮x n ]=[a 11a 12⋯a 1n a 21a 22⋯a 21⋮⋮⋱⋮a n1a n2⋯a nn ]−1[b 1b 2⋮b n] 或x =A −1b 流程图:(2)数值迭代法对于线性方程组{a 11x 1+⋯+a 1n x n =b 1a 21x 1+⋯+a 2n x n =b 2⋮a n1x 1+⋯+a nn x n =b n将对角线上各项留在左边,其余移到右边,方程写为{ x 1=−1a 11( a 12x 2+a 13x 3+⋯+a 1 n−1x n−1+a 1n x n −b 1) x 2=−1a 22(a 21x 1 +a 23x 3+⋯+a 2 n−1x n−1+a 2n x n −b 2)⋮x n =−1a nn (a n1x 1+a n2x 2+a n3x 3+⋯+a n n−1x n−1 −b n )写成迭代形式系数矩阵A 3×3列向量BInv 函数求A 的逆A −1×B输出{x 1(k+1)=−1a 11( a 12x 2(k )+a 13x 3(k )+⋯+a 1n x n (k )−b 1) x 2(k+1)=−1a 22(a 21x 1(k+1) +a 23x 3(k )+⋯+a 2n x n (k )−b 2) ⋮x n (k+1)=−1a nn (a n1x 1(k+1)+a n2x 2(k+1)+a n3x 3(k+1)+⋯+a nn x n (k+1)−b 1)经过多次迭代计算逐渐逼近真值。
数值分析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数值计算实验报告Matlab数值计算实验报告引言:Matlab是一种强大的数值计算软件,广泛应用于科学和工程领域。
本实验旨在通过实际案例,展示Matlab在数值计算中的应用能力。
本报告将从三个方面进行讨论:数值积分、线性方程组求解和最优化问题。
一、数值积分:数值积分是数学中常见的问题,Matlab提供了多种函数和方法来解决这类问题。
我们以求解定积分为例进行讨论。
假设我们要求解函数f(x) = x^2在区间[0, 1]上的定积分。
我们可以使用Matlab中的quad函数来进行计算,代码如下:```matlabf = @(x) x.^2;integral = quad(f, 0, 1);disp(integral);```运行以上代码,我们可以得到定积分的近似值为0.3333。
通过调整积分方法和精度参数,我们可以得到更精确的结果。
二、线性方程组求解:线性方程组求解是数值计算中的重要问题,Matlab提供了多种函数和方法来解决线性方程组。
我们以一个简单的线性方程组为例进行讨论。
假设我们要求解以下线性方程组:```2x + y = 5x - y = 1```我们可以使用Matlab中的linsolve函数来求解,代码如下:```matlabA = [2 1; 1 -1];B = [5; 1];X = linsolve(A, B);disp(X);```运行以上代码,我们可以得到方程组的解为x = 2,y = 3。
通过调整方程组的系数矩阵和右侧向量,我们可以求解更复杂的线性方程组。
三、最优化问题:最优化问题在科学和工程领域中广泛存在,Matlab提供了多种函数和方法来解决这类问题。
我们以求解无约束最优化问题为例进行讨论。
假设我们要求解函数f(x) = x^2的最小值。
我们可以使用Matlab中的fminunc函数来进行计算,代码如下:```matlabf = @(x) x.^2;x0 = 1; % 初始点options = optimoptions('fminunc', 'Display', 'iter');[x, fval] = fminunc(f, x0, options);disp(x);disp(fval);```运行以上代码,我们可以得到最小值的近似解为x = 0,f(x) = 0。
《MATLAB及应用》实验报告1 MATLAB数值计算
电气工程学院实验报告实验项目名称MATLAB数值计算所属课程名称MATLAB及应用实验类型上机实验实验日期2014-03- 5指导教师XXXXXX班级XXXXXXXXX学号XXXXXXXXXX 姓名XXXXXXXX成绩一、实验名称MATLAB数值计算二、实验目的(1)掌握MATLAB变量的使用(2)掌握MATLAB数组的创建(3)掌握MATLAB数组和矩阵的运算(4)熟悉MATLAB多项式的运用三、实验原理1. 矩阵分析矩阵转置:单引号(’)矩阵的旋转:rot90(A,k),功能是将矩阵A旋转90度的k倍,缺省值是1 矩阵的左右翻转:fliplr(A)矩阵的上下翻转:flipud(A)矩阵的逆:inv(A),与A^(-1)等价矩阵的行列式:det(A)矩阵的秩:rank(A)矩阵的迹:trace(A)将矩阵化为最简式:rref(A)矩阵的特征值与特征向量:(1) E = eig(A);矩阵A的所有特征值构成向量E;(2) [V,D]=eig(A);A的所有特征值构成对角阵D,A的特征向量构成V的列向量;2. 多项式多项式的建立:若多的项的全部根构成的向量为X,则以X为根的多项式为poly(X)多项式的根:roots(p)计算以向量p为系数的多项式的根,包括重根,复根多项式求值:polyval(p,x),p是多项式的系数,x可以是一个数也可以是一个矩阵多项式求拟合次数:polyfit(x,y,n),x可以是一个数也可以是一个矩阵,y 是x对应的数或矩阵多项式的四则运算:(1)P1+P2;(2)P1-P2;(3)conv(P1,P2), (4)deconv(P1,P2)四、实验内容1. 已知矩阵11 12 13 1421 22 23 24A= 31 32 33 344142 43 44(1) A(:,1) (2) A(2,:) (3) A(:,2:3)(4) A(2:3,2:3) (5) A(:,1:2:3) (6) A(2:3)(7) A(:) (8) A(:,:) (9) ones(2,2)(10) eye(2) (11) [A,[ones(2,2);eye(2)]] (12) diag(A)(13) diag(A,1) (14) diag(A,-1) (15) diag(A,2)2. 已知2354127354217623A-⎡⎤⎢⎥--⎢⎥=⎢⎥-⎢⎥--⎣⎦.求(1)A的逆;(2)A的行列式;(3)A的迹;(4)A的所有特征向量和特征值。
matlab实验一实验报告
matlab实验一实验报告实验一:Matlab实验报告引言:Matlab是一种强大的数学软件工具,广泛应用于科学计算、数据分析和工程设计等领域。
本实验旨在通过使用Matlab解决实际问题,探索其功能和应用。
一、实验目的本次实验的主要目的是熟悉Matlab的基本操作和常用函数,了解其在科学计算中的应用。
二、实验内容1. 数值计算在Matlab中,我们可以进行各种数值计算,包括基本的加减乘除运算,以及更复杂的矩阵运算和方程求解。
通过编写相应的代码,我们可以实现这些功能。
例如,我们可以使用Matlab计算两个矩阵的乘积,并输出结果。
代码如下:```matlabA = [1 2; 3 4];B = [5 6; 7 8];C = A * B;disp(C);```2. 数据可视化Matlab还提供了强大的数据可视化功能,可以将数据以图表的形式展示出来,更直观地观察数据的规律和趋势。
例如,我们可以使用Matlab绘制一个简单的折线图,来展示某个物体在不同时间下的位置变化。
代码如下:```matlabt = 0:0.1:10;x = sin(t);plot(t, x);xlabel('Time');ylabel('Position');title('Position vs. Time');```3. 图像处理Matlab还可以进行图像处理,包括图像的读取、处理和保存等操作。
我们可以通过Matlab对图像进行增强、滤波、分割等处理,以及进行图像的压缩和重建。
例如,我们可以使用Matlab读取一张图片,并对其进行灰度化处理。
代码如下:```matlabimg = imread('image.jpg');gray_img = rgb2gray(img);imshow(gray_img);```三、实验结果与分析在本次实验中,我们成功完成了数值计算、数据可视化和图像处理等任务。
matlab数值计算实验报告
matlab数值计算实验报告Matlab数值计算实验报告一、实验目的本次实验的目的是通过使用Matlab软件进行数值计算,掌握Matlab的基本操作和数值计算方法,了解数值计算的基本原理和方法,提高数学建模和计算能力。
二、实验内容本次实验主要包括以下内容:1. Matlab基本操作:包括Matlab软件的安装、启动、界面介绍、基本命令和语法等。
2. 数值计算方法:包括数值积分、数值微分、线性方程组的求解、非线性方程的求解、插值和拟合等。
3. 数学建模:通过实际问题的建模,运用Matlab进行数值计算,得到问题的解答。
三、实验步骤1. Matlab基本操作(1)安装Matlab软件:根据官方网站提供的下载链接,下载并安装Matlab软件。
(2)启动Matlab软件:双击Matlab图标,启动Matlab软件。
(3)界面介绍:Matlab软件界面分为命令窗口、编辑器窗口、工作区窗口、命令历史窗口、变量编辑器窗口等。
(4)基本命令和语法:Matlab软件的基本命令和语法包括数学运算、矩阵运算、逻辑运算、控制语句等。
2. 数值计算方法(1)数值积分:使用Matlab中的quad函数进行数值积分,求解定积分。
(2)数值微分:使用Matlab中的diff函数进行数值微分,求解函数的导数。
(3)线性方程组的求解:使用Matlab中的inv函数和\运算符进行线性方程组的求解。
(4)非线性方程的求解:使用Matlab中的fsolve函数进行非线性方程的求解。
(5)插值和拟合:使用Matlab中的interp1函数进行插值和拟合。
3. 数学建模(1)实际问题的建模:选择一个实际问题,将其转化为数学模型。
(2)运用Matlab进行数值计算:使用Matlab进行数值计算,得到问题的解答。
四、实验结果通过本次实验,我掌握了Matlab的基本操作和数值计算方法,了解了数值计算的基本原理和方法,提高了数学建模和计算能力。
在实际问题的建模和运用Matlab进行数值计算的过程中,我深刻体会到了数学建模和计算的重要性,也发现了Matlab在数学建模和计算中的重要作用。
matlab实验报告
matlab实验报告实验名称:MATLAB数值分析实验报告摘要:本实验通过使用MATLAB软件,实现了一些数值分析中重要的算法,包括线性方程组求解、非线性方程求根、数值积分与微分以及常微分方程求解。
在算法实现的过程中,通过观察输出结果验证了算法的正确性和可靠性,并探讨了一些算法实现中需要注意的问题。
1.线性方程组求解线性方程组求解是数值分析中的重要算法之一,是很多数学问题的基础。
本实验中使用了三种求解线性方程组的算法:高斯消元法、LU分解法和共轭梯度法。
在实验中,我们需要注意选取矩阵的条件数,使用一些特殊矩阵,如对角矩阵、三对角矩阵和希尔伯特矩阵等来验证算法的正确性。
2.非线性方程求根非线性方程求根是MATLAB中一个非常实用的函数,能够快速解决大量的非线性方程。
本实验中,我们更深入地探讨了二分法、牛顿法和割线法等算法,通过实现代码,实现了对非线性方程的求解。
同时,对不同的算法进行比较,从而选择合适的算法。
3.数值积分与微分数值积分与微分是宏观物理中需要用到的重要数学问题之一。
本实验中,我们使用了梯形法、辛普森法和龙贝格法等多种数值积分算法实现了函数的数值积分。
同时,也对数值微分的误差和稳定性进行了研究和探讨。
4.常微分方程求解常微分方程求解是MATLAB中最常用的功能之一。
本实验中,我们实现了欧拉法、龙格-库塔法等常微分方程求解算法。
并不断尝试对算法进行改进,提高其效率和精度。
实验结果表明,使用MATLAB实现数值分析算法是非常可靠和高效的。
同时,也需要注意在算法实现中注意问题和选择合适的算法。
MATLAB第二章实验报告
深 圳 大 学 实 验 报 告课程名称: MATLAB实验名称: MATLAB 的数值计算学 院:指导教师:报告人: 组号:学号 实验地点实验时间: 年 月 日提交时间:二、内容和步骤1.创建矩阵(1)直接输入(2)用from:step:to方式(3)用linspace函数:(4)使用特殊矩阵函数,并修改元素(5)获取子矩阵块:.练习:b=logspace(0,4*3.14,20)b =1.0e+12 *1 至17 列0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0001 0.0004 0.0018 0.0082 0.037718 至20 列0.1729 0.7924 3.63082.矩阵运算:(1)利用矩阵除法解线性方程组(2)利用矩阵的基本运算求解矩阵方程练习:(3)计算矩阵的特征值和特征向量。
验证特征值和特征向量与该矩阵的关系练习:将矩阵的乘除运算改为数组的点乘和点除运算:(4)利用数学函数进行矩阵运算w=logspace(-2,1,10)w =0.0100 0.0215 0.0464 0.1000 0.2154 0.4642 1.0000 2.1544 4.6416 10.0000LW=-20*log10(sqrt((2*w).^2 + 1))LW =-0.0017 -0.0081 -0.0373 -0.1703 -0.7396 -2.6993 -6.9897 -12.9151 -19.4040 -26.0314FW=-atan(2*w)*180/piFW =-1.1458 -2.4673 -5.3037 -11.3099 -23.3106 -42.8711 -63.4349 -76.9341 -83.8517 -87.13763.生成多维数组:c(18)=[]c =1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8练习:使用数组c编辑窗口查看变量a,b和c。
matlab数值分析实验报告
matlab数值分析实验报告Matlab数值分析实验报告引言数值分析是一门研究利用计算机进行数值计算和模拟的学科,它在科学计算、工程技术和金融等领域有着广泛的应用。
本次实验报告将介绍在Matlab环境下进行的数值分析实验,包括数值微分、数值积分和线性方程组求解等内容。
一、数值微分数值微分是通过数值方法计算函数的导数,常用的数值微分方法有前向差分、后向差分和中心差分。
在Matlab中,可以使用diff函数来计算函数的导数。
例如,对于函数f(x)=x^2,在Matlab中可以使用如下代码进行数值微分的计算:```matlabsyms x;f = x^2;df = diff(f, x);```二、数值积分数值积分是通过数值方法计算函数的定积分,常用的数值积分方法有梯形法则、辛普森法则和龙贝格积分法。
在Matlab中,可以使用trapz、quad和integral等函数来进行数值积分的计算。
例如,对于函数f(x)=sin(x),可以使用如下代码进行数值积分的计算:```matlabx = linspace(0, pi, 100);y = sin(x);integral_value = trapz(x, y);```三、线性方程组求解线性方程组求解是数值分析中的重要问题,常用的求解方法有高斯消元法和LU 分解法。
在Matlab中,可以使用\操作符来求解线性方程组。
例如,对于线性方程组Ax=b,可以使用如下代码进行求解:```matlabA = [1, 2; 3, 4];b = [5; 6];x = A\b;```四、实验结果与分析在本次实验中,我们分别使用Matlab进行了数值微分、数值积分和线性方程组求解的计算。
通过实验结果可以发现,Matlab提供了丰富的数值计算函数和工具,能够方便地进行数值分析的计算和求解。
数值微分的计算结果与解析解相比较,可以发现数值微分的误差随着步长的减小而减小,但是当步长过小时,数值微分的误差会受到舍入误差的影响。
matlab数值计算实验报告
matlab数值计算实验报告数值计算实验报告实验目的本实验的目的是通过MATLAB编程,实现数值计算的多种方法,体会数值计算的方法,并且对数值计算的应用有更加深入的了解,对数值计算有更加系统的认识。
实验内容1. 实验中以MATLAB编程求解等折线上的单点,给出相应的曲线图,并用相应的代码计算出可变参数系数n,写出实验步骤和实验结果。
步骤:(1)设计MATLAB程序,即根据题中给出的函数,确定参数n、x、y的取值范围;(2)在MATLAB中求解单点,并绘制出曲线图;(3)得出可变参数系数n的值。
实验结果:可变参数系数n的值为:n=2.3125。
2. 通过MATLAB编程,实现有Bezier曲线的绘制,给出相应的曲线图,并用相应的代码计算出可变参数系数n,写出实验步骤和实验结果。
步骤:(1)设计MATLAB程序,即根据题中给出的函数,确定参数n、x、y的取值范围;(2)在MATLAB中求解单点,并绘制出Bezier 曲线图;(3)得出可变参数系数n的值。
实验结果:可变参数系数n的值为:n=3.5。
3. 利用MATLAB编程,实现有牛顿迭代法求解非线性方程组,给出相应的收敛图,并用相应的代码计算出可变参数系数A、B和X,写出实验步骤和实验结果。
步骤:(1)根据实验题目给出的非线性方程组,确定A、B、X 的取值范围;(2)用MATLAB编程实现牛顿迭代法求解,在迭代收敛的过程中对收敛的每个步骤的X值画出收敛图;(3)得出可变参数系数A、B和X的值。
实验结果:可变参数系数A的值为:A=3.7;可变参数系数B的值为:B=5.5;可变参数系数X的值为:X=2.0。
实验结论通过本次实验,我们学习了利用MATLAB编程实现数值计算的多种方法,包括等折线上求解单点,Bezier曲线绘制,牛顿迭代法求解非线性方程组等等。
并且我们对数值计算的应用有了更加深入的了解,对数值计算有了更加系统的认识。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《工程数值计算》上机实验报告(第一次)
学生姓名 *** 班级 ******** 学号 *********
任课教师 *** 上机时间 2019 年 10月 31日,报告完成 2019 年 11月 2 日1、实验目的:
设计一个圆柱凸轮,底圆半径 R=200mm,凸轮的上端面不在同一平面上,圆柱的高度要根据动杆位移变化的需要进行设计和加工。
工程上,可根据圆周等分9个点的高度值y(θi)(见下表),确定圆周上任何一点的圆柱高度 y(θ),用于凸轮的加工和制造。
任务 1.1:分别用以下方法确定角度 35°、110°、250°对应的圆柱高度。
(1)待定系数法插值(提示:参考程序 1.1)
(2)拉格朗日插值(参考程序:m2_4;m2_5)
任务 1.2:分别用 3 次和 5 次多项式回归方法,拟合凸轮柱体高度轮廓函数 y(θ)(提示:可采用常用函数 polyfit,参考程序 1.2)。
2、计算方法:针对实验任务,结合课堂内容,说明解决方法,如:采用何种理论,列出相关公式,说明计算步骤,写出程序框图等;
(1)待定系数法插值
计算原理:
设多项式为P n(x)=a0+a1x+a2x2+⋯a n x n(n≤m)
将数据代如后得到线性方程组
{a0+a1x0+a2x02+⋯+a n x0n=y0 a0+a1x1+a2x12+⋯+a n x1n=y1
⋮
a0+a1x m+a2x m2+⋯+a n x m n=y m
写成矩阵形式
[1x0x02⋯x0n
1x1x12⋯x1n
1x2x22⋯x2n
⋮⋮⋮⋱⋮
1x m x m2⋯x m n][
a0
a1
a2
⋮
a n]
=
[
y0
y1
y2
⋮
y n]
(写成V*a=yi)
解得a=V−1∗yi
代入x=35、110、250;解得对应y 值。
程序框图如下:
(2)拉格朗日插值
计算原理:
给定n 个插值节点和对应的函数值,利用n 次拉格朗日插值多项式公式L n (x )=∑y k l k (x )n k=0,其中l k (x )=
(x−x 0)⋯(x−x k−1)(x−x k+1)⋯(x−x n )(x k −x 0)⋯(x k −x k−1)(x k −x k+1)⋯(x k −x n )
,可以得到插值区间内任意x 的函
数值y 为y(x)=L n (x )。
从公式中可以看出,生成的多项式与用来插值的数据密切相关,数据变化则函数要重新计算,所以当插值数据特别多时,计算量会比较大。
程序框图:
输入
V nn ,i =1,j =1
V (i,j )=xi(i)(j−1)
i<=10?
i=i+1
j<=10?
j=j+1
a=inv(V)*yi
绘制图形
计算x=35,110,250 时的y
输出
否
是
否
是
(3)3次5次多项式回归
计算原理: 最小二乘法拟合
程序流程图:
输入
S=0 , i=1 , j=1
i<=10?
建立矩阵t 1×10
j<=10?
I 不等于j?
t =t ×
xi −x(j)
x (i )−x(j)
j=j+1
yi=s
绘制(xi ,yi )图形 输出xi=35、110、250时yi 值
i=i+1
S=s+t*y(i)
是
否
否
是
是
否
输入数据
使用polyfit 函数拟合多项式
绘制图形
3、程序设计:根据前面提到的计算方法编写程序;写出程序代码,并结合计算方法对程序中关键步骤进行必要的文字说明;
(1)待定系数法插值
clear;
xi=[0;40;80;120;160;200;240;280;320;360];%(角度数据)
yi=[50.3;51.4;32.7;9.22;6.22;14.7;23.6;32.5;41.4;50.3];%(高度数据)
n=length(xi);
V=ones(n);%(生成一个全是1的n阶方阵)
for i=1:n %(将已知x0⋯x n的0、1、2……n次方填充到矩阵V中)
for j=1:n
V(i,j)=xi(i)^(j-1);
end
end
a=inv(V)*yi; %(求矩阵V的逆矩阵与矩阵yi的值,即对应待定系数的值)
xs=[35;110;250];
for i=1:length(xs) %(求35、110、250对应的函数值)
ys(i)=a(1)+a(2)*xs(i)+a(3)*xs(i)^2+a(4)*xs(i)^3+a(5)*xs(i)^4+a(6)*xs(i)^5+a( 7)*xs(i)^6+a(8)*xs(i)^7+a(9)*xs(i)^8+a(10)*xs(i)^9;
end
figure;%(建立图形)
plot(xs,ys,'r*',xi,yi,'ko-')%(绘制图形)
ys%(输出35、110、250对应高度值)
ys =
51.1889 13.3763 25.7382 %(35、110、250对应高度值输出结果)
(2)拉格朗日插值
x=[0;40;80;120;160;200;240;280;320;360];
xi=1:0.01:360;
xx=[35;110;250]
s=0;
for i=1:length(x) %(拉格朗日公式插值计算)
t=ones(1,length(xi));%(建立一个列向量t1×10)
for j=1:length(x)
if j~=i,
t=t.*(xi-x(j))/(x(i)-x(j));
end
end
s=s+t*y(i);
end
yi=s;
for i=1:length(xi)%(根据插值结果计算35、110、250对应高度值)
if xi(i)==xx(1),
yy(1)=yi(i)
elseif xi(i)==xx(2),
yy(2)=yi(i)
elseif xi(i)==xx(3),
yy(3)=yi(i)
end
end
xx%(输出35、110、250)
yy%(输出35、110、250对应高度值)
plot(xi,yi,'r-');%(绘制插值图形) ………………………………………………………………………………………………………………………………………………….
(3.1)三次多项式回归
x=[0;40;80;120;160;200;240;280;320;360];
a=polyfit(x,y,3);%(3阶多项式进行最小二乘法拟合)
xi=1:0.01:360;
yi=polyval(a,xi);%(多项式估值运算)
plot(x,y,'go',xi,yi,'b--');%(绘制拟合曲线)…………………………………………………………………………………………………………………………………………………
(3.2)五次多项式回归
x=[0;40;80;120;160;200;240;280;320;360];
y=[50.3;51.4;32.7;9.22;6.22;14.7;23.6;32.5;41.7;50.3];
a=polyfit(x,y,5); %(5阶多项式进行最小二乘法拟合)
xi=1:0.01:360;
yi=polyval(a,xi); %(多项式估值运算)
plot(x,y,'go',xi,yi,'b--'); %(绘制拟合曲线)
4、结果分析:给出计算结果(可用数值、图表、曲线表示),并进行分析;(1)待定系数法插值
1.1输出结果(插值图形):
(2)拉格朗日插值
2.1输出结果(图形):
2.2输出结果(35、110、250对应高度值):
待定系数法插值与拉格朗日插值结果相近,从图中明显看出误差较大。
(3)3次多项式回归输出结果:
(4)5次多项式回归输出结果:
三次相比较于五次多项式回归,误差较小。
5、其他:说明实验中发现的问题及办法,个人体会、收获、思考等。
体会:熟练掌握编成,能通过计算机计算大大减少工作量。