多篇数值分析实践报告_matlab

合集下载

数值分析matlab实验报告

数值分析matlab实验报告

数值分析matlab实验报告数值分析MATLAB实验报告引言:数值分析是一门研究利用计算机进行数值计算和解决数学问题的学科。

它在科学计算、工程技术、金融等领域中有着广泛的应用。

本实验旨在通过使用MATLAB软件,探索数值分析的基本概念和方法,并通过实际案例来验证其有效性。

一、插值与拟合插值和拟合是数值分析中常用的处理数据的方法。

插值是通过已知数据点之间的函数关系,来估计未知数据点的值。

拟合则是通过一个函数来逼近一组数据点的分布。

在MATLAB中,我们可以使用interp1函数进行插值计算。

例如,给定一组离散的数据点,我们可以使用线性插值、多项式插值或样条插值等方法,来估计在两个数据点之间的未知数据点的值。

拟合则可以使用polyfit函数来实现。

例如,给定一组数据点,我们可以通过最小二乘法拟合出一个多项式函数,来逼近这组数据的分布。

二、数值积分数值积分是数值分析中用于计算函数定积分的方法。

在实际问题中,往往无法通过解析的方式求得一个函数的积分。

这时,我们可以使用数值积分的方法来近似计算。

在MATLAB中,我们可以使用quad函数进行数值积分。

例如,给定一个函数和积分区间,我们可以使用quad函数来计算出该函数在给定区间上的定积分值。

quad函数使用自适应的方法,可以在给定的误差限下,自动调整步长,以保证积分结果的精度。

三、常微分方程数值解常微分方程数值解是数值分析中研究微分方程数值解法的一部分。

在科学和工程中,我们经常遇到各种各样的微分方程问题。

而解析求解微分方程往往是困难的,甚至是不可能的。

因此,我们需要使用数值方法来近似求解微分方程。

在MATLAB中,我们可以使用ode45函数进行常微分方程数值解。

例如,给定一个微分方程和初始条件,我们可以使用ode45函数来计算出在给定时间范围内的解。

ode45函数使用龙格-库塔方法,可以在给定的误差限下,自动调整步长,以保证数值解的精度。

结论:本实验通过使用MATLAB软件,探索了数值分析的基本概念和方法,并通过实际案例验证了其有效性。

数值分析实践报告-matlab

数值分析实践报告-matlab

数值计算实践数值实验报告院(系、部):数理系姓名:夏赞勋081628学号:班级:科082指导教师: 徐红敏2011年01月14日北京科082 夏赞勋(081628) 北京石油化工学院数理系拉格朗日插值法拉格朗日插值法基本原理:通过平面上不同两点可以确定一条直线,这就是拉格朗日线性插值问题,对于不在同一条直线的三个点得到的插值多项式则为抛物线。

拉格朗日插值的基多项式(即基函数)为:n i x x ••x •x x l ij j ji i i ,,2,1,0,)(0 =--=∏≠=有了基函数以后就可以直接构造如下多项式:∑==ni i i n x l x f p 0)()(该多项式就是拉格朗日插值法所求得的插值多项式.拉格朗日插值法算法:1、根据所给点),(i i y x 的坐标依次写出其差值基函数(用for 循环可以轻易解决)n i x x ••x •x x l ij j ji i i ,,2,1,0,)(0 =--=∏≠=2、将差值基函数与其对应的点的函数值相乘得:n i x l x f i i ,,2,1,0),()( =3、将2中各项累加即得差值多项式:∑==ni i i n x l x f p 0)()(拉格朗日插值法程序:fu nct ion lag range (A)%A为一个只有两行的矩阵,第一行为插值点,第二行为插值点对应的函数值[m,n]=siz e(A); f=1;p=0;%两个用到的变量syms xfor i=1:nf=(x—A(1,i))*f;endfor j=1:ng(j)=f/(x-A(1,j));%求插值基函数的分母h(j)=subs(g(j),x,A(1,j));%求插值基函数的分子s(j)=g(j)/h(j)*A(2,j);%插值基函数endfor k=1:ns(j)=collect(s(j));%合并同类项endfor i=1:np=p+s(i);endfprintf(’拉格朗日插值法可得多项式:')collect(p)%可用lagrange([13 6 8;4 6 9 12])调试例:有如下表格中有四个插值点及其对应的函数值,用lagrange插值法写出其三次插值多项式:解:在matlab命令窗口输入:lagrange([1 3 6 8;4 6 9 12])可得运行结果:拉格朗日插值法可得多项式:ans =x^3/70 - x^2/7 + (97*x)/70 + 96/35ﻬ牛顿插值法牛顿插值法基本原理:拉格朗日插值多项式的理论在许多方面都有应用,是很不错的一种方法,但就插值问题而言,如果增加一个插值点,原先计算插值的多项式就没有用了,即拉格朗日插值法的继承性很差,牛顿插值法就很好地解决了这个问题,具有很好的继承性。

MATLAB_实习报告范文大全

MATLAB_实习报告范文大全

MATLAB_实习报告范文大全第一篇:MATLAB_实习报告实习报告实习题目:专业:学号:的设计与绘图MATLAB 一.概述MATLAB 作为一种高级科学计算软件,是进行算法开发、数据可视化、数据分析以及数值计算的交互式应用开发环境。

世界上许许多多的科研工作者都在使用 MATLAB 产品来加快他们的科研进程,缩短数据分析和算法开发的时间,研发出更加先进的产品和技术。

二.实验目的1.进一步熟悉MATLAB的软件环境和基本使用方法;2.巩固运用MATLAB、矩阵运算、多项式运算、字符串、单元数组、符号计算功能、绘图及句柄图形及它们的命令语句;3.学习和巩固数字图形图像处理在MATLAB中的知识和运用;4.培养我们独立自学、设计和撰写实验报告的能力;5.通过对MATLAB的进一步学习,是我们加深所学内容的认识,理解,掌握,能把所学知识运用到实际工作中;三.实习日记1.熟悉MATLAB的软件环境和基本使用方法(第一周)MATLAB的语言的基本功能和特点:它是一种高级科学计算语言,相对于传统的C、C++ 或者FORTRAN 语言,MATLAB 提供了高效快速解决各种科学计算问题的方法。

它具有数学计算、开发工具、数据的可视化、交互式编辑创建图形、集成的算法开发编程语言和环境、图形用户界面开发环境——GUIDE、开放性、可扩展性强、专业应用工具箱等强大的功能。

具有易于学习、使用方便、支持多种操作系统、丰富的内部函数、强大的图形和符号功能等优点。

路径设置:除 MATLAB 默认的搜索路径外,用户可以设置搜索路径。

设置方法为:选择 MATLAB 窗口中的 File | Set Path 命令,进入路径搜索对话框。

MATLAB 的搜索顺序:当在命令窗口中或者一个 M 文件中输入一个元素名时,MATLAB 按照下面的顺序搜索该元素的意义,以元素foo 为例:1)查找工作区中是否存在名为 foo 的变量; 2)在当前路径中查找是否存在名 foo.m 的文件;3)按照顺序查找搜索路径中是否存在该文件。

数值分析实验报告Matlab仿真资料

数值分析实验报告Matlab仿真资料

数值分析实验报告学院:电气工程与自动化学院专业:控制理论与控制工程姓名:李亚学号:61201401622014 年 12 月24日实验一 函数插值方法一、目的和意义1、 学会常用的插值方法,求函数的近似表达式,以解决其它实际问题;2、 明确插值多项式和分段插值多项式各自的优缺点;3、 熟悉插值方法的程序编制;4、 如果绘出插值函数的曲线,观察其光滑性。

二、实验原理1、 Lagrange 插值公式00,()n ni n k k i i k k i x x L x y x x ==≠⎛⎫-= ⎪-⎝⎭∑∏编写出插值多项式程序;2、 给出插值多项式或分段三次插值多项式的表达式;三、实验要求对于给定的一元函数)(x f y =的n+1个节点值(),0,1,,j j y f x j n ==。

试用Lagrange 公式求其插值多项式或分段二次Lagrange 插值多项式。

数据如下:(1求五次Lagrange 多项式5L ()x ,计算(0.596)f ,(0.99)f 的值。

(提示:结果为(0.596)0.625732f ≈, (0.99) 1.05423f ≈)试构造Lagrange 多项式6,和分段三次插值多项式,计算的(1.8)f ,(6.15)f 值。

(提示:结果为(1.8)0.164762f ≈, (6.15)0.001266f ≈)四、实验过程1.进入matlab开发环境;2.根据实验内容和要求编写程序,程序如下所示,程序通过运用function 函数编写,生成.m文件。

调用时只需要在命令窗口调用y=Lagrange(A,input)就可以实现任意次数拉格朗日插值法求解。

function y=Lagrange(A,input)[a,b]=size(A);x=input;y=0;for j=1:aMj=1;Nj=1;for k=1:aif(k==j)continue;endMj=Mj*(x-A(k,1));Nj=Nj*(A(j,1)-A(k,1));endy=y+A(j,2)*Mj/Nj;end3.调试程序并运行程序;调用拉格朗日脚本文件对以上两个表格数据求解,表格一对应MATLAB向量A;表格二对应向量I。

数值分析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数值分析实验报告班级:072115姓名:李凯学号:20111003943实验二:矩阵与向量运算实验目的:在MATLAB里,会对矩阵与向量进行加、减、数乘、求逆及矩阵特征值运算,以及矩阵的LU分解。

设A是一个n×n方阵,X是一个n维向量,乘积Y=AX可以看作是n维空间变换。

如果能够找到一个标量λ,使得存在一个非零向量X,满足:AX=λX (3.1)则可以认为线性变换T(X)=AX将X映射为λX,此时,称X 是对应于特征值λ的特征向量。

改写式(3.1)可以得到线性方程组的标准形式:(A-λI)X=0 (3.2)式(3.2)表示矩阵(A-λI)和非零向量X的乘积是零向量,式(3.2)有非零解的充分必要条件是矩阵(A-λI)是奇异的,即:det(A-λI)=0该行列式可以表示为如下形式:a11–λa12 (1)a21 a22 –λ…a2n =0 (3.3)…………A n1 a n2 …a nn将式(3.3)中的行列式展开后,可以得到一个n阶多项式,称为特征多项式:f(λ)=det(A-λI)=(-1)n(λn+c1λn-1+c2λn-2+…+c n-1λ+c n) (3.4) n阶多项式一共有n个根(可以有重根),将每个根λ带入式(3.2),可以得到一个非零解向量。

习题:求下列矩阵的特征多项式的系数和特征值λj:3 -1 0A= -1 2 -10-1 3解:在MATLAB中输入命令:A=【3 -1 0;-1 2 -1;0 -1 3】;c=poly(A)roots(c)得到:实验四:Lagrange插值多项式实验目的:理解Lagrange插值多项式的基本概念,熟悉Lagrange插值多项式的公式源代码,并能根据所给条件求出Lagrange插值多项式,理解龙格现象。

%功能:对一组数据做Lagrange插值%调用格式:yi=Lagran_(x,y,xi)%x,y:数组形式的数据表%xi:待计算y值的横坐标数组%yi:用Lagrange还擦之算出y值数组function fi=Lagran_(x,f,xi)fi=zeros(size(xi));np1=length(f);for i=1:np1z=ones(size(xi));for j=i:np1if i~=j,z=z.*(xi-x(j))/(x(i)-x(j));endendfi=fi+z*f(i);endreturn习题:已知4对数据(1.6,3.3),(2.7,1.22),(3.9,5.61),(5.6,2.94)。

数值分析matlab完整版实验报告

数值分析matlab完整版实验报告

《数值分析》报告运用Matlab求解非线性方程的根学院:专业:班级:姓名:学号:1. 目的掌握非线性方程求根的方法,并选取实例运用MATLAB 软件进行算法的实现,分别用牛顿法、弦截法和抛物线法求非线性方程的根。

2. 报告选题报告选取《数值分析(第四版)》290页习题7作为研究对象,即求3()310f x x x =--=在02x =附近的根。

根的准确值* 1.87938524...x =,要求结果准确到四位有效数字。

(1) 用牛顿法;(2) 用弦截法,取02x =,1 1.9x =; (3) 用抛物线法,取01x =,13x =,22x =。

3. 理论基础 (1) 牛顿迭代法牛顿迭代法是一种特殊的不动点迭代法,其计算公式为1(),0,1,2,...'()k k k k f x x x k f x +=-=其迭代函数为()()'()f x x x f x ϕ=-牛顿迭代法的收敛速度,当(*)0,'(*)0,''(*)0f x f x f x =≠≠时,容易证明,'(*)0f x ≠,''(*)''(*)0'(*)f x x f x ϕ=≠,牛顿迭代法是平方收敛的,且12''(*)lim2'(*)k k ke f x e f x +→∞=。

(2)弦截法将牛顿迭代法中的'()k f x 用()f x 在1k x -,k x 处的一阶差商来代替,即可得弦截法111()()()()k k k k k k k f x x x x x f x f x ++-=--- 。

(3)抛物线法弦截法可以理解为用过11(,()),(())k k k k x f x x f x ---两点的直线方程的根近似替()0f x =的根。

若已知()0f x =的三个近似根k x ,1k x -,2k x -用过1122(,()),(,()),(,())k k k k k k x f x x f x x f x ----的抛物线方程的根近似代替()0f x =的根,所得的迭代法称为抛物线法,也称密勒(Muller)法。

数值分析实验报告matlab

数值分析实验报告matlab

数值分析实验报告matlab数值分析实验报告引言:数值分析是一门研究利用计算机数值方法解决数学问题的学科,它在科学计算、工程设计、金融分析等领域具有重要的应用价值。

本实验报告旨在通过使用MATLAB软件,探索数值分析的基本原理和方法,并通过实际案例加深对数值分析的理解。

一、误差分析在数值计算中,误差是无法避免的。

误差分析是数值分析中的重要一环,它帮助我们了解数值计算的准确性和稳定性。

在实验中,我们通过计算机模拟了一个简单的数学问题,并分别计算了绝对误差和相对误差。

通过比较不同算法的误差大小,我们可以选择最适合的算法来解决实际问题。

二、插值与拟合插值和拟合是数值分析中常用的方法,它们可以通过已知的数据点来推导出未知数据点的近似值。

在本实验中,我们通过MATLAB的插值函数和拟合函数,分别进行了插值和拟合的实验。

通过比较不同插值和拟合方法的结果,我们可以选择最适合的方法来处理实际问题。

三、数值积分数值积分是数值分析中的重要内容,它可以用来计算曲线下的面积或函数的积分值。

在实验中,我们通过MATLAB的数值积分函数,对一些简单的函数进行了积分计算。

通过比较数值积分和解析积分的结果,我们可以评估数值积分的准确性和稳定性,并选择最适合的积分方法来解决实际问题。

四、常微分方程的数值解法常微分方程是数值分析中的重要内容,它可以用来描述许多自然现象和工程问题。

在实验中,我们通过MATLAB的常微分方程求解函数,对一些简单的微分方程进行了数值解法的计算。

通过比较数值解和解析解的结果,我们可以评估数值解法的准确性和稳定性,并选择最适合的数值解法来解决实际问题。

五、线性方程组的数值解法线性方程组是数值分析中的经典问题,它在科学计算和工程设计中广泛应用。

在实验中,我们通过MATLAB的线性方程组求解函数,对一些简单的线性方程组进行了数值解法的计算。

通过比较数值解和解析解的结果,我们可以评估数值解法的准确性和稳定性,并选择最适合的数值解法来解决实际问题。

数值分析实验报告(Matlab实现)(同名6593)

数值分析实验报告(Matlab实现)(同名6593)

学生实验报告实验课程名称数值分析开课实验室数学与统计学院实验室学院2010 年级数学与应用数学专业班01班学生姓名学号开课时间2012 至2013 学年第一学期end y=x;format short ;% 设置为默认格式显示,显示5位(2) 建立MATLAB 界面利用MA TLAB 的GUI 建立如下界面求解线性方程组:详见程序。

五、 计算实例、数据、结果、分析下面我们对以上的结果进行测试,求解:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡------725101391444321131243301024321x x x x 输入数据后点击和,得到如下结果:更改以上数据进行测试,求解如下方程组:123443211343212343112341x x x x ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥-⎢⎥⎢⎥⎢⎥-⎣⎦⎣⎦⎣⎦得到如下结果:六、 实验中遇到的问题及解决办法在本实验中,遇到的问题主要有两个:(1) 如何将上述的Gauss 消元法的算法在MA TLAB 中实现针对此问题我借鉴了网上以及 课本上的算法的MATLAB 实现的程序;(2) 如何将建立界面使得可以随意输入想要求解的相关矩阵后就可以直接求解针对此问题,我通过网上的一些关于MA TLAB 的GUI 设计的相关资料,总结经验完成了此项任务。

七、 实验结论通过以上的测试,我们发现以上算法和程序能够求出线性方程组的比较精确解。

八、 参考文献[1]杨大地,王开荣 .2006.数值分析.北京:科学出版社[2]何光辉.2008. 数值分析实验. 重庆大学数理学院数学实验教学中心 [3]百度文库,百度知道教师签名年 月 日详见程序。

五、计算实例、数据、结果、分析下面我们对以上的问题进行测试:输入数据:计算结果如下:当x=2.101时,x=4.234时,同理可以测试(4)中的5的值。

六、实验中遇到的问题及解决办法在本实验中,遇到的问题主要有两个:(3)如何将上述的插值的算法在MA TLAB中实现针对此问题我借鉴了网上以及课本上的算法的MATLAB实现的程序;(4)如何将建立界面使得可以随意输入想要求解的相关矩阵后就可以直接求解针对此问题,我通过网上的一些关于MA TLAB的GUI设计的相关资料,总结经验完成了此项任务。

matlab实验报告

matlab实验报告

matlab实验报告实验报告:Matlab实验分析1. 实验目的本实验旨在通过Matlab软件完成一系列数值计算和数据分析的任务,包括绘制曲线、解方程、矩阵运算等,以加深对Matlab软件的理解和掌握。

2. 实验内容2.1 绘制函数曲线首先,我们通过在Matlab中输入函数的表达式来绘制函数曲线。

例如,我们可以输入y = sin(x)来绘制正弦函数的曲线。

另外,我们还可以设置曲线的颜色、线型和坐标轴范围等。

2.2 解方程接下来,我们使用Matlab来解方程。

对于一元方程,我们可以使用solve函数来求出方程的解。

例如,我们输入syms x; solve(x^2 - 2*x - 8)来解方程x^2 - 2x - 8 = 0。

而对于多元方程组,我们可以使用solve函数的向量输入形式来求解。

例如,我们输入syms x y; solve(x^2 + y^2 - 1, x - y - 1)来求解方程组x^2 + y^2 - 1 = 0和x - y - 1 = 0的解。

2.3 矩阵运算Matlab也可以进行矩阵运算。

我们可以使用矩阵相乘、相加和取逆等运算。

例如,我们可以输入A = [1 2; 3 4]和B = [5 6;7 8]来定义两个矩阵,然后使用A * B来计算它们的乘积。

3. 实验结果与分析在本实验中,我们成功完成了绘制函数曲线、解方程和矩阵运算等任务。

通过Matlab软件,我们可以快速、准确地进行数值计算和数据分析。

使用Matlab的高级函数和工具箱,我们可以更方便地处理复杂的数值计算和数据分析问题。

4. 实验总结通过本次实验,我们进一步加深了对Matlab软件的理解和掌握。

Matlab提供了丰富的函数库和工具箱,适用于各种不同的数值计算和数据分析任务。

在日常科研和工程实践中,Matlab是一个非常强大和方便的工具,可以帮助我们更高效地完成任务。

matlab实习报告二5篇

matlab实习报告二5篇

matlab实习报告二5篇第一篇:matlab实习报告二MATLAB实习报告(2)实验二 MATLAB矩阵分析与处理王夏一、实验目的1、掌握生成特殊矩阵的方法。

2、掌握矩阵分析的方法。

3、用矩阵求逆发解线性方程组。

二、实验内容1、设有分块矩阵A=[E3×3 R3×2;O2×3 S2×2],其中E、R、O、S分别为单位矩阵、随机矩阵、零矩阵和对角阵,试通过数值计算验证A²=[E R+RS;O S²]。

程序清单:E=eye(3);R=rand(3,2);O=zeros(2,3);S=diag([4,5]);A=[E R;O S] ;A2=A^2;C=[E R+R*S;O S^2];length(find(A2==C))==25 运行结果:ans =12、产生5阶希尔伯特矩阵H和5阶帕斯卡矩阵P,且求其行列式的值Hh和Hp以及他们的条件数Th和Tp,判断哪个矩阵的性能更好,为什么?程序清单:format rat H=hilb(5);format short P=pascal(5);Hh=det(H);Hp=det(P);Th=cond(A);Tp=cond(P);运行结果:Hh =3.7493e-012 Hp =1 Th =5.5228 Tp =8.5175e+003 实验收获:会建立希尔伯特矩阵和帕斯卡矩阵,知道怎么求矩阵行列式的值以及条件数。

希尔伯特矩阵的性能更好,条件数越接近1的矩阵性能越好。

3、建立一个5×5矩阵,求它的行列式值、迹、秩和范数。

程序清单:A=[1:5;1:0.1:1.5;2 5 7 3 9;2:6;3:0.4:4.6]Ha=det(A);Ra=rank(A);Ta=trace(A);Na=norm(A);运行结果:Ha =1.4421e-031 Ra = 3 Ta =18.7000 Na =19.49664、已知向量A,求A的特征值及特征向量,并分析其数学意义。

数值分析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计算实验报告

数值分析MATLAB 计算实验报告姓名 班级 学号一、实验名称根据给定数据利用MATLAB 编程做出4次牛顿插值与三次样条插值的插值函数与被插值函数图形 二、实验目的1.理解牛顿插值的定义并且编写出与其算法对应的MATLAB 程序代码;2.了解三次样条插值的构造方法并且编写出与其算法对应的MATLAB 程序代码; 3.体会利用MATLAB 软件进行数值计算 。

三、实验内容已知函数在下列各点的值为:x i 0.2 0.4 0.6 0.8 1 .0 f(x i )0.980.920.810.640.38试用4次牛顿插值多项式P 4(x)及三样条函数S(x)(自然边界条件)对数据进行插值。

使用Matlab 软件用图给出{(x i ,y i ),x i =0.2+0.08i, i=0,1,11,10},P 4(x)及S(x) 四、算法描述 1.牛顿插值公式:P n (x)=f(x 0)+f[x 0,x 1](x-x 0)+f[x 0,x 1,x 2](x-x 0)(x-x 1)+… +f[x 0,x 1,…,x n ](x-x 0)…(x-x n-1),当n=4时,将插值点x i 及插值点对应的函数值f(x i )带入上式可得4次牛顿插值多项式。

2.三次样条插值:使用三弯矩法,令n i x s M i i ,,2,1,0),( =''=, 首先,以(x i ,M i ),(x i-1,M i-1)为结点作线性插值:i ii i i i M h x x M h x x x s 11)(---+--='',其中h i =x i -x i-1紧接着,连续积分两次:213131)(6)(6)(c x c x x h M x x h M x s i ii i i i ++-+-=--再利用插值条件11)(,)(--==i i i i y x s y x s)()6()()6()(6)(6)(1113131-------+--+-+-=i i ii i i i i i i i i i i i i x x h M h y x x h Mh y x x h M x x h M x sn i x x x i i ,,2,1,1 =≤≤-然后利用s '(x)在内结点连续的条件求M i ,s '(x i -0)=s '(x i +0))6()6()(2)(2)(112121i i i i i i i i i i i i i i h Mh y h M h y x x h M x x h M x s -+---+--='----ii ii i i i i i i i i h y y M M h x x h M x x h M 112121)(6)(2)(2-----+---+--=ii x x x ≤≤-11111211211)(6)(2)(2)(++++++++-+---+--='i ii i i i i i i i i i h y y M M h x x h M x x h M x s1+≤≤i i x x xii i i i i i i h y y M h M h x s 1163)0(---++=-'1111163)0(+++++-+--=+'i ii i i i i i h y y M h M h x s得i i i i i i i h y y M h M h 1163---++1111163+++++-+--=i ii i i i i h y y M h M hii i i i i i i i i i i i h y y h y y M h M h h M h 11111116)33(6-+++++----=+++)(62111111111ii i i i i i i i i i i i i i i i h y y h y y h h M h h h M M h h h -++++++-+---+=++++1,,2,1,211-==+++-n i M M M i i i i i i βαγ最后,根据三条边界条件,求出的值。

matlab实习报告7

matlab实习报告7

matlab实习报告7《matlab 实习报告 7》在大学的学习生涯中,我有幸参与了一次 MATLAB 的实习,这次实习让我对这一强大的数学计算和可视化工具,有了更深入的理解和掌握。

实习伊始,我对 MATLAB 的认知还停留在书本上的理论知识和简单的示例代码。

然而,随着实习的推进,我逐渐发现 MATLAB 的强大功能远远超出了我的想象。

首先,我学习了MATLAB 的基本语法和数据类型。

整数、浮点数、字符串、数组等各种数据类型在 MATLAB 中都有独特的表示和操作方式。

通过不断地练习和实践,我逐渐熟悉了如何定义变量、进行数据运算以及处理不同类型的数据。

在掌握了基本的数据操作后,我开始深入学习 MATLAB 的函数编写。

函数是 MATLAB 中实现复杂功能的重要手段。

通过自定义函数,我能够将重复使用的代码段封装起来,提高代码的可读性和可维护性。

例如,我编写了一个用于计算两个矩阵乘积的函数,通过输入两个矩阵,函数能够返回它们的乘积结果。

这个过程不仅锻炼了我的编程思维,还让我更加熟悉了矩阵运算的原理和方法。

接下来,我接触到了 MATLAB 的绘图功能。

绘图是直观展示数据和结果的重要方式。

我学会了使用 plot 函数绘制简单的折线图、使用bar 函数绘制柱状图、使用 hist 函数绘制直方图等等。

通过对数据进行可视化,我能够更清晰地理解数据的分布和趋势,从而为进一步的分析和处理提供了有力的支持。

在实习过程中,我还参与了一个实际的项目——图像去噪。

图像在采集和传输过程中往往会受到噪声的干扰,影响图像的质量和后续的处理。

利用 MATLAB 提供的图像处理工具和函数,我尝试了多种去噪算法,如均值滤波、中值滤波和高斯滤波等。

通过对不同算法的效果进行比较和分析,我最终找到了一种最适合当前图像的去噪方法。

这个过程让我深刻体会到了 MATLAB 在实际应用中的强大能力,也让我明白了理论知识与实际应用之间的紧密联系。

另外,MATLAB 的矩阵运算功能给我留下了深刻的印象。

matlab数值计算实验报告

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数值分析实验报告摘要:本实验通过使用MATLAB软件,实现了一些数值分析中重要的算法,包括线性方程组求解、非线性方程求根、数值积分与微分以及常微分方程求解。

在算法实现的过程中,通过观察输出结果验证了算法的正确性和可靠性,并探讨了一些算法实现中需要注意的问题。

1.线性方程组求解线性方程组求解是数值分析中的重要算法之一,是很多数学问题的基础。

本实验中使用了三种求解线性方程组的算法:高斯消元法、LU分解法和共轭梯度法。

在实验中,我们需要注意选取矩阵的条件数,使用一些特殊矩阵,如对角矩阵、三对角矩阵和希尔伯特矩阵等来验证算法的正确性。

2.非线性方程求根非线性方程求根是MATLAB中一个非常实用的函数,能够快速解决大量的非线性方程。

本实验中,我们更深入地探讨了二分法、牛顿法和割线法等算法,通过实现代码,实现了对非线性方程的求解。

同时,对不同的算法进行比较,从而选择合适的算法。

3.数值积分与微分数值积分与微分是宏观物理中需要用到的重要数学问题之一。

本实验中,我们使用了梯形法、辛普森法和龙贝格法等多种数值积分算法实现了函数的数值积分。

同时,也对数值微分的误差和稳定性进行了研究和探讨。

4.常微分方程求解常微分方程求解是MATLAB中最常用的功能之一。

本实验中,我们实现了欧拉法、龙格-库塔法等常微分方程求解算法。

并不断尝试对算法进行改进,提高其效率和精度。

实验结果表明,使用MATLAB实现数值分析算法是非常可靠和高效的。

同时,也需要注意在算法实现中注意问题和选择合适的算法。

matlab数值分析实验报告

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上机实验报告matlab软件实验报告数学上机课实验报告matlab实验报告总结数值分析试卷篇一:《MATLAB与数值分析》第一次上机实验报告标准实验报告(实验)课程名称学生姓名:李培睿学号:2013020904026指导教师:程建一、实验名称《MATLAB与数值分析》第一次上机实验二、实验目的1. 熟练掌握矩阵的生成、加、减、乘、除、转置、行列式、逆、范数等运算操作。

(用.m文件和Matlab函数编写一个对给定矩阵进行运算操作的程序)2. 熟练掌握算术符号操作和基本运算操作,包括矩阵合并、向量合并、符号转换、展开符号表达式、符号因式分解、符号表达式的化简、代数方程的符号解析解、特征多项式、函数的反函数、函数计算器、微积分、常微分方程的符号解、符号函数的画图等。

(用.m 文件编写进行符号因式分解和函数求反的程序)3. 掌握Matlab函数的编写规范。

4、掌握Matlab常用的绘图处理操作,包括:基本平面图、图形注释命令、三维曲线和面的填充、三维等高线等。

(用.m 文件编写在一个图形窗口上绘制正弦和余弦函数的图形,并给出充分的图形注释)5. 熟练操作MATLAB软件平台,能利用M文件完成MATLAB的程序设计。

三、实验内容1. 编程实现以下数列的图像,用户能输入不同的初始值以及系数。

并以x,y为坐标显示图像x(n+1) = a*x(n)-b*(y(n)-x(n) ); y(n+1) = b*x(n)+a*(y(n)-x(n) )2. 编程实现奥运5环图,允许用户输入环的直径。

3. 实现对输入任意长度向量元素的冒泡排序的升序排列。

不允许使用sort函数。

四、实验数据及结果分析题目一:①在Editor窗口编写函数代码如下:并将编写的函数文件用“draw.m”储存在指定地址;②在Command窗口输入如下命令:③得到图形结果如下:题目二:①在Editor窗口编写函数代码如下:并将编写的函数文件用“circle.m”储存在指定地址;②再次在Editor窗口编写代码:并将编写的函数文件用“Olympic.m”储存在指定地址;③在Command窗口输入如下指令(半径可任意输入):④按回车执行,将在图形窗口获得五环旗:题目三:①在Editor窗口编写函数代码如下:并用.将编写的函数文件用“qipaofa.m”储存在指定地址;②在Command窗口输入一组乱序数值,则可以得到升序排序结果如下:五、总结及心得体会1. 要熟悉MATLAB编译软件的使用方法,明白有关语法,语句的基本用法,才可以在编写程序的时候游刃有余,不至于寸步难行。

数值分析MATLAB实验报告

数值分析MATLAB实验报告

实验 2.1 多项式插值的震荡现象问题提出:考虑在一个固定的区间上用插值逼近一个函数。

显然Lagrange 插值中使用的节点越多,插值多项式的次数越高,我们自然关心插值多项式的次数增加时,)(x L n 是否也更加靠近被逼近的函数。

Runge 给出的一个例子是极著名并富有启发性的。

设区间[-1,1]上函数.2511)(2xx f +=实验内容:考虑空间[-1,1]的一个等距划分,分点为 nix i 21+-=, =i 0,1,2 ...,n , 则拉格朗日插值多项式为)(2511)(02x l xx L ini n ∑=+=. 其中,n i x l i ,...,2,1,0),(=是n 次Lagrange 插值基函数。

实验要求:(1)选择不断增大的分点数目,...,3,2=n 画出原函数)(x f 及插值多项式函数)(x L n 在[-1,1]上的图像,比较并分析实验结果。

(2)选择其他的函数,例如定义在区间[-5,5]上的函数 ,1)(4xxx h +=)arctan()(x x g =, 重复上述的实验看其结果如何。

首先编写拉格朗日插值函数的Matlab 实现: Matlab 程序为:function y=lagrange(x0,y0,x) %Lagrange 插值 n=length(x0); m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if(j~=k)p=p*(z-x0(j))/(x0(k)-x0(j)); end ends=s+p*y0(k); endy(i)=s; end(1)当函数为.2511)(2xx f +=时, Matlab 程序为:x=linspace(-1,1,100); y=1./(1+25*x.^2); plot(x,y) hold on; for i=2:2:10x0=linspace(-1,1,i+1); y0=1./(1+25*x0.^2); y=laglanri(x0,y0,x); plot(x,y,'r--') hold on end运行结果:结果分析:从图上看到在区间[-1,1]的两端点附近,随着插值点数的增加,插值函数)(x L n 与)(x f 偏离的越远,而且出现了振荡现象。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数值分析实验报告拉格朗日插值法拉格朗日插值法基本原理:通过平面上不同两点可以确定一条直线,这就是拉格朗日线性插值问题,对于不在同一条直线的三个点得到的插值多项式则为抛物线。

拉格朗日插值的基多项式(即基函数)为:ni x x ••x •x x l ij j ji i i ,,2,1,0,)(0 =--=∏≠=有了基函数以后就可以直接构造如下多项式:∑==ni i i n x l x f p 0)()(该多项式就是拉格朗日插值法所求得的插值多项式。

拉格朗日插值法算法:1、根据所给点),(i i y x 的坐标依次写出其差值基函数(用for 循环可以轻易解决)ni x x ••x •x x l ij j ji i i ,,2,1,0,)(0 =--=∏≠=2、将差值基函数与其对应的点的函数值相乘得:n i x l x f i i ,,2,1,0),()( =3、将2中各项累加即得差值多项式:∑==ni i i n x l x f p 0)()(拉格朗日插值法程序:function lagrange(A)%A 为一个只有两行的矩阵,第一行为插值点,第二行为插值点对应的函数值 [m,n]=size(A); f=1;p=0;%两个用到的变量 syms xfor i=1:nf=(x-A(1,i))*f;endfor j=1:ng(j)=f/(x-A(1,j));%求插值基函数的分母h(j)=subs(g(j),x,A(1,j));%求插值基函数的分子s(j)=g(j)/h(j)*A(2,j);%插值基函数endfor k=1:ns(j)=collect(s(j));%合并同类项endfor i=1:np=p+s(i);endfprintf('拉格朗日插值法可得多项式:')collect(p) % 可用lagrange([1 3 6 8;4 6 9 12])调试例:有如下表格中有四个插值点及其对应的函数值,用lagrange插值法写出其三次插值多项式:x 1 3 6 8iy 4 6 9 12i解:在matlab命令窗口输入:lagrange([1 3 6 8;4 6 9 12])可得运行结果:拉格朗日插值法可得多项式:ans =x^3/70 - x^2/7 + (97*x)/70 + 96/35牛顿插值法牛顿插值法基本原理:拉格朗日插值多项式的理论在许多方面都有应用,是很不错的一种方法,但就插值问题而言,如果增加一个插值点,原先计算插值的多项式就没有用了,即拉格朗日插值法的继承性很差,牛顿插值法就很好地解决了这个问题,具有很好的继承性。

函数)(x f 的差商定义为:)(][k k x f x f =kk k k k k x x x f x f x x f --=---111][][],[kk k k k k k k k x x x x f x x f x x x f --=------212112],[],[],,[jk k k j k k j k k j k j k x x x x f x x f x x x f ---+-+----=],,[],,[],,,[111在差商的基础上可得牛顿插值多项式:)())(](,,,[))(](,,[)](,[][)(11010102100100----++--+-+=n n n x x x x x x x x x f x x x x x x x f x x x x f x f x N牛顿插值法算法:1、根据差商的定义求出各阶差商。

2、依次写出:1,,1,0),())((110-=---=-n n x x x x x x n n ω。

3、n ω分别与相应的差商相乘,然后累加即可得:)())(](,,,[))(](,,[)](,[][)(11010102100100----++--+-+=n n n x x x x x x x x x f x x x x x x x f x x x x f x f x N牛顿插值法程序:function newton(A)%A 为两行矩阵,第一行为插值点,第二行为对应插值点的函数值 [m,n]=size(A);B=zeros(n-1);k=1;for i=1:n-1for j=i+1:nZ(j)=(A(2,j)-A(2,j-1))/(A(1,j)-A(1,j-k));%求i阶差商B(i,j)=Z(j);%记住各阶差商endfor j=i+1:nA(2,j)=Z(j);endk=k+1;endf=A(2,1);g=1;syms xfor i=1:n-1g=g*(x-A(1,i));f=f+B(i,i+1)*g;%求牛顿插值多项式endfprintf('牛顿插值法可得多项式:')ffprintf('牛顿插值法得到的多项式合并同类项后为:')collect(f)% newton([1 3 6 8;4 6 9 12])例:有如下表格中有四个插值点及其对应的函数值,用牛顿插值法写出其三次插值多项式:x 1 3 6 8iy 4 6 9 12i解:在matlab命令窗口输入:newton([1 3 6 8;4 6 9 12])可得如下运行结果:牛顿插值法可得多项式:f =3+x+1/70*(x-1)*(x-3)*(x-6)牛顿插值法得到的多项式合并同类项后为:ans =96/35+1/70*x^3-1/7*x^2+97/70*x通过比较对同一题目的运算可知:拉格朗日插值法与牛顿插值法所得的插值多项式是一致的!最小二乘法最小二乘法基本原理:最小二乘法是一种数学优化技术,它通过最小化误差的平方和寻找数据的最佳函数匹配。

利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小。

最小二乘法还可用于曲线拟合,这无疑就是我们数值分析所研究的最小二乘法很重要的一块的。

设已知某一组观测数据m i x f x i i ,,2,1)),(,( =,要求在某特定函数类)(x φ寻求一个函数)(x ϕ作为该组数据的近似函数,使得二者在i x 上的残差 m i x f x i i i ,,2,1),()( =-=ϕδ,按某种度量标准为最小,这就是拟合问题。

要求残差i δ按某种度量标准为最小,即要求由残差i δ构成的残差向量T m ],,,[10δδδδ =的某种范数δ为最小,现实生活中,我们用得最多的当然就是2范数了,即∑∑==-==mi i i mi ix f x 021202122})]()([{)(ϕδδ为最小.这种要求误差平方和最小的拟合称为曲线拟合的最小二乘法.就是说,最小二乘法提供了一种数学方法,利用这种方法可以对实验数据实现在最小平方误差意义下的最好拟合。

在曲线拟合中,函数类φ可有不同的选取方法,我们数值分析中用的最多的自然是最简单与我们最熟悉的多项式。

最小二乘法算法:1、 构造法方程组:具体做法是针对已知的点的坐标),(i i y x ,先求∑=inih n x,1,0,2 再求∑=ii n i h h n y x ,1,0, 为所要拟合的多项式的次数。

2、解法方程组:根据1中构造的方程组,调用列主元高斯消元法(具体算法见列主元高斯消元法的试验)。

3、根据2中求出的法方程组的解X 构造拟合多项式:∑+=-111)(h i i x i X 。

最小二乘法程序:function leastsqu(A,n)%A 代表离散点的坐标矩阵,第一行为自变量值,第二行为相对应的函数值 %n 为要拟合的多项式的次数 [a,b]=size(A); B=zeros(1,10); C=zeros(1,10); P=0;Q=0;D=zeros(n+1);k=1;g=0;if b>n^2s=b;elses=n^2;end %一系列用到的变量或者矩阵for i=1:sfor j=1:bP=P+A(1,j)^(i-1);Q=Q+A(1,j)^(i-1)*A(2,j);endB(i)=P;C(i)=Q;P=0;Q=0;end%for循环嵌套求法方程组的各项系数for i=1:n+1for j=i:n+iD(i,k)=B(j);k=k+1;endD(i,n+2)=C(i);k=1;end%for循环嵌套求法方程组增广矩阵f=qiujie(D);syms xdisp('最小二乘拟合多项式为:')for i=1:n+1g=g+f(i)*x^(i-1);endgfunction f=qiujie(B)[m,n]=size(B);for i=2:mfor k=i:mif(abs(B(k,i-1))>abs(B(i-1,i-1)))temp=B(i-1,:);B(i-1,:)=B(k,:);B(k,:)=temp;%换行选主元endl(i,k)=B(k,i-1)/B(i-1,i-1);for j=1:nB(k,j)=B(k,j)-l(i,k)*B(i-1,j);%跌代 endendendy=0;x(m)=B(m,n)/B(m,n-1);for i=m-1:-1:1for j=1:m-iy=y+x(m-j+1)*B(i,n-j);endx(i)=(B(i,n)-y)/B(i,n-m-1+i);%回代计算结果 y=0;endf=x;例:已知数据表如下,试用二次多项式来拟合。

x0 1 2 3 4 5 6iy15 14 14 14 14 15 16i解:在matlab命令窗口输入:A=[0 1 2 3 4 5 6;15 14 14 14 14 15 16];n=2;leastsqu(A,n)得运行结果:最小二乘拟合多项式为:g =(5*x^2)/28 - (25*x)/28 + 209/14列主元高斯消元法列主元高斯消元法基本原理:列主元高斯消元法,是在高斯消元法的基础上改进的一个线性代数中的算法,用来求解线性方程组。

其原理是:设有方程组:⎪⎪⎩⎪⎪⎨⎧=+++=+++=+++n n nn n n n n n n b x a x a x a bx a x a x a b x a x a x a 22112222212111212111首先写出方程组的增广矩阵,然后利用初等行变换来把增广矩阵转换成行阶梯阵。

特别注意的是每步消元时,选出主元所在列绝对值最大的数,并将其换到主元的位置上,然后进行消元计算,这是列主元消元在高斯消元基础上的改进,是保证算法稳定性之所在。

接着将之转换为行阶梯阵,判断解的情况,但为了简便,我们在这就仅考虑方程组中方程个数与变量个数相等的情况,即只有唯一解的方程组的情况。

列主元高斯消元法算法:1、 令1=k 。

2、 选主元:选出k 列中位于对角线及其以下元素绝对值中最大者,并将该最大数所在行与第k 行互换。

相关文档
最新文档