数值分析MATLAB实验报告

合集下载

(精品)数值分析matlab实验报告

(精品)数值分析matlab实验报告

实验2.1 多项式差值的振荡现象一、实验内容设区间[-1,1]上函数22511)(xx f +=,考虑区间[-1,1]的一个等距划分,分点为n i x i 21+-=,i=0,1,2,...,n ,则拉格朗日插值多项式为∑=+=n i i in x l x L 02)(2511.其中,l i (x),i=0,1,2,...,n 是Lagrange 插值基函数.1) 选择不断增大的分点数目n=2,3,...,画出原函数f(x)及插值多项式函数L n (x)在[-1,1]上的图像,比较并分析实验结果.2) 选择其他的函数,例如定义在区间[-5,5]上的函数41)(xx x h +,x x g arctan )(=,重复上述的实验看其结果如何.二、实验程序1.主程序function chapter2promps={'请选择试验函数,若选f(x),请输入f ,若选好h(x),请输入h ,若选g(x),请输入g :'};result=inputdlg(promps,'charpt 2',1,{'f'});Nb_f=char(result);if(Nb_f~='f'&&Nb_f~='h'&&Nb_f~='g')errordlg('试验函数选择错误!');return;endresult=inputdlg({'请输入插值多项式的次数N :'},'charpt_2',1,{'10'}); Nd=str2num(char(result));if(Nd<1)errordlg('插值多项式的次数输入错误!');return;endswitch Nb_fcase'f'f=inline('1./(1+25*x.^2)');a=-1;b=1;case'h'f=inline('x./(1+x.^4)');a=-5;b=5;case'g'f=inline('atan(x)');a=-5;b=5;endx0=linspace(a,b,Nd+1);y0=feval(f,x0);x=a:0.1:b;y=Lagrange(x0,y0,x);clf;fplot(f,[a b],'rx');hold on;plot(x,y,'b--');xlabel('x');ylabel('y=f(x) x and y=Ln(x) --');grange函数function y=Lagrange(x0,y0,x)n=length(x0);m=length(x);for i=1:mz=x(i);s=0;for k=1:np=1.0;for j=1:nif (j~=k)p=p.*(z-x0(j))/(x0(k)-x0(j));endends=s+p*y0(k);endy(i)=s;end三、实验结果及分析1)选择不断增大的分点数目n,原函数f(x)及插值多项式函数L n(x)在[-1,1]上的图像。

数值分析matlab实验报告

数值分析matlab实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

数值分析实验报告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与数值分析第二次上机实践报告

电子科大matlab与数值分析第二次上机实践报告

2、新建一个新仿真模块; 3、在source工具模块找到sine wave正弦波信号,拖入仿真模块;在 sinks工具模块中找到scope示波器,用线把它们连在一起,如下图。
4、双击示波器,调正参数如图
5、双击示波器,点开始方针,波形如图
题目(二) 2. 产生传递函数: 题目分析: 本题考察传递函数及其参数设置 解题步骤: 1、 在Continuous找到Transfer Fcn传递函数和Zero-Pole零—极点 增益模型,分别拖入仿真模块; 2、 设置参数如图
Gain,Sum,Product等工具。难点是方框图的设计。 解题步骤:
1、 如图建立模型
2、打开File->Model Properties->Callbacks->InitFcn,设置 参数如图
3、设置XY Graph取值范围如图
3、 双击两个示波器,点击开始仿真,调整波形,结果 如下
心得体会
Matlab上机实践报告
实践内容:Simulink的建模与仿 真。
学院: 姓名: 学号: 指导老师: 实践日期:
题目(一) 1. 产生幅值、频率为2,基准为0.5的正弦波信号。
题目分析: 本题知识对simulink的基本操作,用于对simulink操作窗口的熟悉和了 解。 解题步骤: 1、在matlab中打开simulink工具箱;
Simulinkห้องสมุดไป่ตู้有强大的仿真功能,它适应面广(线性、非线性系统;
离散、连续及混和系统),结构和流程清晰,仿真精细、提供大量函数 模块。
这次上机实验,我熟悉了matlab中simulink工具箱的基本用法,能 够运用simulink工具箱实现一些简单的仿真试验。如信号发生器的参数 控制,仿真模块图的构建等。

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

MATLAB实验报告

MATLAB实验报告⼀.试验时间:2013/10/15 ⼆.实验地点:⼤楼五楼8号机房三.实验名称:MATLAB 数值计算四.实验⽬的:1.掌握MATLAB 数据对象的特点以及数值的运算规则。

2.掌握MATLAB 中建⽴矩阵的⽅法以及矩阵处理和分析的⽅法。

3.掌握MATLAB 中常量与变量的使⽤及各种表达式的书写规则。

4.熟悉MATLAB 常⽤函数的使⽤以及多项式的运⽤。

⼆.实验内容1. 求下列表达式的值。

(1)z1=2185sin 2e +结果:>> z1=2*sin((85/360)*pi)/(1+eps*eps) z1 =1.3512(2)z2=),x 1(ln 21++x ?-+=5,45.0t *21,2x结果:>> x=[2 1+2*i;-0.45 5] x =2.0000 1.0000 + 2.0000i -0.4500 5.0000 >> z2=1/2*log(x+sqrt(1+x)) z2 =0.6585 0.6509 + 0.4013i -0.6162 1.0041 (3)z3=22.0^3.0^e a e a -×sin(a+0.3)+ln(23.0a +),a=-3.0,-2.9,-2.8,…2.8,2.9,3.0结果:>> a=-3:0.1:3;>> z3=(eps(a*0.3)-eps(a*0.2))/2.0.*sin(a+0.3)+log((a+0.3)/2.0) z3 =Columns 1 through 50.3001 + 3.1416i 0.2624 + 3.1416i 0.2231 + 3.1416i 0.1823 + 3.1416i 0.1398 + 3.1416i0.0953 + 3.1416i 0.0488 + 3.1416i -0.0000 + 3.1416i -0.0513 + 3.1416i -0.1054 + 3.1416i Columns 11 through 15-0.5108 + 3.1416i -0.5978 + 3.1416i -0.6931 + 3.1416i -0.7985 + 3.1416i -0.9163 + 3.1416i Columns 21 through 25-1.0498 + 3.1416i -1.2040 + 3.1416i -1.3863 + 3.1416i -1.6094 + 3.1416i -1.8971 + 3.1416i Columns 26 through 30-2.3026 + 3.1416i -2.9957 + 3.1416i -37.0245 -2.9957 -2.3026 Columns 31 through 35-1.8971 -1.6094 -1.3863 -1.2040 -1.0498Columns 36 through 40-0.9163 -0.7985 -0.6931 -0.5978 -0.5108Columns 41 through 45-0.4308 -0.3567 -0.2877 -0.2231 -0.1625Columns 46 through 50-0.1054 -0.0513 0.0000 0.0488 0.0953Columns 51 through 550.1398 0.1823 0.2231 0.2624 0.3001Columns 56 through 600.3365 0.3716 0.4055 0.4383 0.4700Column 610.50082.创建⼀个由10个元素组成的等差数列x,第⼀个元素是1,第10个元素是20.(1)计算其元素个数;(2)取出其中第⼆个元素赋值给y.(3)将数组X的前3个元素分别赋值为4,5,6.(4)将数组X的前5个元素倒序后构成⼀个字数组赋值给Z。

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

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编译软件的使用方法,明白有关语法,语句的基本用法,才可以在编写程序的时候游刃有余,不至于寸步难行。

数值分析拟合实验报告(3篇)

数值分析拟合实验报告(3篇)

第1篇一、实验目的本次实验旨在通过数值分析方法对一组已知数据点进行拟合,掌握线性插值、多项式插值、样条插值等方法的基本原理和实现过程,并学会使用MATLAB进行数值拟合。

二、实验内容1. 线性插值线性插值是一种简单的插值方法,适用于数据点分布较为均匀的情况。

其基本原理是通过两个相邻的数据点,利用线性关系拟合出一条直线,然后通过该直线来估算未知的值。

2. 多项式插值多项式插值是一种较为精确的插值方法,通过构造一个多项式函数来逼近已知数据点。

其基本原理是利用最小二乘法求解多项式的系数,使得多项式在已知数据点上的误差最小。

3. 样条插值样条插值是一种更灵活的插值方法,通过构造一系列样条曲线来逼近已知数据点。

其基本原理是利用最小二乘法求解样条曲线的系数,使得样条曲线在已知数据点上的误差最小。

三、实验步骤1. 线性插值(1)在MATLAB中输入已知数据点,如:x = [1, 2, 3, 4, 5];y = [2, 4, 6, 8, 10];(2)使用MATLAB内置函数`linspace`生成插值点:xi = linspace(1, 5, 100);(3)使用MATLAB内置函数`interp1`进行线性插值:yi = interp1(x, y, xi, 'linear');(4)绘制插值曲线:plot(xi, yi, 'b-', x, y, 'ro');2. 多项式插值(1)在MATLAB中输入已知数据点,如:x = [1, 2, 3, 4, 5];y = [2, 4, 6, 8, 10];(2)使用MATLAB内置函数`polyfit`求解多项式系数:p = polyfit(x, y, 3);(3)使用MATLAB内置函数`polyval`进行多项式插值:yi = polyval(p, xi);(4)绘制插值曲线:plot(xi, yi, 'b-', x, y, 'ro');3. 样条插值(1)在MATLAB中输入已知数据点,如:x = [1, 2, 3, 4, 5];y = [2, 4, 6, 8, 10];(2)使用MATLAB内置函数`spline`进行样条插值:yi = spline(x, y, xi);(3)绘制插值曲线:plot(xi, yi, 'b-', x, y, 'ro');四、实验结果与分析1. 线性插值线性插值方法简单易行,但精度较低,适用于数据点分布较为均匀的情况。

数值分析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)。

实验 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 偏离的越远,而且出现了振荡现象。

xyRunge 现象(2)当函数为,1)(4x xx h +=时 Matlab 程序为: x=linspace(-5,5,100); y=x./(1+x.^4); plot(x,y) hold on; for i=2:2:10x0=linspace(-5,5,i+1); y0=x0./(1+x0.^4); y=laglanri(x0,y0,x); plot(x,y,'r--') hold on end运行结果:xyRunge 现象结果分析:从图上看到在区间[-5,5]的两端点附近,随着插值点数的增加,插值函数)(x L n 与)(x h 偏离的越远,而且出现了振荡现象。

(3)当函数为)arctan()(x x gx=linspace(-5,5,100); y=atan(x); plot(x,y) hold on; for i=2:2:10x0=linspace(-5,5,i+1); y0=atan(x0);y=laglanri(x0,y0,x); plot(x,y,'r--') hold on end运行结果:xyRunge 现象结果分析:从图上看到在区间[-5,5]的两端点附近,随着插值点数的增加,插值函数)(x L n 与)(x g 偏离的越远,而且出现了振荡现象。

实验 3.1编制以函数n k k x 0}{=为基的多项式最小二乘拟合程序,并用于对表3.11中的数据作3次多项式二乘拟合。

取权数i w ≡1,求拟合曲线*ϕ≡knk k xa ∑=0*中的参数}{k a 、平方误差2δ,并作离散数据},{i i y x 的拟合函数)(x y *=ϕ的图像。

Matlab 程序如下:x0=-1:0.5:2;y0=[-4.447 -0.452 0.551 0.048 -0.447 0.549 4.552];alph=polyfit(x0,y0,n);%ployfit 为最小二乘拟合函数,alph 为系数(按降幂排列 y=polyval(alph,x0);r=(y0-y)*(y0-y)';%平方误差,注意平方的表达式 x=-1:0.01:2;y=polyval(alph,x); plot(x,y,'k--');xlabel('x');ylabel('拟合曲线'); hold on;plot(x0,y0,'*');title('离散数据的多项式拟合'); grid on;disp(['平方误差:',sprintf('%g',r)]); disp(['参数alph :',sprintf('%g\t',alph)])运行结果:平方误差:2.17619e-005 参数alph :1.99911 -2.99767 -3.96825e-005 0.549119-1-0.50.511.52x拟合曲线离散数据的多项式拟合结果分析:根据给定的7个点的数据,所求的拟合函数的曲线可以基本地反映数据点的变化趋势。

所求的三次多项式为:0.549119 005-3.96825ex - 2.99767x -1.99911x y(x )23=其最小平方误差2δ为:2.17619e-005。

实验4.1实验目的:复化求积公式计算定积分.实验目的:数值计算下列各式右端定积分的近似值.(1)dx x ⎰--=-3221123ln 2ln ; (2)dx x ⎰+4=10211π; (3)dxx⎰=133ln 2; (4)dx xe e x ⎰=212;实验要求:(1)若用复化梯形公式、复化Simpson 公式和复化Gauss-Legendre I 型公式做计算,要求绝对误差限为710-⨯21=ε,分别利用它们的余项对每种算法做出步长的事前估计. (2)分别用复化梯形公式,复化Simpson 公式和复化Gauss-Legendre I 型公式作出计算. (3)将计算结果与精确解做比较,并比较各种算法的计算量.事前估计的Matlab 程序如下:1.用复化梯形公式进行事前估计的Matlab 程序format long g x=2:0.01:3;f=-4*(3*x.^2+1)./(x.^2-1).^3; %二阶导函数%plot(x,f) %画出二阶导函数图像 x=2.0; %计算导函数最大值 f=-4*(3*x^2+1)/(x^2-1)^3; h2=0.5*10^(-7)*12/f;h=sqrt(abs(h2)) %步长 n=1/h;n=ceil(1/h)+1 %选取的点数%222%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% format long g x=0:0.01:1;f=8.*(3*x.^2-1)./(x.^2+1).^3;%二阶导函数%plot(x,f) %画出二阶导函数图像 x=1; %计算导函数最大值 f=8.*(3*x.^2-1)./(x.^2+1).^3; h2=0.5*10^(-7)*12/f;h=sqrt(abs(h2)) %步长 n=1/hn=ceil(1/h)+1 %选取的点数%333%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% format long gx=0:0.01:1;f=log(3).*log(3).*3.^x;%二阶导函数%plot(x,f); %画出二阶导函数图像x=1; %计算导函数最大值f=log(3)*log(3)*3^x;h2=0.5*10^(-7)*12/f;h=sqrt(abs(h2)) %步长n=1/hn=ceil(1/h)+1 %选取的点数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% format long gx=1:0.01:2;f=2.*exp(x)+x.*exp(x);%二阶导函数%plot(x,f) %画出二阶导函数图像x=2; %计算导函数最大值f=2.*exp(x)+x.*exp(x);h2=0.5*10^(-7)*12/f;h=sqrt(abs(h2)) %步长n=1/hn=ceil(1/h)+1 %选取的点数估计结果步长h及结点数n分别为h =0.000558156305651438n =1793h =0.000547722557505166n =1827h =0.000407071357304889n =2458h =0.000142479094906909n =70202.用复化simpson公式进行事前估计的Matlab程序format long gx=2:0.01:3;f=-2*((-72*x.^2-24).*(x.^2-1)-192*x.^2.*(x.^2+1))./(x.^2-1).^5;%四阶导函数x=2.0;f=-2*((-72*x^2-24)*(x^2-1)-192*x^2*(x^2+1))/(x^2-1)^5; %计算导函数最大值h4=0.5*10^(-7)*180*16/f;h=sqrt(sqrt(abs(h4))) %步长n=1/h; %求分段区间个数n=2*ceil(1/h)+1 %选取的点数%222%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%format long gx=0:0.01:1;f=4*((-72*x.^2+24).*(x.^2+1)-192*x.^2.*(-x.^2+1))./(x.^2+1).^5;%四阶导函数x=1;f=4*((-72*x^2+24)*(x^2+1)-192*x^2*(-x^2+1))/(x^2+1)^5; %计算导函数最大值h4=0.5*10^(-7)*180*16/f;h=sqrt(sqrt(abs(h4)))%步长n=1/h; %求分段区间个数n=2*ceil(1/h)+1 %选取的点数%333%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%format long gx=0:0.01:1;f=log(3)^4*3.^x;%四阶导函数x=1;f=log(3)^4*3.^x;%计算导函数最大值h4=0.5*10^(-7)*180*16/f;h=sqrt(sqrt(abs(h4)))%步长n=1/h; %求分段区间个数n=2*ceil(1/h)+1 %选取的点数%444%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%format long gx=1:0.01:2;f=4*exp(x)+x.*exp(x);%四阶导函数plot(x,f) %画出原函数x=2;f=4*exp(x)+x.*exp(x); %计算导函数最大值h4=0.5*10^(-7)*180*16/f;h=sqrt(sqrt(abs(h4)))n=1/h; %求分段区间个数n=2*ceil(1/h)+1 %选取的点数估计结果步长h及结点数n分别为h =0.0437490486013411n =47h =0.0588566191276542n =35h =0.0757645166218433n =29h =0.0424527247118546n =49积分计算的Matlab程序:format long gpromps={'请选择积分公式,若用复化梯形,请输入T,用复化simpson,输入S,用复化Gauss_Legendre,输入GL:'};result=inputdlg(promps,'charpt 4',1,{'T'});Nb=char(result);if(Nb~='T'&Nb~='S'&Nb~='GL')errordlg('积分公式选择错误');return;endresult=inputdlg({'请输入积分式题号1-4:'},'实验4.1',1,{'1'});Nb_f=str2num(char(result));if(Nb_f<1|Nb_f>4)errordlg('没有该积分式');return;endswitch Nb_fcase 1fun=inline('-2./(x.^2-1)');a=2;b=3;case 2fun=inline('4./(x.^2+1)');a=0;b=1;case 3fun=inline('3.^x');a=0;b=1;case 4fun=inline('x.*exp(x)');a=1;b=2;endif(Nb=='T')%用复化梯形公式promps={'请输入用复化梯形公式应取的步长:'};result=inputdlg(promps,'实验4.2',1,{'0.01'});h=str2num(char(result));if(h<=0)errordlg('请输入正确的步长!');return;endtic;N=floor((b-a)/h);detsum=0;for i=1:N-1xk=a+i*h;detsum=detsum+fun(xk);endt=h*(fun(a)+fun(b)+2*detsum)/2;time=toc;tendif(Nb=='S')%用复化Simpson公式promps={'请输入用复化Simpson公式应取的步长:'};result=inputdlg(promps,'实验4.2',1,{'0.01'});h=str2num(char(result));if(h<=0)errordlg('请输入正确的步长!');return;endtic;N=floor((b-a)/h);detsum_1=0;detsum_2=0;for i=1:N-1xk_1=a+i*h;detsum_1=detsum_1+fun(xk_1);endfor i=1:Nxk_2=a+h*(2*i-1)/2;detsum_2=detsum_2+fun(xk_2);endt=h*(fun(a)+fun(b)+2*detsum_1+4*detsum_2)/6;time=toc;tendif(Nb=='GL')%用复化Gauss_Legendre I%先根据复化Gauss_Legendre I公式的余项估计步长promps={'请输入用复化Gauss_Legendre I 公式应取的步长:'};result=inputdlg(promps,'实验4.2',1,{'0.01'});h=str2num(char(result));if(h<=0)errordlg('请输入正确的步长!');return;endtic;N=floor((b-a)/h);t=0;for k=0:N-1xk=a+k*h+h/2;t=t+fun(xk-h/(2*sqrt(3)))+fun(xk+h/(2*sqrt(3)));endt=t*h/2;time=toc;tendswitch Nb_fcase 1disp('精确解:ln2-ln3=-0.4054651081')disp(['绝对误差:',num2str(abs(t+0.4054651081))]);disp(['运行时间:',num2str(time)]);case 2disp('精确解:pi=3.14159265358979')disp(['绝对误差:',num2str(abs(t-pi))]);disp(['运行时间:',num2str(time)]);case 3disp('精确解:2/ln3=1.82047845325368')disp(['绝对误差:',num2str(abs(t-1.82047845325368))]);disp(['运行时间:',num2str(time)]);case 4disp('精确解:e^2=7.38905609893065')disp(['绝对误差:',num2str(abs(t-7.38905609893065))]);disp(['运行时间:',num2str(time)]);end运行结果:当选用复化梯形公式时:(1)式运行结果为:t =-0.40546512204351精确解:ln2-ln3=-0.4054651081绝对误差:1.3944e-008运行时间:0.003(2)式运行结果为:t =3.14159261385336精确解:pi=3.14159265358979绝对误差:3.9736e-008运行时间:0.005(3)式运行结果为:t =1.82047849690861精确解:2/ln3=1.82047845325368绝对误差:4.3655e-008运行时间:0.016(4)式运行结果为:t =7.38905611970610精确解:e^2=7.38905609893065 绝对误差:2.0775e-008运行时间:0.007当选用复化Simpson公式进行计算时(1)式运行结果为:t =-0.405465108127519精确解:ln2-ln3=-0.4054651081绝对误差:2.7519e-011运行时间:0.022(2)式运行结果为:t =3.14159265358979精确解:pi=3.14159265358979绝对误差:0运行时间:0.021(3)式运行结果为:t =1.82047845326288精确解:2/ln3=1.82047845325368绝对误差:9.2018e-012运行时间:0.019(4)式运行结果为:t =7.38905609902118精确解:e^2=7.38905609893065绝对误差:9.0528e-011运行时间:0.021当选用复化Gauss-Legendre I型公式进行计算时:(1)式运行结果为:t =-0.405465108095262精确解:ln2-ln3=-0.4054651081绝对误差:4.7385e-012运行时间:0.023(2)式运行结果为:t =3.14159265358979精确解:pi=3.14159265358979绝对误差:1.3323e-015运行时间:0.021(3)式运行结果为:t =1.82047845324754精确解:2/ln3=1.82047845325368绝对误差:6.1431e-012运行时间:0.019(4)式运行结果为:t =1.82047845324754精确解:2/ln3=1.82047845325368绝对误差:6.1431e-012运行时间:0.019结果分析: 当选用复化梯形公式时,对步长的事前估计所要求的步长很小,选取的节点很多,误差绝对限要达到710*21-=ε时,对不同的函数n 的取值需达到1000-10000之间,计算量是很大。

相关文档
最新文档