数值分析实验报告一

合集下载

数值分析综合实验报告

数值分析综合实验报告

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

二、实验内容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)矩形法:计算简单,但精度较低。

数值分析实验报告一

数值分析实验报告一

实验报告课程名称:数值分析课题名称:比较算法专业:勘查技术与工程姓名:韩鹏洋班级:061132班完成日期:2015 年10 月11 日实验报告一、实验名称比较两种算法收敛性及复杂度二、实验目的(1)培养编程与上机调试能力(2)观察不同算法的差异(3)评估各算法稳定性三、实验要求利用matlab计算算法,并绘图观察收敛性。

四、实验原理利用泰勒展开式逼近函数值五、实验题目求ln 2的近似值六、实验步骤(1)写出ln(1+x)展开式(2)利用Matlab编程计算(3)最后结果分析七、实验整体流程图或算法八、程序及其运行结果clear all;ticn=1:100;s=0;for i=1:100s1=(-1).^(i-1)/i;s=s+s1;y(i)=s;endplot(n,y,'ro');tocclear all;ticn=1:50;s=0;for i=1:50s1=2*(1/3).^(2*i-1)/(2*i-1);s=s+s1;y(i)=s;endhold on;plot(n,y,'b-');toc运行结果:方法1时间已过0.369496 秒。

方法2时间已过0.025252 秒。

九、实验结果分析方法一趋近速度慢,复杂度100+100+(1+2+…+99)=5150 方法二趋近快,复杂度150+3+5+7+…+99=2499选用第二种方法更好十、实验体会。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

数值分析实验报告

数值分析实验报告

一、实验目的1. 理解数值分析的基本概念和常用算法;2. 掌握数值方法在求解实际问题中的应用;3. 培养编程能力,提高对数值分析软件的使用熟练度。

二、实验内容本次实验主要涉及以下内容:1. 拉格朗日插值法;2. 牛顿插值法;3. 线性方程组的求解方法;4. 方程求根的数值方法;5. 最小二乘法曲线拟合。

三、实验步骤1. 拉格朗日插值法(1)输入数据:给定一组数据点(x1, y1)、(x2, y2)、...、(xn, yn)。

(2)计算拉格朗日插值多项式L(x)。

(3)利用L(x)计算待求点x0的函数值y0。

2. 牛顿插值法(1)输入数据:给定一组数据点(x1, y1)、(x2, y2)、...、(xn, yn)。

(2)计算牛顿插值多项式N(x)。

(3)利用N(x)计算待求点x0的函数值y0。

3. 线性方程组的求解方法(1)输入数据:给定线性方程组的系数矩阵A和常数向量b。

(2)采用高斯消元法求解线性方程组Ax=b。

4. 方程求根的数值方法(1)输入数据:给定函数f(x)和初始值x0。

(2)采用二分法求解方程f(x)=0的根。

5. 最小二乘法曲线拟合(1)输入数据:给定一组数据点(x1, y1)、(x2, y2)、...、(xn, yn)。

(2)建立线性最小二乘模型y=F(x)。

(3)利用最小二乘法求解模型参数。

四、实验结果与分析1. 拉格朗日插值法与牛顿插值法的比较通过实验,我们发现牛顿插值法的精度高于拉格朗日插值法。

这是因为牛顿插值法在计算过程中考虑了前一项的导数信息,从而提高了插值多项式的平滑性。

2. 线性方程组的求解方法高斯消元法在求解线性方程组时,计算过程较为繁琐,但稳定性较好。

在实际应用中,可根据具体问题选择合适的方法。

3. 方程求根的数值方法二分法在求解方程时,收敛速度较慢,但具有较好的稳定性。

对于初始值的选择,应尽量接近真实根。

4. 最小二乘法曲线拟合最小二乘法在拟合曲线时,误差较小,适用于数据点较多的情况。

数值分析原理实验报告

数值分析原理实验报告

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

二、实验内容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,返回步骤③。

数值分析实验报告

数值分析实验报告

数值分析实验报告篇一:数值分析实验报告(一)(完整)数值分析实验报告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++){篇三:数值分析实验报告(包含源程序) 课程实验报告课程实验报告。

数值分析实验报告5篇

数值分析实验报告5篇
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -13 -14
1.69376699767424 0.92310666706964 0.08471614569741 0.40804026409411
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
讨论:
利用这种方法进行这类实验,可以很精确的扰动敏感性的一般规律。即 当对扰动项的系数越来越小时,对其多项式扰动的结果也就越来越小, 即扰动敏感性与扰动项的系数成正比,扰动项的系数越大,对其根的扰 动敏感性就越明显,当扰动的系数一定时,扰动敏感性与扰动的项的幂 数成正比,扰动的项的幂数越高,对其根的扰动敏感性就越明显。
解线性方程组的直接方法
实验 (主元的选取与算法的稳定性) 问题提出:Gauss消去法是我们在线性代数中已经熟悉的。但由于计算 机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保 Gauss消去法作为数值算法的稳定性呢?Gauss消去法从理论算法到数值 算法,其关键是主元的选择。主元的选择从数学理论上看起来平凡,它 却是数值分析中十分典型的问题。 实验内容:考虑线性方程组 编制一个能自动选取主元,又能手动选取主元的求解线性方程组的 Gauss消去过程。 实验要求: (1)取矩阵,则方程有解。取n=10计算矩阵的条件数。让程序自动选 取主元,结果如何? (2)现选择程序中手动选取主元的功能。每步消去过程总选取按模最 小或按模尽可能小的元素作为主元,观察并记录计算结果。若每步消去 过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。 (3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析 不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元

数值分析实验报告模板

数值分析实验报告模板

数值分析实验报告模板篇一:数值分析实验报告(一)(完整)数值分析实验报告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);写成如上形式即可,下面给出主程序。

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

实验报告
课程名称:数值分析
实验项目:解方程 / 解方程组
专业班级:机械工程
姓名:李奇学号: 201820065 实验室号:实验组号:
实验时间:批阅时间:
指导教师:曲绍波成绩:
沈阳工业大学实验报告
(适用计算机程序设计类)
专业班级:机械工程学号: 201820065 姓名:李奇实验名称:解方程
附件A 沈阳工业大学实验报告
(适用计算机程序设计类)
专业班级:机械工程学号: 201820065 姓名:李奇实验步骤或程序:
1、编写牛顿法M文件
2、调用newton.m文件,输入求解
3、运行结果如下
4、编写割线法M文件
(1)子程序
(2)主程序
5、调用secant.m文件,输入方程
6、运行结果如下
沈阳工业大学实验报告
(适用计算机程序设计类)
专业班级:机械工程学号: 201820065 姓名:李奇实验名称:解方程组
附件B 沈阳工业大学实验报告
(适用计算机程序设计类)
专业班级:机械工程学号: 201820065 姓名:李奇实验步骤或程序:
1、编写高斯消元法M文件
2、调用Gaussxiaoqu.m文件,输入方程组
3、运行结果如下
4、编写高斯列主元法M文件
5、调用Gauss.m文件,输入方程组
6、运行结果如下
7、编写LU分解法M文件
8、调用LU.m文件,输入方程组
9、运行结果如下。

相关文档
最新文档