数值分析实验

合集下载

数值分析综合实验报告

数值分析综合实验报告

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

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

数值分析实验 实验报告

数值分析实验 实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

数值分析实验报告

数值分析实验报告

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

2.实验过程:实验代码:#include "stdio.h"#include "math.h"#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"无解\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"无解\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("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;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("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;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("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;in;i++){A[i]=(double *)malloc((n)*sizeof(double));B[i]=(double*)malloc((n)*sizeof(double));C[i]=(double*)malloc((n)*sizeof(double)); }cout"第一题(Gauss列主元消去法):"endlendl; cout"请输入阶数n:"endl;cinn;cout"\n请输入系数矩阵:\n\n";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. 常微分方程初值问题数值解法实验:编写程序实现欧拉法、改进的欧拉法、龙格-库塔法等算法;然后,对给定的常微分方程初值问题进行求解,记录计算结果;最后,比较不同算法的稳定性和精度。

《数值分析实验》实验

《数值分析实验》实验

数值分析实验实验1 方程求根一、实验目的:1.掌握常用的求非线性方程近似根的数值方法,用所学方法求非线性方程满足指定精度要求的数值解,比较各种方法的异同点并进行收敛性分析。

2.通过对二分法与牛顿迭代法作编程练习与上机运算,进一步体会二分法与牛顿迭代法的不同特点。

3.编写割线迭代法的程序,求非线性方程的解,并与牛顿迭代法作比较。

二、实验内容:1.用二分法求方程0104)(23=-+=x x x f 在1.5附近的根。

2.用牛顿迭代法求方程033)(23=--+=x x x x f 在1.5附近的根。

3.用简单迭代法求解非线性方程3sin )1(2=-+x x 的根。

取迭代函数)1sin 3(*5.0)(2x x x --+=ϕ,精度取2101-⨯4.(选做)用牛顿法求下列方程的根: (1)02=-x e x ; (2)01=-x xe ; (3)02lg =-+x x 。

5.(选做)编写一个弦截法程序,求解题目4中的方程。

6.(选做)Matlab 函数fzero 可用于求解非线性方程的根。

例如,fzero(@(x) x^3+4*x^2-10, 1.5)可以求解题目1。

尝试用此方法求解实验中的其他题三、实验要求:1.程序要添加适当的注释,程序的书写要采用缩进格式。

2.程序要具在一定的健壮性,即当输入数据非法时,程序也能适当地做出反应,如插入删除时指定的位置不对等等。

3.程序要做到界面友好,在程序运行时用户可以根据相应的提示信息进行操作。

四、实验步骤1.按照实验内容和实验要求编写代码 2.编译并运行代码 3.检查是否发生错误五、实验源代码与实验结果实验1源代码:运行结果:实验2源代码:运行结果:实验3源代码:运行结果:4(1)的源代码:运行结果:4(2)的源代码:运行结果:4(3)的源代码:运行结果:5(3)的源代码:运行结果:六、实验心得体会通过本次实验我加深了对二分法、简单迭代法、牛顿迭代法和弦截法算法思想的了解,并对各个不同方法的优劣有了更深的理解。

数值分析实验报告模板

数值分析实验报告模板

数值分析实验报告模板篇一:数值分析实验报告(一)(完整)数值分析实验报告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. 理解数值分析实验的基本概念、方法和原理;2. 掌握数值分析实验的常用算法和技术;3. 能够独立设计并实现数值分析实验;4. 学会运用数值分析实验解决实际问题。

三、教学内容1. 数值计算的基本原理a. 数值计算的产生背景和意义b. 数值计算的误差与稳定性c. 数值计算的收敛性与有效性2. 插值与拟合实验a. 插值与拟合的基本概念b. 插值与拟合的常用方法:拉格朗日插值、牛顿插值、最小二乘拟合等c. 插值与拟合的应用场景与注意事项3. 数值微积分实验a. 数值积分与数值微分的基本概念b. 复合求积法与牛顿-科特斯公式c. 数值微分的前向、后向和中心差分法4. 数值方程求解实验a. 非线性方程求解方法:二分法、牛顿法、割线法等b. 线性方程组的求解方法:高斯消元法、LU分解法等c. 特征值与特征向量的计算方法:幂法、反幂法、QR方法等5. 数值优化实验a. 数值优化的概念与基本原理b. 单变量和多变量函数的最优化方法:割线法、黄金分割法、牛顿法等c. 优化问题的约束条件与处理方法四、实验设计与操作1. 实验设计a. 确定实验目标和内容b. 设计实验步骤和流程c. 确定实验数据和指标2. 实验操作a. 编写数值分析实验程序b. 进行实验数据的采集和处理c. 分析实验结果和进行误差评估五、实验报告1. 实验报告的基本结构a. 标题、摘要和关键词b. 引言和背景c. 实验方法和步骤d. 实验结果和分析e. 结论和展望2. 实验报告的书写要求a. 语言简洁明了,结构清晰完整b. 图表清晰,数字准确可靠c. 引用他人工作时需注明出处六、实验考核1. 实验报告:根据实验设计和实验操作的完成情况撰写实验报告,包括实验目的、过程、数据处理和分析等内容。

数值分析绪论实验报告

数值分析绪论实验报告

一、实验目的1. 了解数值分析的基本概念和主要内容;2. 掌握数值计算的基本方法,如插值、求根、数值积分等;3. 培养使用计算机进行数值计算的能力;4. 增强对数值分析在实际问题中的应用意识。

二、实验内容1. 插值法:拉格朗日插值、牛顿插值;2. 求根法:二分法、牛顿法、不动点迭代法;3. 数值积分:矩形法、梯形法、辛普森法。

三、实验步骤1. 插值法实验(1)编写拉格朗日插值程序,以x1, x2, ..., xn为节点,y1, y2, ..., yn为函数值,求插值多项式P(x)。

(2)编写牛顿插值程序,以x1, x2, ..., xn为节点,y1, y2, ..., yn为函数值,求插值多项式P(x)。

2. 求根法实验(1)编写二分法程序,求方程f(x) = 0在区间[a, b]上的根。

(2)编写牛顿法程序,求方程f(x) = 0在初始值x0附近的根。

(3)编写不动点迭代法程序,求方程f(x) = 0在初始值x0附近的根。

3. 数值积分实验(1)编写矩形法程序,求定积分∫f(x)dx在区间[a, b]上的近似值。

(2)编写梯形法程序,求定积分∫f(x)dx在区间[a, b]上的近似值。

(3)编写辛普森法程序,求定积分∫f(x)dx在区间[a, b]上的近似值。

四、实验结果与分析1. 插值法实验(1)使用拉格朗日插值法,以x1, x2, ..., xn为节点,y1, y2, ..., yn为函数值,求插值多项式P(x)。

(2)使用牛顿插值法,以x1, x2, ..., xn为节点,y1, y2, ..., yn为函数值,求插值多项式P(x)。

2. 求根法实验(1)使用二分法,求方程f(x) = 0在区间[a, b]上的根。

(2)使用牛顿法,求方程f(x) = 0在初始值x0附近的根。

(3)使用不动点迭代法,求方程f(x) = 0在初始值x0附近的根。

3. 数值积分实验(1)使用矩形法,求定积分∫f(x)dx在区间[a, b]上的近似值。

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

数值分析实验报告专业班级:_ 电气工程及其自动化1201班____姓名:_ 甘文锐____学号:_ 2012041070 17____实验日期:_ 2014/12/5 2014/12/12实验一、误差分析误差问题是数值分析的基础,又是数值分析中一个困难的课题。

在实际计算中,如果选用了不同的算法,由于舍入误差的影响,将会得到截然不同的结果。

因此,选取算法时注重分析舍入误差的影响,在实际计算中是十分重要的。

同时,由于在数值求解过程中用有限的过程代替无限的过程会产生截断误差,因此算法的好坏会影响到数值结果的精度。

一、实验目的1、通过上机编程,复习巩固以前所学程序设计语言及上机操作指令;2、通过上机计算,了解误差、绝对误差、误差界、相对误差界的有关概念;3、 通过上机计算,了解舍入误差所引起的数值不稳定性。

二、实验原理算法会存在误差,不同的算法收敛性有差别,迭代的方向,迭代的形式,都可能引起误差的区别,一个不恰当的算法可能是不稳定的。

三、实验任务对20,,2,1,0 =n ,计算定积分⎰+=15dx x x y nn .算法1:利用递推公式151--=n n y ny , 20,,2,1 =n ,取02468101214161820-10-8-6-4-22x 106⎰≈-=+=10182322.05ln 6ln 51dx x y . 程序:clc cleary=zeros(1,20); y1=0.182322; for n=1:20; y(n)=y1; y1=1/n-5*y1; endformat long plot(y)结果:y=0.182322000000000 0.0883900000000000 0.0580500000000002 0.0430833333333325 0.0345833333333374 0.0270833333333133 0.0312500000001004 -0.0133928571433591 0.191964285716796 -0.848710317472867 4.34355158736433 -21.6268488459126 108.217577562896 -541.010********* 2705.12625225922 -13525.5645946294 67627.8854731471 -338139.368542206 1690696.89826659 -8453484.43870135算法2:利用递推公式n n y n y 51511-=- 1,,19,20 =n . 注意到⎰⎰⎰=≤+≤=110202010201051515611261dx x dx x x dx x , 取 008730.0)12611051(20120≈+≈y . 程序:clc cleary=zeros(1,20); y1=0.008730; for n=20:-1:1; y(n)=y1;y1=1/(5*n)-1/5*y1; endformat long024681012141618200.010.020.030.040.050.060.070.080.09plot(y)运行结果:y = 0.0883922160302268 0.0580389198488659 0.04313873408900410.0343063295549795 0.0284683522251024 0.02432490554115460.0212326151513700 0.0188369242431499 0.01692648989536170.0153675505231918 0.0140713382931321 0.01297664186767260.0120398675847139 0.0112292335050017 0.01052049914165810.00989750429170967 0.00933600795321637 0.008875515789473680.00825400000000000 0.00873000000000000四、思考题由图,方法一是不稳定的,方法二是稳定的实验二、插值法一、实验目的1、理解插值的基本概念,掌握各种插值方法,包括拉格朗日插值和牛顿插值等,注意其不同特点;2、通过实验进一步理解并掌握各种插值的基本算法。

二、实验原理拉格朗日插值:011011(x x)...(x x)(x x)...(x x)(x),0,1,2,....(x x)...(x x)(x x)...(x x)(x)(x)k k nkk k k k k k nnn k kkl k n L y l-+-+=----==----=∑牛顿插值:00100102101201 (x)f(x)(x)P(x)f[x,x](x x)(x)(x)[x x x](x x)(x x) PPP P f==+-=+++--三、实验任务1.已知函数表ix 0.56160 0.56280 0.56401 0.56521iy 0.82741 0.82659 0.82577 0.82495 用二次拉格朗日插值多项式求5635.0=x时的函数近似值。

程序:function [y,R]=lagranzi(X,Y,x,M)n=length(X); m=length(x);for i=1:mz=x(i);s=0.0;for k=1:np=1.0; q1=1.0; c1=1.0;for j=1:nif j~=kp=p*(z-X(j))/(X(k)-X(j));endq1=abs(q1*(z-X(j)));c1=c1*j;ends=p*Y(k)+s;end y(i)=s; endR=M*q1/c1; Clc clearx=0.5635; M=1; X=[0.56160,0.56280,0.56521];Y=[0.82741,0.82659,0.82577]; [y,R]=lagranzi(X,Y,x,M)结果:y =0.8262R =3.7905e-0102.已知函数表i x 0.4 0.55 0.65 0.8 0.9 i y 0.41075 0.57815 0.69675 0.88811 1.02652 用牛顿插值多项式求)596.0(3N 和)895.0(4N 。

程序:function [y,R]= newcz(X,Y,x,M) n=length(X); m=length(x); for t=1:mz=x(t); A=zeros(n,n);A(:,1)=Y'; s=0.0; p=1.0; q1=1.0; c1=1.0; for j=2:nfor i=j:nA(i,j)=(A(i,j-1)-A(i-1,j-1))/(X(i)-X(i-j+1)); endq1=abs(q1*(z-X(j-1)));c1=c1*j; endC=A(n,n);q1=abs(q1*(z-X(n))); for k=(n-1):-1:1C=conv(C,poly(X(k)));d=length(C); C(d)=C(d)+A(k,k); endy(k)= polyval(C, z); endR=M*q1/c1;x=0.596;M=1; X=[0.4,0.55,0.65,0.8];Y=[0.41075,0.57815,0.69675,0.88811]; [y,R]= newcz(X,Y,x,M)结果:y =0.6319R =4.1383e-006程序:x=0.895;M=1; X=[0.4 0.55 0.65 0.8 0.9];Y=[0.41075 0.57815 0.69675 0.88811 1.02652]; [y,R]= newcz(X,Y,x,M) 结果:y =1.0194R =1.6562e-007四、思考题1、插值多项式唯一存在说明n个节点所确定的n阶多项式是唯一的,也就是n阶多项式对n个节点具有唯一解。

说明这n阶插值多项式经过这n个节点2、多项式差值构造有多种方法,如拉格朗日插值,牛顿插值,分段插值等。

表示截断误差用插值余项3、在整个插值区间上,随着插值节点的增多,插值多项式的次数必然增高,而高次插值会产生Runge现象,不能有效的逼近被插函数实验三、解线性方程组的直接法一、实验目的1、了解求线性方程组的直接法的有关理论和方法;2、会编制列主元消去法、LU 分解法的程序;3、 通过实际计算,进一步了解各种方法的优缺点,选择合适的数值方法。

二、实验原理列主元消去法:列主元素消去法是为控制舍入误差而提出来的一种算法,在Gauss 消去法的消元过程中,若出现a=0,则消元无法进行,即使其不为0,但很小,把它作为除数,就会导致其他元素量级的巨大增长和舍入误差的扩散,最后使计算结果不可靠.使用列主元素消去法计算,基本上能控制舍入误差的影响,并且选主元素比较方便.矩阵直接三角分解法:在线性代数中, LU 分解(LU Decomposition)是矩阵分解的一种,可以将一个矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积(有时是它们和一个置换矩阵的乘积)。

LU 分解主要应用在数值分析中,用来解线性方程、求反矩阵或计算行列式。

三、实验任务1.用列主元高斯消去法求解方程组⎪⎩⎪⎨⎧=++-=++-=++035.3643.5072.1835.2137.2623.4712.3347.1183.1555.3304.2101.0321321321x x x x x x x x x . 程序: 主函数:function [RA,RB,n,X]=gaus(A,b) B=[A b]; n=length(b); RA=rank(A); RB=rank(B);zhica=RB-RA; if zhica>0,disp('请注意:因为RA~=RB ,所以此方程组无解.')return endif RA==RB if RA==ndisp('请注意:因为RA=RB=n ,所以此方程组有唯一解.') X=zeros(n,1); C=zeros(1,n+1); for p= 1:n-1 for k=p+1:nm= B(k,p)/ B(p,p);B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1); end endb=B(1:n,n+1);A=B(1:n,1:n); X(n)=b(n)/A(n,n); for q=n-1:-1:1X(q)=(b(q)-sum(A(q,q+1:n)*X(q+1:n)))/A(q,q); end elsedisp('请注意:因为RA=RB<n ,所以此方程组有无穷多解.') end end程序:clc clear format longA=[0.101 2.304 3.555;-1.347 3.712 4.623;-2.835 1.072 5.643]; B=[1.183;2.137;3.035]; [RA,RB,n,X]=liezhu(A,B)运行结果:RA = 3 RB = 3 n =3X = -0.398233768741719 0.013795065997272 0.3351442415148242、用矩阵直接三角分解法求解方程组b Ax =,其中⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-----=381265973274581221A , ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=4911427b . 程序:function X=LUjfcz(A,b)[n,n] =size(A); X=zeros(n,1);Y=zeros(n,1);C=zeros(1,n);r=1:n;for p=1:n-1[max1,j]=max(abs(A(p:n,p)));C=A(p,:);A(p,:)= A(j+p-1,:);A(j+p-1,:)=C;g=r(p);r(p)= r(j+p-1);r(j+p-1)=g;if A(p,p)==0disp('A是奇异阵,方程组无唯一解');break;endfor k=p+1:nH= A(k,p)/A(p,p);A(k,p) = H;A(k,p+1:n)=A(k,p+1:n)- H* A(p,p+1:n);endendY(1)=b(r(1));for k=2:nY(k)= b(r(k))- A(k,1:k-1)* Y(1:k-1);endX(n)= Y(n)/ A(n,n);for i=n-1:-1:1X(i)= (Y(i)- A(i, i+1:n) * X (i+1:n))/ A(i,i); EndEnd程序:clcclearA=[1 2 -12 8;5 4 7 -2;-3 7 9 5;6 -12 -8 3];B=[27;4;11;49];x=LUjfcz(A,B)运行结果:X=-0.3982337687417190.0137950659972720.335144241514824四、思考题1、高斯消去法就是将一般线性方程变换为上三角方程组求解的方法2、三角分解法有:直接三角分解法,平方根法,追赶法实验四、解线性方程组的迭代法一、实验目的1、熟悉迭代法的有关理论和方法;2、会编制雅可比迭代法、高斯-塞德尔迭代法的程序;3、注意所用方法的收敛性及其收敛速度问题。

相关文档
最新文档