数值分析实验

合集下载

数值分析实验报告

数值分析实验报告

数值分析实验报告【引言】数值分析是一门研究利用计算机和数学方法解决实际问题的学科,它在工程、科学和经济领域中有着广泛的应用。

在这个实验报告中,我将分享我在数值分析实验中的一些发现和结果。

【实验目的】本次实验的目的是通过数值方法对给定的问题进行求解,并分析数值方法的精确性和稳定性。

我们选择了经典的插值和数值积分问题来进行实验。

【实验过程】在插值问题中,我使用了拉格朗日插值和样条插值两种方法。

通过使用已知的数据点,这些方法能够通过构造多项式函数来逼近原始函数,从而能够在未知点上进行预测。

通过比较两种插值方法的结果,我发现拉格朗日插值在低维数据上表现更好,而样条插值在高维数据上更能保持插值曲线的平滑性。

在数值积分问题中,我使用了复合梯形公式和复合辛普森公式来进行数值积分。

这两种方法可以将复杂的区间上的积分问题转化为对若干个小区间进行数值积分的问题。

实验结果表明,复合辛普森公式在使用相同的步长时,其数值积分结果更为精确。

【实验结果】我以一个实际问题作为例子来展示实验结果。

问题是计算半径为1的圆的面积。

通过离散化的方法,我将圆划分为多个小的扇形区域,并使用数值积分方法计算每个扇形的面积。

最后将每个扇形的面积相加,即可得到圆的近似面积。

通过调整离散化的精度,我发现随着扇形数量的增加,计算得到的圆的面积越接近真实的圆的面积。

在插值问题中,我选择了一段经典的函数进行插值研究。

通过选择不同的插值节点和插值方法,我发现当插值节点越密集时,插值结果越接近原函数。

同时,样条插值方法在高阶导数连续的情况下能够更好地逼近原始函数。

【实验总结】通过这次实验,我对数值分析中的插值和数值积分方法有了更深入的理解。

我了解到不同的数值方法在不同的问题中有着不同的适用性和精确度。

在实际应用中,我们需要根据具体问题选择合适的数值方法,并进行必要的数值计算和分析,以获得准确可靠的结果。

总的来说,数值分析作为一种重要的工具和方法,在科学研究和工程实践中具有广泛的应用,并且不断发展和创新。

数值分析综合实验报告

数值分析综合实验报告

一、实验目的通过本次综合实验,掌握数值分析中常用的插值方法、方程求根方法以及数值积分方法,了解这些方法在实际问题中的应用,提高数值计算能力。

二、实验内容1. 插值方法(1)拉格朗日插值法:利用已知数据点构造多项式,以逼近未知函数。

(2)牛顿插值法:在拉格朗日插值法的基础上,通过增加基函数,提高逼近精度。

2. 方程求根方法(1)二分法:适用于函数在区间内有正负值的情况,通过不断缩小区间来逼近根。

(2)Newton法:利用函数的导数信息,通过迭代逼近根。

(3)不动点迭代法:将方程转化为不动点问题,通过迭代逼近根。

3. 数值积分方法(1)矩形法:将积分区间等分,近似计算函数值的和。

(2)梯形法:将积分区间分成若干等分,用梯形面积近似计算积分。

(3)辛普森法:在梯形法的基础上,将每个小区间再等分,提高逼近精度。

三、实验步骤1. 拉格朗日插值法(1)输入已知数据点,构造拉格朗日插值多项式。

(2)计算插值多项式在未知点的函数值。

2. 牛顿插值法(1)输入已知数据点,构造牛顿插值多项式。

(2)计算插值多项式在未知点的函数值。

3. 方程求根方法(1)输入方程和初始值。

(2)选择求解方法(二分法、Newton法、不动点迭代法)。

(3)迭代计算,直到满足精度要求。

4. 数值积分方法(1)输入被积函数和积分区间。

(2)选择积分方法(矩形法、梯形法、辛普森法)。

(3)计算积分值。

四、实验结果与分析1. 插值方法(1)拉格朗日插值法:通过构造多项式,可以较好地逼近已知数据点。

(2)牛顿插值法:在拉格朗日插值法的基础上,增加了基函数,提高了逼近精度。

2. 方程求根方法(1)二分法:适用于函数在区间内有正负值的情况,计算简单,但收敛速度较慢。

(2)Newton法:利用函数的导数信息,收敛速度较快,但可能存在数值不稳定问题。

(3)不动点迭代法:将方程转化为不动点问题,收敛速度较快,但可能存在初始值选择不当的问题。

3. 数值积分方法(1)矩形法:计算简单,但精度较低。

东北大学数值分析实验报告

东北大学数值分析实验报告

数值分析实验班级 姓名 学号实验环境: MATLAB实验一 解线性方程组的迭代法(1)一、实验题目 对以下方程组分别采用Jacobi 迭代法, Gaaus-Seidel 迭代法求解和SOR 迭代法求解。

(2)线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--------------------------13682438141202913726422123417911101610352431205362177586832337616244911315120130123122400105635680000121324⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x =⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡-2119381346323125 (2)对称正定线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----------------------1924336021411035204111443343104221812334161206538114140231212200420424⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡87654321x x x x x x x x =⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡---4515221123660(3)三对角线性方程组⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡------------------4100000000141000000001410000000014100000000141000000001410000000014100000000141000000001410000000014⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡10987654321x x x x x x x x x x =⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡----5541412621357 二、实验要求(1)应用迭代法求线性方程组, 并与直接法作比较。

数值分析实验 实验报告

数值分析实验 实验报告

数值分析实验实验报告数值分析实验实验报告一、引言数值分析是一门研究如何利用计算机对数学问题进行数值计算和模拟的学科。

在实际应用中,数值分析广泛应用于工程、物理、金融等领域。

本实验旨在通过实际操作,探索数值分析方法在实际问题中的应用,并通过实验结果对比和分析,验证数值分析方法的有效性和可靠性。

二、实验目的本实验的主要目的是通过数值分析方法,解决一个实际问题,并对比不同方法的结果,评估其准确性和效率。

具体来说,我们将使用牛顿插值法和拉格朗日插值法对一组给定的数据进行插值,并对比两种方法的结果。

三、实验步骤1. 收集实验数据:我们首先需要收集一组实验数据,这些数据可以来自实验测量、调查问卷等方式。

在本实验中,我们假设已经获得了一组数据,包括自变量x和因变量y。

2. 牛顿插值法:牛顿插值法是一种基于差商的插值方法。

我们可以通过给定的数据点,构造一个插值多项式,并利用该多项式对其他点进行插值计算。

具体的计算步骤可以参考数值分析教材。

3. 拉格朗日插值法:拉格朗日插值法是另一种常用的插值方法。

它通过构造一个满足给定数据点的多项式,利用该多项式对其他点进行插值计算。

具体的计算步骤也可以参考数值分析教材。

4. 结果比较与分析:在完成牛顿插值法和拉格朗日插值法的计算后,我们将比较两种方法的结果,并进行分析。

主要考虑的因素包括插值误差、计算效率等。

四、实验结果在本实验中,我们选取了一组数据进行插值计算,并得到了牛顿插值法和拉格朗日插值法的结果。

经过比较和分析,我们得出以下结论:1. 插值误差:通过计算插值点与实际数据点之间的差值,我们可以评估插值方法的准确性。

在本实验中,我们发现牛顿插值法和拉格朗日插值法的插值误差都较小,但是拉格朗日插值法的误差稍大一些。

2. 计算效率:计算效率是衡量数值分析方法的重要指标之一。

在本实验中,我们发现牛顿插值法的计算速度较快,而拉格朗日插值法的计算速度稍慢。

五、实验结论通过本实验,我们对数值分析方法在实际问题中的应用有了更深入的了解。

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

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

第1篇一、实验目的本次实验旨在通过数值分析的方法,研究几种常见的数值积分方法,包括梯形法、辛普森法、复化梯形法和龙贝格法,并比较它们在计算精度和效率上的差异。

通过实验,加深对数值积分理论和方法的理解,提高编程能力和实际问题解决能力。

二、实验内容1. 梯形法梯形法是一种基本的数值积分方法,通过将积分区间分割成若干个梯形,计算梯形面积之和来近似积分值。

实验中,我们选取了几个不同的函数,对积分区间进行划分,计算积分近似值,并与实际积分值进行比较。

2. 辛普森法辛普森法是另一种常见的数值积分方法,它通过将积分区间分割成若干个等距的区间,在每个区间上使用二次多项式进行插值,然后计算多项式与x轴围成的面积之和来近似积分值。

实验中,我们对比了辛普森法和梯形法的计算结果,分析了它们的精度差异。

3. 复化梯形法复化梯形法是对梯形法的一种改进,通过将积分区间分割成多个小区间,在每个小区间上使用梯形法进行积分,然后计算所有小区间积分值的和来近似积分值。

实验中,我们对比了复化梯形法和辛普森法的计算结果,分析了它们的精度和效率。

4. 龙贝格法龙贝格法是一种通过外推加速提高计算精度的数值积分方法。

它通过比较使用不同点数(n和2n)的积分结果,得到更高精度的积分结果。

实验中,我们使用龙贝格法对几个函数进行积分,并与其他方法进行了比较。

三、实验步骤1. 编写程序实现梯形法、辛普森法、复化梯形法和龙贝格法。

2. 选取几个不同的函数,对积分区间进行划分。

3. 使用不同方法计算积分近似值,并与实际积分值进行比较。

4. 分析不同方法的精度和效率。

四、实验结果与分析1. 梯形法梯形法在计算精度上相对较低,但当积分区间划分足够细时,其计算结果可以接近实际积分值。

2. 辛普森法辛普森法在计算精度上优于梯形法,但当积分区间划分较细时,计算量较大。

3. 复化梯形法复化梯形法在计算精度上与辛普森法相当,但计算量较小。

4. 龙贝格法龙贝格法在计算精度上优于复化梯形法,且计算量相对较小。

数值分析实验报告心得(3篇)

数值分析实验报告心得(3篇)

第1篇在数值分析这门课程的学习过程中,我深刻体会到了理论知识与实践操作相结合的重要性。

通过一系列的实验,我对数值分析的基本概念、方法和应用有了更加深入的理解。

以下是我对数值分析实验的心得体会。

一、实验目的与意义1. 巩固数值分析理论知识:通过实验,将课堂上学到的理论知识应用到实际问题中,加深对数值分析概念和方法的理解。

2. 培养实际操作能力:实验过程中,我学会了使用Matlab等软件进行数值计算,提高了编程能力。

3. 增强解决实际问题的能力:实验项目涉及多个领域,通过解决实际问题,提高了我的问题分析和解决能力。

4. 培养团队协作精神:实验过程中,我与同学们分工合作,共同完成任务,培养了团队协作精神。

二、实验内容及方法1. 实验一:拉格朗日插值法与牛顿插值法(1)实验目的:掌握拉格朗日插值法和牛顿插值法的原理,能够运用这两种方法进行函数逼近。

(2)实验方法:首先,我们选择一组数据点,然后利用拉格朗日插值法和牛顿插值法构造插值多项式。

最后,我们将插值多项式与原始函数进行比较,分析误差。

2. 实验二:方程求根(1)实验目的:掌握二分法、Newton法、不动点迭代法、弦截法等方程求根方法,能够运用这些方法求解非线性方程的根。

(2)实验方法:首先,我们选择一个非线性方程,然后运用二分法、Newton法、不动点迭代法、弦截法等方法求解方程的根。

最后,比较不同方法的收敛速度和精度。

3. 实验三:线性方程组求解(1)实验目的:掌握高斯消元法、矩阵分解法等线性方程组求解方法,能够运用这些方法求解线性方程组。

(2)实验方法:首先,我们构造一个线性方程组,然后运用高斯消元法、矩阵分解法等方法求解方程组。

最后,比较不同方法的计算量和精度。

4. 实验四:多元统计分析(1)实验目的:掌握多元统计分析的基本方法,能够运用这些方法对数据进行分析。

(2)实验方法:首先,我们收集一组多元数据,然后运用主成分分析、因子分析等方法对数据进行降维。

数值分析原理实验报告

数值分析原理实验报告

一、实验目的通过本次实验,掌握数值分析的基本原理和方法,了解数值分析在科学和工程领域的应用,培养动手能力和分析问题的能力。

二、实验内容1. 二分法求方程根(1)原理:二分法是一种在实数域上寻找函数零点的算法。

对于连续函数f(x),如果在区间[a, b]上f(a)f(b)<0,则存在一个根在区间(a, b)内。

二分法的基本思想是将区间[a, b]不断二分,缩小根所在的区间,直到满足精度要求。

(2)实验步骤:① 输入函数f(x)和精度要求;② 初始化区间[a, b]和中间点c=a+(b-a)/2;③ 判断f(c)与f(a)的符号,若符号相同,则将区间缩小为[a, c],否则缩小为[c,b];④ 重复步骤②和③,直到满足精度要求;⑤ 输出根的近似值。

2. 牛顿法求方程根(1)原理:牛顿法是一种在实数域上寻找函数零点的算法。

对于可导函数f(x),如果在点x0附近,f(x0)f'(x0)≠0,则存在一个根在点x0附近。

牛顿法的基本思想是通过泰勒展开近似函数,然后求解近似方程的根。

(2)实验步骤:① 输入函数f(x)和精度要求;② 初始化迭代次数n=0,近似根x0;③ 计算导数f'(x0);④ 求解近似方程x1=x0-f(x0)/f'(x0);⑤ 判断|x1-x0|是否满足精度要求,若满足,则停止迭代;否则,将x0更新为x1,n=n+1,返回步骤③。

3. 雅可比迭代法解线性方程组(1)原理:雅可比迭代法是一种解线性方程组的迭代算法。

对于线性方程组Ax=b,雅可比迭代法的基本思想是利用矩阵A的对角线元素将方程组分解为多个一元线性方程,然后逐个求解。

(2)实验步骤:① 输入系数矩阵A和常数向量b;② 初始化迭代次数n=0,近似解向量x0;③ 计算对角线元素d1, d2, ..., dn;④ 更新近似解向量x1=x0-A/d1, x2=x0-A/d2, ..., xn=x0-A/dn;⑤ 判断|x1-x0|是否满足精度要求,若满足,则停止迭代;否则,将x0更新为x1, x2, ..., xn,n=n+1,返回步骤③。

数值分析实验报告--实验2--插值法

数值分析实验报告--实验2--插值法

1 / 21数值分析实验二:插值法1 多项式插值的震荡现象1.1 问题描述考虑一个固定的区间上用插值逼近一个函数。

显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。

我们自然关心插值多项式的次数增加时, 是否也更加靠近被逼近的函数。

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

设区间[-1,1]上函数21()125f x x=+ (1)考虑区间[-1,1]的一个等距划分,分点为n i nix i ,,2,1,0,21 =+-= 则拉格朗日插值多项式为201()()125nn ii iL x l x x ==+∑(2)其中的(),0,1,2,,i l x i n =是n 次拉格朗日插值基函数。

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

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

(3) 区间[a,b]上切比雪夫点的定义为 (21)cos ,1,2,,1222(1)k b a b ak x k n n π⎛⎫+--=+=+ ⎪+⎝⎭(3)以121,,n x x x +为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果,试分析2 / 21原因。

1.2 算法设计使用Matlab 函数进行实验, 在理解了插值法的基础上,根据拉格朗日插值多项式编写Matlab 脚本,其中把拉格朗日插值部分单独编写为f_lagrange.m 函数,方便调用。

1.3 实验结果1.3.1 f(x)在[-1,1]上的拉格朗日插值函数依次取n=2、3、4、5、6、7、10、15、20,画出原函数和拉格朗日插值函数的图像,如图1所示。

Matlab 脚本文件为Experiment2_1_1fx.m 。

可以看出,当n 较小时,拉格朗日多项式插值的函数图像随着次数n 的增加而更加接近于f(x),即插值效果越来越好。

数值分析实验报告

数值分析实验报告

数值分析实验报告篇一:数值分析实验报告(一)(完整)数值分析实验报告12345篇二:数值分析实验报告数值分析实验报告课题一:解线性方程组的直接方法1.实验目的:1、通过该课题的实验,体会模块化结构程序设计方法的优点;2、运用所学的计算方法,解决各类线性方程组的直接算法;3、提高分析和解决问题的能力,做到学以致用;4、通过三对角形线性方程组的解法,体会稀疏线性方程组解法的特点。

2.实验过程:实验代码:#include &quot;stdio.h&quot;#include &quot;math.h&quot;#includeiostreamusing namespace std;//Gauss法void lzy(double **a,double *b,int n) {int i,j,k;double l,x[10],temp;for(k=0;kn-1;k++){for(j=k,i=k;jn;j++){if(j==k)temp=fabs(a[j][k]);else if(tempfabs(a[j][k])){temp=fabs(a[j][k]);i=j;}}if(temp==0){cout&quot;无解\n; return;}else{for(j=k;jn;j++){temp=a[k][j];a[k][j]=a[i][j];a[i][j]=temp;}temp=b[k];b[k]=b[i];b[i]=temp;}for(i=k+1;in;i++) {l=a[i][k]/a[k][k];for(j=k;jn;j++)a[i][j]=a[i][j]-l*a[k][j]; b[i]=b[i]-l*b[k];}if(a[n-1][n-1]==0){cout&quot;无解\n;return;}x[n-1]=b[n-1]/a[n-1][n-1];for(i=n-2;i=0;i--){temp=0;for(j=i+1;jn;j++)temp=temp+a[i][j]*x[j];x[i]=(b[i]-temp)/a[i][i];}for(i=0;in;i++){printf(&quot;x%d=%lf\t&quot;,i+1,x[i]); printf(&quot;\n&quot;);}}//平方根法void pfg(double **a,double *b,int n)int i,k,m;double x[8],y[8],temp;for(k=0;kn;k++){temp=0;for(m=0;mk;m++)temp=temp+pow(a[k][m],2);if(a[k][k]temp)return;a[k][k]=pow((a[k][k]-temp),1.0/2.0);for(i=k+1;in;i++){temp=0;for(m=0;mk;m++)temp=temp+a[i][m]*a[k][m]; a[i][k]=(a[i][k]-temp)/a[k][k]; }temp=0;for(m=0;mk;m++)temp=temp+a[k][m]*y[m];y[k]=(b[k]-temp)/a[k][k];}x[n-1]=y[n-1]/a[n-1][n-1];for(k=n-2;k=0;k--){temp=0;for(m=k+1;mn;m++)temp=temp+a[m][k]*x[m];x[k]=(y[k]-temp)/a[k][k];}for(i=0;in;i++){printf(&quot;x%d=%lf\t&quot;,i+1,x[i]);printf(&quot;\n&quot;);}}//追赶法void zgf(double **a,double *b,int n){int i;double a0[10],c[10],d[10],a1[10],b1[10],x[10],y[10]; for(i=0;in;i++){a0[i]=a[i][i];if(in-1)c[i]=a[i][i+1];if(i0)d[i-1]=a[i][i-1];}a1[0]=a0[0];for(i=0;in-1;i++){b1[i]=c[i]/a1[i];a1[i+1]=a0[i+1]-d[i+1]*b1[i];}y[0]=b[0]/a1[0];for(i=1;in;i++)y[i]=(b[i]-d[i]*y[i-1])/a1[i];x[n-1]=y[n-1];for(i=n-2;i=0;i--)x[i]=y[i]-b1[i]*x[i+1];for(i=0;in;i++){printf(&quot;x%d=%lf\t&quot;,i+1,x[i]); printf(&quot;\n&quot;);}}int main(){int n,i,j;double **A,**B,**C,*B1,*B2,*B3;A=(double **)malloc(n*sizeof(double)); B=(double **)malloc(n*sizeof(double));C=(double **)malloc(n*sizeof(double));B1=(double *)malloc(n*sizeof(double));B2=(double *)malloc(n*sizeof(double));B3=(double *)malloc(n*sizeof(double));for(i=0;in;i++){A[i]=(double *)malloc((n)*sizeof(double));B[i]=(double*)malloc((n)*sizeof(double));C[i]=(double*)malloc((n)*sizeof(double)); }cout&quot;第一题(Gauss列主元消去法):&quot;endlendl; cout&quot;请输入阶数n:&quot;endl;cinn;cout&quot;\n请输入系数矩阵:\n\n&quot;;for(i=0;in;i++)for(j=0;jn;j++){篇三:数值分析实验报告(包含源程序) 课程实验报告课程实验报告。

数值分析实验报告总结

数值分析实验报告总结

一、实验背景数值分析是研究数值计算方法及其理论的学科,是计算机科学、数学、物理学等领域的重要基础。

为了提高自身对数值分析理论和方法的理解,我们进行了数值分析实验,通过实验加深对理论知识的掌握,提高实际操作能力。

二、实验目的1. 理解数值分析的基本理论和方法;2. 掌握数值分析实验的基本步骤和技巧;3. 培养实验设计和数据分析能力;4. 提高编程和计算能力。

三、实验内容本次实验主要分为以下几个部分:1. 线性方程组求解实验:通过高斯消元法、LU分解法等求解线性方程组,并分析算法的稳定性和误差;2. 矩阵特征值问题计算实验:利用幂法、逆幂法等计算矩阵的特征值和特征向量,分析算法的收敛性和精度;3. 非线性方程求根实验:运用二分法、牛顿法、不动点迭代法等求解非线性方程的根,比较不同算法的优缺点;4. 函数插值实验:运用拉格朗日插值、牛顿插值等方法对给定的函数进行插值,分析插值误差;5. 常微分方程初值问题数值解法实验:运用欧拉法、改进的欧拉法、龙格-库塔法等求解常微分方程初值问题,比较不同算法的稳定性和精度。

四、实验过程1. 线性方程组求解实验:首先,编写程序实现高斯消元法、LU分解法等算法;然后,对给定的线性方程组进行求解,记录计算结果;最后,分析算法的稳定性和误差。

2. 矩阵特征值问题计算实验:编写程序实现幂法、逆幂法等算法;然后,对给定的矩阵进行特征值和特征向量的计算,记录计算结果;最后,分析算法的收敛性和精度。

3. 非线性方程求根实验:编写程序实现二分法、牛顿法、不动点迭代法等算法;然后,对给定的非线性方程进行求根,记录计算结果;最后,比较不同算法的优缺点。

4. 函数插值实验:编写程序实现拉格朗日插值、牛顿插值等方法;然后,对给定的函数进行插值,记录计算结果;最后,分析插值误差。

5. 常微分方程初值问题数值解法实验:编写程序实现欧拉法、改进的欧拉法、龙格-库塔法等算法;然后,对给定的常微分方程初值问题进行求解,记录计算结果;最后,比较不同算法的稳定性和精度。

数值分析实验报告模板

数值分析实验报告模板

数值分析实验报告模板篇一:数值分析实验报告(一)(完整)数值分析实验报告12345篇二:数值分析实验报告实验报告一题目:非线性方程求解摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。

本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。

利用二分法求解给定非线性方程的根,在给定的范围内,假设f(x,y)在[a,b]上连续,f(a)xf(b) 直接影响迭代的次数甚至迭代的收敛与发散。

即若x0 偏离所求根较远,Newton法可能发散的结论。

并且本实验中还利用利用改进的Newton法求解同样的方程,且将结果与Newton法的结果比较分析。

前言:(目的和意义)掌握二分法与Newton法的基本原理和应用。

掌握二分法的原理,验证二分法,在选对有根区间的前提下,必是收敛,但精度不够。

熟悉Matlab语言编程,学习编程要点。

体会Newton使用时的优点,和局部收敛性,而在初值选取不当时,会发散。

数学原理:对于一个非线性方程的数值解法很多。

在此介绍两种最常见的方法:二分法和Newton法。

对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b) Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式xk?1?xk?f(xk) f'(xk)产生逼近解x*的迭代数列{xk},这就是Newton法的思想。

当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。

另外,若将该迭代公式改进为xk?1?xk?rf(xk) 'f(xk)其中r为要求的方程的根的重数,这就是改进的Newton 法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。

程序设计:本实验采用Matlab的M文件编写。

其中待求解的方程写成function的方式,如下function y=f(x);y=-x*x-sin(x);写成如上形式即可,下面给出主程序。

数值分析实验报告5篇

数值分析实验报告5篇

误差分析实验1.1(问题)实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。

对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。

通过本实验可获得一个初步体会。

数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。

病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。

问题提出:考虑一个高次的代数多项式)1.1()()20()2)(1()(201∏=-=---=k k x x x x x p显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。

现考虑该多项式的一个扰动)2.1(0)(19=+x x p ε其中ε是一个非常小的数。

这相当于是对(1.1)中19x 的系数作一个小的扰动。

我们希望比较(1.1)和(1.2)根的差别,从而分析方程(1.1)的解对扰动的敏感性。

实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。

roots(a)u =其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。

设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程01121=+++++-n n n n a x a x a x a的全部根;而函数poly(v)b =的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。

可见“roots ”和“poly ”是两个互逆的运算函数。

;000000001.0=ess );21,1(zeros ve = ;)2(ess ve =))20:1((ve poly roots +上述简单的Matlab 程序便得到(1.2)的全部根,程序中的“ess ”即是(1.2)中的ε。

实验要求:(1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。

数值分析上机实验6

数值分析上机实验6

数值分析上机实验6根据表中数据,预测公元2000年时的世界人口。

问题分析与数学模型设人口总数为N(t),根据人口理论的马尔萨斯模型,采用指数函数N(t) = e a + b t=+,令对数据进行拟合。

为了计算方便,将上式两边同取对数,得ln N a bty = ln N或N = e y变换后的拟合函数为y(t) = a + b t根据表中数据及等式 k k( 1,2,……,9)可列出关于两个未知数、b的9个方程的超定方程组(方程数多于未知数个数的方程组)a + t j b = y j(j= 1,2, (9)可用最小二乘法求解。

算法与数学模型求解算法如下:第一步:输入人口数据,并计算所有人口数据的对数值;第二步:建立超定方程组的系数矩阵,并计算对应的正规方程组的系数矩阵和右端向量;第三步:求解超定方程组并输出结果:a,b;第四步:利用数据结果构造指数函数计算2000年人口近似值N(2000),结束。

MATLAB程序t=1960:1968;t0=2000;N=[29.72 30.61 31.51 32.13 32.34 32.85 33.56 34.20 34.83];y=log(N);A=[ ones(9,1), t' ];d=A\ y' ;a=d(1),b=d(2)N0=exp(a+b*t0)x=1960:2001;yy=exp(a+b*x);plot(x,yy,t,N,'o',2000,N0,'o')计算结果为a =-3,b =6N (2000)所以取五位有效数,可得人口数据的指数拟合函数t e t N 0186.00383.33)(+-=经计算得2000年人口预测值为: (亿)。

例2.温度数据的三角函数拟合问题 洛杉矶郊区在11月8日的温度记录如下在不长的时期内,气温的变化常以24小时为周期,考虑用Fourier 级数的部分和(有限项)做拟合函数。

数值分析上机实验报告

数值分析上机实验报告

一、实验目的通过本次上机实验,掌握数值分析中常用的算法,如二分法、牛顿法、不动点迭代法、弦截法等,并能够运用这些算法解决实际问题。

同时,提高编程能力,加深对数值分析理论知识的理解。

二、实验环境1. 操作系统:Windows 102. 编程语言:MATLAB3. 实验工具:MATLAB数值分析工具箱三、实验内容1. 二分法求方程根二分法是一种常用的求方程根的方法,适用于连续函数。

其基本思想是:从区间[a, b]中选取中点c,判断f(c)的符号,若f(c)与f(a)同号,则新的区间为[a, c],否则为[c, b]。

重复此过程,直至满足精度要求。

2. 牛顿法求方程根牛顿法是一种迭代法,适用于可导函数。

其基本思想是:利用函数在某点的导数值,求出函数在该点的切线方程,切线与x轴的交点即为方程的近似根。

3. 不动点迭代法求方程根不动点迭代法是一种迭代法,适用于具有不动点的函数。

其基本思想是:从初始值x0开始,不断迭代函数g(x)的值,直至满足精度要求。

4. 弦截法求方程根弦截法是一种线性近似方法,适用于可导函数。

其基本思想是:利用两点间的直线近似代替曲线,求出直线与x轴的交点作为方程的近似根。

四、实验步骤1. 二分法求方程根(1)编写二分法函数:function [root, error] = bisection(a, b, tol)(2)输入初始区间[a, b]和精度要求tol(3)调用函数计算根:[root, error] = bisection(a, b, tol)2. 牛顿法求方程根(1)编写牛顿法函数:function [root, error] = newton(f, df, x0, tol)(2)输入函数f、导数df、初始值x0和精度要求tol(3)调用函数计算根:[root, error] = newton(f, df, x0, tol)3. 不动点迭代法求方程根(1)编写不动点迭代法函数:function [root, error] = fixed_point(g, x0, tol)(2)输入函数g、初始值x0和精度要求tol(3)调用函数计算根:[root, error] = fixed_point(g, x0, tol)4. 弦截法求方程根(1)编写弦截法函数:function [root, error] = secant(f, x0, x1, tol)(2)输入函数f、初始值x0和x1,以及精度要求tol(3)调用函数计算根:[root, error] = secant(f, x0, x1, tol)五、实验结果与分析1. 二分法求方程根以方程f(x) = x^2 - 2 = 0为例,输入初始区间[a, b]为[1, 3],精度要求tol 为1e-6。

数值分析拟合实验报告(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. 线性插值线性插值方法简单易行,但精度较低,适用于数据点分布较为均匀的情况。

数值分析的实验报告

数值分析的实验报告

数值分析的实验报告数值分析的实验报告导言数值分析是一门研究数值计算方法和数值计算误差的学科,它在科学计算、工程技术和社会经济等领域具有广泛的应用。

本实验旨在通过对数值分析方法的实际应用,验证其有效性和可靠性。

实验一:方程求根方程求根是数值分析中的基础问题之一。

我们选取了一个非线性方程进行求解。

首先,我们使用二分法进行求解。

通过多次迭代,我们得到了方程的一个近似解。

然后,我们使用牛顿法进行求解。

与二分法相比,牛顿法的收敛速度更快,但需要选择一个初始点。

通过比较两种方法的结果,我们验证了牛顿法的高效性。

实验二:插值与拟合插值与拟合是数值分析中常用的数据处理方法。

我们选取了一组实验数据,通过拉格朗日插值法和最小二乘法进行插值和拟合。

通过对比两种方法的拟合效果,我们验证了最小二乘法在处理含有噪声数据时的优势。

同时,我们还讨论了插值和拟合的精度与样本点数量之间的关系。

实验三:数值积分数值积分是数值分析中的重要内容之一。

我们选取了一个定积分进行计算。

首先,我们使用复化梯形公式进行积分计算。

通过增加分割区间的数量,我们得到了更精确的结果。

然后,我们使用复化辛普森公式进行积分计算。

与复化梯形公式相比,复化辛普森公式具有更高的精度。

通过比较两种方法的结果,我们验证了复化辛普森公式的优越性。

实验四:常微分方程数值解常微分方程数值解是数值分析中的重要应用之一。

我们选取了一个常微分方程进行数值解的计算。

首先,我们使用欧拉方法进行数值解的计算。

然后,我们使用改进的欧拉方法进行数值解的计算。

通过比较两种方法的结果,我们验证了改进的欧拉方法的更高精度和更好的稳定性。

实验五:线性方程组的数值解法线性方程组的数值解法是数值分析中的重要内容之一。

我们选取了一个线性方程组进行数值解的计算。

首先,我们使用高斯消元法进行数值解的计算。

然后,我们使用追赶法进行数值解的计算。

通过比较两种方法的结果,我们验证了追赶法在求解三对角线性方程组时的高效性。

数值分析实验报告

数值分析实验报告

数值分析实验报告一、实验目的数值分析是一门研究用计算机求解数学问题的数值方法及其理论的学科。

本次实验的目的在于通过实际操作和编程实现,深入理解和掌握数值分析中的常见算法,提高运用数值方法解决实际问题的能力,并对算法的精度、稳定性和效率进行分析和比较。

二、实验环境本次实验使用的编程语言为 Python,使用的开发工具为 PyCharm。

实验所依赖的主要库包括 NumPy、Matplotlib 等。

三、实验内容(一)函数逼近与插值1、拉格朗日插值法通过给定的离散数据点,构建拉格朗日插值多项式,对未知点进行函数值的估计。

2、牛顿插值法与拉格朗日插值法类似,但采用了不同的形式和计算方式。

(二)数值积分1、梯形公式将积分区间划分为若干个梯形,通过计算梯形面积之和来近似积分值。

2、辛普森公式基于抛物线拟合的方法,提高积分近似的精度。

(三)线性方程组求解1、高斯消元法通过逐行消元将线性方程组化为上三角形式,然后回代求解。

2、 LU 分解法将系数矩阵分解为下三角矩阵 L 和上三角矩阵 U,然后通过两次前代和回代求解。

(四)非线性方程求解1、二分法通过不断将区间一分为二,逐步缩小根所在的区间,直到满足精度要求。

2、牛顿迭代法利用函数的切线来逼近根,通过迭代逐步收敛到根的近似值。

四、实验步骤(一)函数逼近与插值1、拉格朗日插值法定义计算拉格朗日基函数的函数。

根据给定的数据点和待求点,计算插值多项式的值。

输出插值结果,并与真实值进行比较。

2、牛顿插值法计算差商表。

构建牛顿插值多项式。

进行插值计算和结果分析。

(二)数值积分1、梯形公式定义积分区间和被积函数。

按照梯形公式计算积分近似值。

分析误差。

2、辛普森公式同样定义积分区间和被积函数。

运用辛普森公式计算积分近似值。

比较与梯形公式的精度差异。

(三)线性方程组求解1、高斯消元法输入系数矩阵和右端项向量。

进行消元操作。

回代求解方程。

输出解向量。

2、 LU 分解法对系数矩阵进行 LU 分解。

数值分析实验报告doc

数值分析实验报告doc

数值分析实验报告篇一:数值分析实验报告(一)(完整)数值分析实验报告12345篇二:数值分析实验报告数值分析实验报告课题一:解线性方程组的直接方法1.实验目的:1、通过该课题的实验,体会模块化结构程序设计方法的优点;2、运用所学的计算方法,解决各类线性方程组的直接算法;3、提高分析和解决问题的能力,做到学以致用;4、通过三对角形线性方程组的解法,体会稀疏线性方程组解法的特点。

2.实验过程:实验代码:#include "stdio.h"#include "math.h"#includeusing namespace std;//Gauss法void lzy(double **a,double *b,int n) {int i,j,k;double l,x[10],temp;for(k=0;k {for(j=k,i=k;j {if(j==k)temp=fabs(a[j][k]);else if(temp {temp=fabs(a[j][k]);i=j;}}if(temp==0){cout return;}elsefor(j=k;j {temp=a[k][j];a[k][j]=a[i][j];a[i][j]=temp;}temp=b[k];b[k]=b[i];b[i]=temp;}for(i=k+1;i {l=a[i][k]/a[k][k];for(j=k;j a[i][j]=a[i][j]-l*a[k][j]; b[i]=b[i]-l*b[k];}}if(a[n-1][n-1]==0){cout return;}x[n-1]=b[n-1]/a[n-1][n-1];for(i=n-2;i>=0;i--)temp=0;for(j=i+1;j temp=temp+a[i][j]*x[j]; x[i]=(b[i]-temp)/a[i][i];}for(i=0;i {printf("x%d=%lf\t",i+1,x[i]);printf("\n");}}//平方根法void pfg(double **a,double *b,int n) {int i,k,m;double x[8],y[8],temp;for(k=0;k {temp=0;for(m=0;m temp=temp+pow(a[k][m],2); if(a[k][k] return;a[k][k]=pow((a[k][k]-temp),1.0/2.0); for(i=k+1;i {temp=0;for(m=0;m temp=temp+a[i][m]*a[k][m]; a[i][k]=(a[i][k]-temp)/a[k][k];}temp=0;for(m=0;m temp=temp+a[k][m]*y[m];y[k]=(b[k]-temp)/a[k][k];}x[n-1]=y[n-1]/a[n-1][n-1];for(k=n-2;k>=0;k--){temp=0;for(m=k+1;m temp=temp+a[m][k]*x[m];x[k]=(y[k]-temp)/a[k][k];}for(i=0;i {printf("x%d=%lf\t",i+1(转自:小草范文网:数值分析实验报告),x[i]);printf("\n");}}//追赶法void zgf(double **a,double *b,int n){int i;double a0[10],c[10],d[10],a1[10],b1[10],x[10],y[10];for(i=0;i {a0[i]=a[i][i];if(i c[i]=a[i][i+1];if(i>0)d[i-1]=a[i][i-1];}a1[0]=a0[0];for(i=0;i {b1[i]=c[i]/a1[i];a1[i+1]=a0[i+1]-d[i+1]*b1[i];}y[0]=b[0]/a1[0];for(i=1;i y[i]=(b[i]-d[i]*y[i-1])/a1[i];x[n-1]=y[n-1];for(i=n-2;i>=0;i--)x[i]=y[i]-b1[i]*x[i+1];for(i=0;i {printf("x%d=%lf\t",i+1,x[i]);printf("\n");}}int main(){int n,i,j;double **A,**B,**C,*B1,*B2,*B3;A=(double **)malloc(n*sizeof(double)); B=(double **)malloc(n*sizeof(double));C=(double **)malloc(n*sizeof(double));B1=(double *)malloc(n*sizeof(double));B2=(double *)malloc(n*sizeof(double));B3=(double *)malloc(n*sizeof(double));for(i=0;i {A[i]=(double *)malloc((n)*sizeof(double));B[i]=(double*)malloc((n)*sizeof(double));C[i]=(double*)malloc((n)*sizeof(double)); }cout cin>>n;cout for(i=0;i for(j=0;j篇三:数值分析实验报告(包含源程序)课程实验报告课程实验报告。

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

实验三 函数逼近与快速傅里叶变换 P95专业班级:信计131班 姓名:段雨博 学号:07 一、实验目的1、熟悉matlab 编程。

2、学习最小二乘法及程序设计算法。

二、实验题目 1、对于给函数()21125f x x=+在区间[]1,1-上取()10.20,1,10i x i i =-+=,试求3次曲线拟合,试画出拟合曲线并打印出方程,与第二章计算实习题2的结果进行对比。

x y 图示数据曲线及相应的三种拟合曲线。

3. 给定数据点(),i i x y 如表所示i x 0 1iy1用最小二乘法求拟合数据的二次多项式,并求平方误差。

三、实验原理与理论基础1.最小二乘原理与线性拟合:在函数的最佳平方逼近中],[)(b a C x f ∈,如果)(x f 只在一组离散点集}...,1,0,{m i x i =上给出,这就是科学实验中经常见到的实验数据{}...1,0),,{(m i y x i i =}的曲线拟合,这里)...1,0)((m i x f y i i ==,要求一个函数)(*x S y =与所给数据}...1,0),,{(m i y x i i =拟合,若记误差T m ),...(10δδδδ=,设)(),...(),(10x x x n ϕϕϕ是C[a,b]上线性无关函数族,在)}(),...(),({10x x x span n ϕϕϕϕ=中找一函数)(*x S 使误差平方和220222])([min ])(*[∑∑∑===-=-==mi i i m i i m i i y x S y x S δδ,这里 )(...)()()(1000x a x a x a x S n n ϕϕϕ+++= (m n <)。

这就是一般的最小二乘逼近,用几何语言说,就称为曲线拟合的最小二乘法。

数据拟合是根据测定的数据间的相互关系,确定曲线),...,,;(10n a a a x s y =的类型,然后再根据在给定点上误差的平方和达到最小的原则,即求解无约束问题:∑=-=mi i n i n y a a a x s a a a F 121010,)),...,,;((),...,,(m in确定出最优参数:),...,1,0(*n k a k=,从而得到拟合曲线).(*x s y =2、多项式拟合。

3、定义1:设有数据},...,,{21m x x x X =和权系数),,...,2,1(m i i =ω称:∑==mi i i ix g x f g f 1)()(),(ω为函数为权的内积。

上以在和ω},...,,{21m x x x X g f =4、用正交函数最佳平方逼近:为避免出现正规方程组的系数矩阵是病态矩阵的情况,在选择多项式时需要考虑正交的多项式n n b a C span φφφφφφ,...,,],,[},...,,{.1010⊂=Φ设是正交基,即:⎪⎩⎪⎨⎧=≠=k i ki k k i ,,0),(22φφφ 于是正规方程组可以简化为:,,...,1,0),,(22n k f a k k k ==φφ (1)解方程得到:.,...,1,0,/),(22*n k f a a k k k k ===φφ这里避免了求解病态方程组,提高了计算系数的精确度。

对任意的],,[)(b a C x f ⊂其最佳平方逼近函数为:)(/),()()(22**x f x a x s k knk nk k k kφφφφ∑∑===由式(1)以及∑=-=-+-=-=nk k k f a fs f s f s fsf 0*22***22*22),(),(),(φδ,导出平方误差为:∑=-=nk k ka f22*2222,)(φδ其平方根称为均方误差。

5、由题意决定,....),,1(2x x span ,即决定拟合多项式,分别计算1(,)(,)ni j ijm k k k k ==∑,1(,)(,)n i i j m k y k y -==∑,用(,)i j k k 组成方阵A,用(,)i k y -组成矩阵B ,利用A/B 求出该多项式的系数,再利用1(())^2niii f x y =-∑求出平方误差。

四、实验内容解:1、 >> i = 0:10; >> x = -1+*i;>> y = 1./(1+25*x.^2); >> p=polyfit(x,y,3); >> s=vpa(poly2sym(p)) s =- *x^3 - *x^2 + *x + >> f=polyval(p,x); >> plot(x,f,x,y,'o ')2、>> x=[0 1];>> y=[1 ];>> p1=polyfit(x,y,3)%三次多项式拟合p1 =>> p2=polyfit(x,y,4)%四次多项式拟合p2 =>> y1=polyval(p1,x);>> y2=polyval(p2,x);%多项式求值>> plot(x,y,'c--',x,y1,'r:',x,y2,'y-.')>> p3=polyfit(x,y,2)%观察图像,类似抛物线,故用二次多项式拟合。

p3 =>> y3=polyval(p3,x);>> plot(x,y,'c--',x,y1,'r:',x,y2,'y-.',x,y3,'k--')%画出四种拟合曲线3、M文件:function []=zuixiaoercinihe2(x,y)n=length(x);k00=0;for i=1:nk00=k00+1;endk01=0;for i=1:nk01=k01+x(i);endk02=0;for i=1:nk02=k02+x(i)*x(i);endk11=0;for i=1:nk11=k11+x(i)*x(i);endk12=0;for i=1:nk12=k12+x(i)*x(i)*x(i);endk22=0;for i=1:nk22=k22+x(i)*x(i)*x(i)*x(i);endk0y=0;for i=1:nk0y=k0y+y(i);endk1y=0;for i=1:nk1y=k1y+x(i)*y(i);endk2y=0;for i=1:nk2y=k2y+x(i)*x(i)*y(i);endA=[k00 k01 k02;k01 k11 k12;k02 k12 k22];B=[k0y;k1y;k2y];C=A\B;p=C(1);q=C(2);r=C(3);syms m;'拟合的二次函数为'f=p+q*m+r*m*ml=0;for i=1:nl=l+((p+q*x(i)+r*x(i)*x(i))-y(i))*((p+q*x(i)+r*x(i)*x(i))-y(i)); end'该拟合函数的平方误差为'end五、实验结果1、>> i = 0:10;>> x = -1+*i;>> y = 1./(1+25*x.^2);>> p=polyfit(x,y,3);>> s=vpa(poly2sym(p))s =- *x^3 - *x^2 + *x +>> f=polyval(p,x);>> plot(x,f,x,y,'o ')2、>> x=[0 1];>> y=[1 ];>> p1=polyfit(x,y,3)%三次多项式拟合p1 =>> p2=polyfit(x,y,4)%四次多项式拟合p2 =>> y1=polyval(p1,x);>> y2=polyval(p2,x);%多项式求值>> plot(x,y,'c--',x,y1,'r:',x,y2,'y-.')>> p3=polyfit(x,y,2)%观察图像,类似抛物线,故用二次多项式拟合。

p3 =>> y3=polyval(p3,x);>> plot(x,y,'c--',x,y1,'r:',x,y2,'y-.',x,y3,'k--')%画出四种拟合曲线3、>> x=[0 ]x =>> y=[1 ]y =>> zuixiaoercinihe2(x,y)ans =拟合的二次函数为f =m^2 + m + 1ans =该拟合函数的平方误差为l =六、实验结果分析与小结1、通过这次实习,我学会了如何使用matlab根据已知点或者函数进行线性拟合,并慢慢熟悉编写函数后如何进行改错,有些过程作了简单的注释,也明白了课本中最小二乘法算法如何逼近、如何运算,对第三章的理论内容有了更深的了解。

只有真正操作了才能将理论转为实践,有新的发现。

2、不足的地方仍然是matlab的使用。

虽然很简单的最基础的会了一点,可是使用matlab 仍有困难,有些函数编写不太对,结果出不来。

专业术语、函数程序编写、修改错误、运行函数这几个环节每次实习都会有很多问题,都会被卡壳,需要去找资料来查这些东西是如何编写的。

在不断地实习中要不断地改进,不断地学会更多关于matlab的操作内容,熟悉编程语言,不断积累经验。

相关文档
最新文档