多篇数值分析实践报告_matlab
数值分析matlab实验报告

数值分析matlab实验报告数值分析MATLAB实验报告引言:数值分析是一门研究利用计算机进行数值计算和解决数学问题的学科。
它在科学计算、工程技术、金融等领域中有着广泛的应用。
本实验旨在通过使用MATLAB软件,探索数值分析的基本概念和方法,并通过实际案例来验证其有效性。
一、插值与拟合插值和拟合是数值分析中常用的处理数据的方法。
插值是通过已知数据点之间的函数关系,来估计未知数据点的值。
拟合则是通过一个函数来逼近一组数据点的分布。
在MATLAB中,我们可以使用interp1函数进行插值计算。
例如,给定一组离散的数据点,我们可以使用线性插值、多项式插值或样条插值等方法,来估计在两个数据点之间的未知数据点的值。
拟合则可以使用polyfit函数来实现。
例如,给定一组数据点,我们可以通过最小二乘法拟合出一个多项式函数,来逼近这组数据的分布。
二、数值积分数值积分是数值分析中用于计算函数定积分的方法。
在实际问题中,往往无法通过解析的方式求得一个函数的积分。
这时,我们可以使用数值积分的方法来近似计算。
在MATLAB中,我们可以使用quad函数进行数值积分。
例如,给定一个函数和积分区间,我们可以使用quad函数来计算出该函数在给定区间上的定积分值。
quad函数使用自适应的方法,可以在给定的误差限下,自动调整步长,以保证积分结果的精度。
三、常微分方程数值解常微分方程数值解是数值分析中研究微分方程数值解法的一部分。
在科学和工程中,我们经常遇到各种各样的微分方程问题。
而解析求解微分方程往往是困难的,甚至是不可能的。
因此,我们需要使用数值方法来近似求解微分方程。
在MATLAB中,我们可以使用ode45函数进行常微分方程数值解。
例如,给定一个微分方程和初始条件,我们可以使用ode45函数来计算出在给定时间范围内的解。
ode45函数使用龙格-库塔方法,可以在给定的误差限下,自动调整步长,以保证数值解的精度。
结论:本实验通过使用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 产品来加快他们的科研进程,缩短数据分析和算法开发的时间,研发出更加先进的产品和技术。
二.实验目的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仿真资料

数值分析实验报告学院:电气工程与自动化学院专业:控制理论与控制工程姓名:李亚学号: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软件对数值分析方法进行实验验证,探究其在不同数学问题上的应用效果和准确性,为数值分析方法的实际应用提供参考和指导。
三、实验内容1. 利用MATLAB进行方程求解实验在该实验中,利用MATLAB对给定的方程进行求解,比较数值解和解析解的差异,验证数值解的准确性和可靠性。
2. 利用MATLAB进行数值积分实验通过MATLAB对给定函数进行数值积分,比较数值积分结果和解析积分结果,验证数值积分的精度和稳定性。
3. 利用MATLAB进行常微分方程数值解实验通过MATLAB对给定的常微分方程进行数值解,比较数值解和解析解的差异,验证数值解的准确性和可靠性。
四、实验结果与分析通过对以上实验内容的实际操作和分析,得出以下结论:1. 在方程求解实验中,MATLAB给出的数值解与解析解基本吻合,验证了MATLAB在方程求解方面的高准确性和可靠性。
2. 在数值积分实验中,MATLAB给出的数值积分结果与解析积分结果基本吻合,验证了MATLAB在数值积分方面的高精度和稳定性。
3. 在常微分方程数值解实验中,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求解非线性方程的根学院:专业:班级:姓名:学号: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实现)(同名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实验分析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是一个非常强大和方便的工具,可以帮助我们更高效地完成任务。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 行互换。