数值计算方法实验报告

合集下载

数值计算方法实验报告

数值计算方法实验报告

数值计算方法实验报告一、实验介绍本次实验是关于数值计算方法的实验,旨在通过计算机模拟的方法,实现对于数值计算方法的掌握。

本次实验主要涉及到的内容包括数值微积分、线性方程组的求解、插值与拟合、常微分方程的数值解等。

二、实验内容1. 数值微积分数值微积分是通过计算机模拟的方法,实现对于微积分中的积分运算的近似求解。

本次实验中,我们将会使用梯形公式和辛普森公式对于一定区间上的函数进行积分求解,并比较不同公式的计算误差。

2. 线性方程组的求解线性方程组求解是数值计算领域中的重要内容。

本次实验中,我们将会使用高斯消元法、LU分解法等方法对于给定的线性方程组进行求解,并通过比较不同方法的计算效率和精度,进一步了解不同方法的优缺点。

3. 插值与拟合插值与拟合是数值计算中的另一个重要内容。

本次实验中,我们将会使用拉格朗日插值法和牛顿插值法对于给定的数据进行插值求解,并使用最小二乘法对于给定的函数进行拟合求解。

4. 常微分方程的数值解常微分方程的数值解是数值计算中的难点之一。

本次实验中,我们将会使用欧拉法和龙格-库塔法等方法对于给定的常微分方程进行数值解的求解,并比较不同方法的计算精度和效率。

三、实验结果通过本次实验,我们进一步加深了对于数值计算方法的理解和掌握。

在数值微积分方面,我们发现梯形公式和辛普森公式都能够有效地求解积分,但是辛普森公式的计算精度更高。

在线性方程组求解方面,我们发现LU分解法相对于高斯消元法具有更高的计算效率和更好的数值精度。

在插值与拟合方面,我们发现拉格朗日插值法和牛顿插值法都能够有效地进行插值求解,而最小二乘法则可以更好地进行函数拟合求解。

在常微分方程的数值解方面,我们发现欧拉法和龙格-库塔法都能够有效地进行数值解的求解,但是龙格-库塔法的数值精度更高。

四、实验总结本次实验通过对于数值计算方法的模拟实现,进一步加深了我们对于数值计算方法的理解和掌握。

在实验过程中,我们了解了数值微积分、线性方程组的求解、插值与拟合、常微分方程的数值解等多个方面的内容,在实践中进一步明确了不同方法的特点和优缺点,并可以通过比较不同方法的计算效率和数值精度来选择合适的数值计算方法。

数值计算方法上机实验报告

数值计算方法上机实验报告

数值计算方法上机实验报告
一、实验目的
本次实验的主要目的是熟悉和掌握数值计算方法,学习梯度下降法的
原理和实际应用,熟悉Python语言的编程基础知识,掌握Python语言的
基本语法。

二、设计思路
本次实验主要使用的python语言,利用python下的numpy,matplotlib这两个工具,来实现数值计算和可视化的任务。

1. 首先了解numpy的基本使用方法,学习numpy的矩阵操作,以及numpy提供的常见算法,如矩阵分解、特征值分解等。

2. 在了解numpy的基本操作后,可以学习matplotlib库中的可视化
技术,掌握如何将生成的数据以图表的形式展示出来。

3. 接下来就是要学习梯度下降法,首先了解梯度下降法的主要原理,以及具体的实际应用,用python实现梯度下降法给出的算法框架,最终
可以达到所期望的优化结果。

三、实验步骤
1. 熟悉Python语言的基本语法。

首先是熟悉Python语言的基本语法,学习如何使用Python实现变量
定义,控制语句,函数定义,类使用,以及面向对象编程的基本概念。

2. 学习numpy库的使用方法。

其次是学习numpy库的使用方法,学习如何使用numpy库构建矩阵,学习numpy库的向量,矩阵操作,以及numpy库提供的常见算法,如矩阵分解,特征值分解等。

3. 学习matplotlib库的使用方法。

数值计算方法实验报告

数值计算方法实验报告

数值分析实验报告实验一、解线性方程组的直接方法——梯形电阻电路问题利用追赶法求解三对角方程组的方法,解决梯形电阻电路问题:电路中的各个电流{1i ,2i ,…,8i }须满足下列线性方程组:R V i i =- 22 210 252321=-+-i i i 0 252 432=-+-i i i 0 252 543=-+-i i i 0 252 654=-+-i i i 0 252 765=-+-i i i 0 252 876=-+-i i i 052 87=+-i i设V 220=V ,Ω=27R ,运用追赶法,求各段电路的电流量。

问题分析:上述方程组可用矩阵表示为:⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡--------------00000001481.8522520000002520000002520000002520000002520000002520000002287654321i i i i i i i i问题转化为求解A x b =,8阶方阵A 满足顺序主子式(1,2...7)0i A i =≠,因此矩阵A存在唯一的Doolittle 分解,可以采用解三对角矩阵的追赶法!追赶法a=[0 -2 -2 -2 -2 -2 -2 -2]; b=[2 5 5 5 5 5 5 5];c=[-2 -2 -2 -2 -2 -2 -2 0]; d=[220/27 0 0 0 0 0 0 0];Matlab 程序function x= zhuiganfa( a,b,c,d )%追赶法实现要求:|b1|>|C1|>0,|bi|>=|ai|+|ci| n=length(b); u=ones(1,n); L=ones(1,n); y=ones(1,n); u(1)=b(1); y(1)=d(1); for i=2:nL(i)=a(i)/u(i-1);u(i)=b(i)-c(i-1)*L(i); y(i)=d(i)-y(i-1)*L(i); endx(n)=y(n)/u(n); for k=n-1:-1:1x(k)=(y(k)-c(k)*x(k+1))/u(k); end endMATLAB 命令窗口输入:a=[0 -2 -2 -2 -2 -2 -2 -2]; b=[2 5 5 5 5 5 5 5];c=[-2 -2 -2 -2 -2 -2 -2 0] d=[220/27 0 0 0 0 0 0 0];x= zhuiganfa(a,b,c,d )运行结果为:x =8.1478 4.0737 2.0365 1.0175 0.5073 0.2506 0.1194 0.0477存在问题根据电路分析中的所讲到的回路电流法,可以列出8个以回路电流为独立变量的方程,课本上给出的第八个回路电流方程存在问题,正确的应该是78240i i -+=;或者可以根据电路并联分流的知识,同样可以确定78240i i -+=。

《数值计算方法》上机实验报告

《数值计算方法》上机实验报告

《数值计算方法》上机实验报告华北电力大学实验名称数值il•算方法》上机实验课程名称数值计算方法专业班级:电力实08学生姓名:李超然学号:200801001008 成绩: 指导教师:郝育黔老师实验日期:2010年04月华北电力大学实验报告数值计算方法上机实验报吿一.各算法的算法原理及计算机程序框图1、牛顿法求解非线性方程*对于非线性方程,若已知根的一个近似值,将在处展开成一阶xxfx ()0, fx ()xkk泰勒公式"f 0 / 2 八八,fxfxfxxxxx 0 0 0 0 0 kkkk2!忽略高次项,有,fxfxfxxx 0 ()()(),,, kkk右端是直线方程,用这个直线方程来近似非线性方程。

将非线性方程的**根代入,即fx ()0, X ,* fxfxxx 0 0 0 0, ,, kkkfx 0 fx 0 0,解出fX 0 *k XX,, k' fx 0 k水将右端取为,则是比更接近于的近似值,即xxxxk, Ik, Ikfx ()k 八XX, Ikk* fx()k这就是牛顿迭代公式。

,2,计算机程序框图:,见,,3,输入变量、输出变量说明:X输入变量:迭代初值,迭代精度,迭代最大次数,\0输出变量:当前迭代次数,当前迭代值xkl,4,具体算例及求解结果:2/16华北电力大学实验报吿开始读入l>k/fx()0?,0fx 0 Oxx,,01* fx ()0XX,,,?10kk, ,1,kN, ?xx, 10输出迭代输出X输出奇异标志1失败标志,3,输入变量、输出变量说明: 结束例:导出计算的牛顿迭代公式,并il •算。

(课本P39例2-16) 115cc (0), 求解结果:10. 75000010.72383710. 72380510. 7238052、列主元素消去法求解线性方程组,1,算法原理:高斯消去法是利用现行方程组初等变换中的一种变换,即用一个不为零的数乘 -个 方程后加只另一个方程,使方程组变成同解的上三角方程组,然后再自下而上 对上三角3/16华北电力大学实验报告方程组求解。

数值计算基础实验报告(3篇)

数值计算基础实验报告(3篇)

第1篇一、实验目的1. 理解数值计算的基本概念和常用算法;2. 掌握Python编程语言进行数值计算的基本操作;3. 熟悉科学计算库NumPy和SciPy的使用;4. 分析算法的数值稳定性和误差分析。

二、实验内容1. 实验环境操作系统:Windows 10编程语言:Python 3.8科学计算库:NumPy 1.19.2,SciPy 1.5.02. 实验步骤(1)Python编程基础1)变量与数据类型2)运算符与表达式3)控制流4)函数与模块(2)NumPy库1)数组的创建与操作2)数组运算3)矩阵运算(3)SciPy库1)求解线性方程组2)插值与拟合3)数值积分(4)误差分析1)舍入误差2)截断误差3)数值稳定性三、实验结果与分析1. 实验一:Python编程基础(1)变量与数据类型通过实验,掌握了Python中变量与数据类型的定义方法,包括整数、浮点数、字符串、列表、元组、字典和集合等。

(2)运算符与表达式实验验证了Python中的算术运算、关系运算、逻辑运算等运算符,并学习了如何使用表达式进行计算。

(3)控制流实验学习了if-else、for、while等控制流语句,掌握了条件判断、循环控制等编程技巧。

(4)函数与模块实验介绍了Python中函数的定义、调用、参数传递和返回值,并学习了如何使用模块进行代码复用。

2. 实验二:NumPy库(1)数组的创建与操作通过实验,掌握了NumPy数组的基本操作,包括创建数组、索引、切片、排序等。

(2)数组运算实验验证了NumPy数组在数学运算方面的优势,包括加、减、乘、除、幂运算等。

(3)矩阵运算实验学习了NumPy中矩阵的创建、操作和运算,包括矩阵乘法、求逆、行列式等。

3. 实验三:SciPy库(1)求解线性方程组实验使用了SciPy库中的线性代数模块,通过高斯消元法、LU分解等方法求解线性方程组。

(2)插值与拟合实验使用了SciPy库中的插值和拟合模块,实现了对数据的插值和拟合,并分析了拟合效果。

数值计算方法实验报告

数值计算方法实验报告

数值计算方法实验报告实验目的:通过实验验证不同数值计算方法在求解数学问题时的精度和效率,并分析其优缺点。

实验原理:实验内容:本实验选取了三个典型的数值计算问题,并分别采用了二分法、牛顿迭代法和梯度下降法进行求解。

具体问题和求解方法如下:1. 问题一:求解方程sin(x)=0的解。

-二分法:利用函数值的符号变化将解空间不断缩小,直到找到满足精度要求的解。

-牛顿迭代法:通过使用函数的斜率来逼近方程的解,并不断逼近真实解。

-梯度下降法:将方程转化为一个极小化问题,并利用梯度下降的方式逼近极小值点,进而找到方程的解。

2.问题二:求解函数f(x)=x^2-3x+2的极小值点。

-二分法:通过确定函数在一个区间内的变化趋势,将极小值所在的区间不断缩小,从而找到极小值点。

-牛顿迭代法:通过使用函数的导数和二阶导数来逼近极小值点,并不断逼近真实解。

-梯度下降法:将函数转化为一个极小化问题,并利用梯度下降的方式逼近极小值点,进而找到函数的极小值点。

3. 问题三:求解微分方程dy/dx = -0.1*y的解。

-二分法:通过离散化微分方程,将微分方程转化为一个差分方程,然后通过迭代计算不同点的函数值,从而得到函数的近似解。

-牛顿迭代法:将微分方程转化为一个积分方程,并通过迭代计算得到不同点的函数值,从而得到函数的近似解。

-梯度下降法:将微分方程转化为一个极小化问题,并利用梯度下降的方式逼近极小值点,从而得到函数的近似解。

实验步骤:1.编写代码实现各个数值计算方法的求解过程。

2.对每个数值计算问题,设置合适的初始值和终止条件。

3.运行程序,记录求解过程中的迭代次数和每次迭代的结果。

4.比较不同数值计算方法的精度和效率,并分析其优缺点。

实验结果:经过实验测试,得到了如下结果:-问题一的二分法迭代次数为10次,求解结果为x=0;牛顿迭代法迭代次数为4次,求解结果为x=0;梯度下降法迭代次数为6次,求解结果为x=0。

-问题二的二分法迭代次数为10次,求解结果为x=1;牛顿迭代法迭代次数为3次,求解结果为x=1;梯度下降法迭代次数为4次,求解结果为x=1-问题三的二分法迭代次数为100次,求解结果为y=e^(-0.1x);牛顿迭代法迭代次数为5次,求解结果为y=e^(-0.1x);梯度下降法迭代次数为10次,求解结果为y=e^(-0.1x)。

数值计算方法 实验报告4

数值计算方法  实验报告4

实验四 数值微积分实验学院:数学与计算机科学学院 专业:数学与应用数学 学号: 姓名:一. 实验目的1 利用复化求积公式计算定积分,并比较误差;2 比较一阶导数和二阶导数的数值方法,并绘图观察特点.二. 实验题目用复化梯形公式、复化辛普森公式、龙贝格公式求下列定积分,要求绝对误差为8105.0-⨯=ε,并将计算结果与精度解进行比较:⑴dx e x e x2321432⎰= ⑵dx x x ⎰-=322326ln .利用等距节点的函数值和端点的导数值,用不同的方法求下列函数的一阶和二阶导数,分析各种方法的有效性,并用绘图软件绘出函数的图形,观察其特点. ⑴35611201x x y -=,[]2,0∈x ⑵xey 1-=,[]5.0,5.2--∈x三. 实验原理1 复化梯形公式将积分区间[]b a ,剖分为n 等分,分点为)2,1,0( =+=k kh a x k ,其中n a b h /)(-=.在每个区间[]1,+k k x x 上用梯形公式,则有 ()()dx x fdxx fn k x xba k k∑⎰=⎰-=+11()()[][]∑⎭⎬⎫⎩⎨⎧++-=-=++1112n k k k kkk f R x f x f x x()()[][]f R x f x f h n k k n k k k ∑+∑+=-=-=+1112.记()()[]()()()[]∑++=∑+=-=-=+111222n k kn k k knx f b f a f hx f x f h T .2 复化辛普森公式 将积分区间[]b a ,剖分为n 等分,分点为)2,1,0( =+=k kh a xk,其中n a b h /)(-=.记区间[]1,+k k x x 的中点为21+k x ,在每个区间[]1,+k k x x 上用辛普森公式,则得到所谓的复化辛普森公式:()()⎥⎦⎤⎢⎣⎡+⎪⎭⎫⎝⎛+∑-=++-=+1211146k k kn k k k n xfx f x f x x S ,即()()()⎥⎦⎤⎢⎣⎡∑⎪⎭⎫ ⎝⎛+∑++=-=+-=1211426n k k n k knx f x fb f a f h S .3 龙贝格公式的算法步骤为: I.输入b a ,及精度ε; II.置,a b h -=()()()b f a f h T+=211;III. 置2,1,1===n j i ,对分区间[]b a ,,并计算111,+++i j i j T T :∑⎪⎭⎫ ⎝⎛+==-+nk k ii x f hT T 121111221,144111--=+++jijj jj i j T T T ;IV.若不满足终止条件,做循环:n n h h i i 2:,2/:,1:==+=, 计算∑⎪⎭⎫ ⎝⎛+==-+nk k ii x f hT T121111221, 对,,,1i j =计算:144111--=+++jijj jj i j T T T .4 向前差商公式:()()()ha f h a f a f -+≈';向后差商公式:()()()h h a f a f a f --≈';中心差商公式:()()()hh a f h a f a f 2--+≈';二阶导数公式:()()()()22hh a f a f h a f a f ++--≈''.四. 实验内容 实验一第一小题:对于方程dx e x e x2321432⎰=,利用程序shiyan1_01.m内容如下:%第一个函数的实验 clear clcfun=inline('(2/3)*x.^3.*exp(x.^2)'); S1=matrap(fun,1,2,170000); S2=masimp(fun,1,2,250); S3=maromb(fun,1,2,.5e-8); s=exp(4); Er1=abs(S1-s) Er2=abs(S2-s) Er3=abs(S3-s)第二小题:对于方程dx x x ⎰-=322326ln ,利用程序shiyan1_02.m内容如下:%第二个函数的实验 clearclcfun=inline('2*x./(x.^2-3)'); S1=matrap(fun,2,3,15000); S2=masimp(fun,2,3,100); S3=maromb(fun,2,3,.5e-8); s=log(6); Er1=abs(S1-s) Er2=abs(S2-s) Er3=abs(S3-s)实验二第一小题:对于方程35611201x x y -=,[]2,0∈x ,利用程序shiyan2_01.m内容如下:clear clcfun=inline('x.^5/20-(11./6)*x.^3'); dfun=inline('x.^4/4-(11./2)*x.^2'); ddfun=inline('x.^3-11*x'); n=8;h=2/n;x=0:h:2;x1=x(2:n); y=feval(fun,x); dy=feval(dfun,x1); ddy=feval(ddfun,x1); for i=2:ndy1(i)=(y(i+1)-y(i))/h; dy2(i)=(y(i)-y(i-1))/h;dy3(i)=(y(i+1)-y(i-1))/(2*h);ddy1(i)=(y(i+1)-2*y(i)+y(i-1))/(h*h); endfor i=1:n-1err1(i)=abs(dy1(i)-dy(i)); err2(i)=abs(dy2(i)-dy(i)); err3(i)=abs(dy3(i)-dy(i));errd2(i)=abs(ddy1(i)-ddy(i)); end[err1' err2' err3' errd2'] plot(x,y,'r')hold onplot(x1,dy,'y') plot(x1,ddy,'k')第二小题:对于方程xey 1-=,[]5.0,5.2--∈x ,利用程序shiyan2_02.m内容如下:clear clcfun=inline('exp(-1./x)');dfun=inline('(-1./x).*exp(-1./x)');ddfun=inline('(-1./(x.^2)).*exp(-1./x)+1./(x.^2)'); n=8;h=2/n;x=-2.5:h:-0.5;x1=x(2:n); y=feval(fun,x); dy=feval(dfun,x1); ddy=feval(ddfun,x1); for i=2:ndy1(i)=(y(i+1)-y(i))/h; dy2(i)=(y(i)-y(i-1))/h; dy3(i)=(y(i+1)-y(i-1))/(2*h);ddy1(i)=(y(i+1)-2*y(i)+y(i-1))/(h*h); endfor i=1:n-1err1(i)=abs(dy1(i)-dy(i)); err2(i)=abs(dy2(i)-dy(i)); err3(i)=abs(dy3(i)-dy(i)); errd2(i)=abs(ddy1(i)-ddy(i)); end[err1' err2' err3' errd2'] plot(x,y,'r')hold onplot(x1,dy,'y')plot(x1,ddy,'')五.实验结果实验一第一小题T =146.5012 0 0 0 0 0 0 083.9243 63.0653 0 0 0 0 0 062.6132 55.5095 55.0058 0 0 0 0 056.6535 54.6669 54.6108 54.6045 0 0 0 055.1154 54.6027 54.5984 54.5982 54.5982 0 0 054.7277 54.5984 54.5982 54.5982 54.5982 54.5982 0 054.6305 54.5982 54.5982 54.5982 54.5982 54.5982 54.5982 0 54.6062 54.5982 54.5982 54.5982 54.5982 54.5982 54.5982 54.5982Er1 =4.5922e-009Er2 =4.8409e-009Er3 =1.4211e-014第二小题T =2.5000 0 0 0 0 0 0 0 2.0192 1.8590 0 0 0 0 0 0 1.8564 1.8022 1.7984 0 0 0 0 0 1.8088 1.7929 1.7922 1.7921 0 0 0 0 1.7961 1.7918 1.7918 1.7918 1.7918 0 0 0 1.7928 1.7918 1.7918 1.7918 1.7918 1.7918 0 0 1.7920 1.7918 1.7918 1.7918 1.7918 1.7918 1.7918 0 1.7918 1.7918 1.7918 1.7918 1.7918 1.7918 1.7918 1.7918Er1 =4.9383e-009Er2 =4.0302e-009Er3 =1.0132e-012实验二第一小题ans =0.2196 0.2196 0.2196 2.1920 0.3627 0.8003 0.5815 2.1480 0.5711 1.4367 1.0039 2.0560 0.7667 2.0411 1.4039 1.91600.9447 2.5991 1.7719 1.72801.1003 3.09632.0983 1.4920 1.22873.5183 2.3735 1.2080 1.3251 3.8507 2.5879 0.87601.3847 4.07912.7319 0.4960第二小题ans =0.6932 0.6932 0.6932 0.1105 0.4680 0.5532 0.5106 0.5030 0.5236 0.6555 0.5895 0.7793 0.5907 0.8102 0.7005 1.2991 0.6692 1.0727 0.8709 2.3982 0.7473 1.6071 1.1772 5.15720.7567 3.0873 1.9220 14.2888六.实验结果分析1.利用复化辛普森公式比利用复化梯形公式,所取的n更小,当达到相同精度时,利用辛普森公式等分次数n更小,减少计算次数.2.若利用同一公式,所取n的大小与题设给出的精度ε之间的关系:当n越大时,与精度ε之间的误差越小;反之,当n越小时,与精度ε之间的误差越大。

《数值计算方法》试验报告册

《数值计算方法》试验报告册

《数值计算方法》实验报告册
姓名:
学号:
班级:
教师:
安徽农业大学理学院
应用数学系
学年第学期
目录
目录 (i)
实验报告范例 (1)
实验一 (5)
实验二 (7)
实验三 (12)
实验四 (15)
实验五 (17)
实验六 (19)
实验报告范例
说明:
1、具体实验题目与实验内容可自行根据实验指导书自行拟定;
2、报告填写用“宋体”(小四)格式字体;
3、实验报告完成后,以学生的“实验序号+姓名+学号”作为该word文件名保存,例
如“张三”学号为“08119000”,则本次实验报告的保存文件名为:“实验X 08119000 张三.doc”;
4、在规定的时间内,学生将本报告通过电子邮件提交给授课教师,邮件的主题为:实
验X 08119000 张三。

5、算法编程语言可自选,程序代码可直接复制于实验报告附表八中,也可将可执行文件
连同将实验报告压缩为rar格式文件一同提交。

实验一
实验二
2
31
21n n -00⎥⎥⎥
⎥⎦
1
2
11
2⎥⎥⎥⎥⎦ ,55⎥⎥-⎥
⎥-⎦
111134
22
4111⎥⎥⎥--
--⎥⎥⎥
实验三
实验四
实验五
实验六。

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

本科实验报告
课程名称:数值计算方法
实验地点:计算机科学与技术学院506 专业班级:学号:
学生姓名:
指导教师:**
年月日
太原理工大学学生实验报告
}
printf("%f\n",c);
}
五、实验结果与分析
二分法割线法
分析:
使用二分法和割线法均能计算出方程的根,但利用割线法要比二分法计算的次数少,并且能够较早的达到精度要求。

并且割线法程序代码量较少,精简明了。

六、讨论、心得
本次数值计算方法程序设计实验是在不断的习题练习中跳脱出来,直接面对实用性较强的程序代码编写。

效果很好,不仅加深对二分法、割线法的理解,还加强了实际用运能力。

将理论成功地转化成实践结果。

实验地点北区多学科综合楼4506指导教师王峥
太原理工大学学生实验报告
x[i] = y[i];
for(j=i+1;j<=n;++j)
{
x[i]-=u[i][j]*x[j];
}
x[i]/= u[i][i];
}
for(i=1;i<=n;++i)
{
printf("%0.2lf\n",x[i]);
}
return 0;
}
五、实验结果与分析
完全主元素消元法:
列主元素消元法:
LU分解法:
分析:
对于两种高斯解方程,完全主元素跟列主元素都是先消元、再回代,由程序段可以发现,始终消去对角线下方的元素。

即,为了节约内存及时效,可以不必计算出主元素下方数据。

列主元素消元法的算法设计上优于完全主元素消元法,它只需依次按列选主元素然后换行使之变到主元素位置,再进行消元即可。

列主元素消元法的耗时比完全主元素法少很多,常采用之。

对于LU分解法,分解矩阵为单位下三角阵L与上三角阵U的乘积,然后解方程组Ly=b,回代,解方程组Ux=y。

其中的L为n阶单位下三角阵、U为上三角阵.
六、讨论、心得
本次试验中,感觉是最难的一次,完全主元素消元法程序编写过程相对来说花了好长时间。

纠正各种语法、算法、思路错误。

最后勉强成功,但还是有几处警告,不得解决之法。

感到程序学习的不足,再加之对高斯的不甚了解。

编写过程很是痛苦。

查阅各种内外部资料,这点有利有弊。

突然觉得,应该再把数据结构之类的重新学习一下才行。

以后多花时间在编程吧,重在理解。

必须反省一下自己的C、C++学习了,还是得多加练习,平时养成好的算法思路,免得再次不知所措。

实验地点北区多学科综合楼4506指导教师王峥
太原理工大学学生实验报告
学院名称计算机科学与技术专业班级学号
学生姓名实验日期成绩
课程名称数值计算方法实验题目实验三线性方程组的迭代解法一、实验目的和要求
使用雅可比迭代法或高斯-赛德尔迭代法对下列方程组进行求解。

二、主要设备
PC,Windows操作系统,VC++6.0编程平台;
三、实验内容和原理
设线性方程组 A x=b
的系数矩阵A可逆,且主对角元素a11,a22,…,a nn均不为零,令
D=diag(a11,a22,…,a nn)
并将A分解成 A=(A-D)+D
从而线性方程组可写成 D x=(D-A)x+b
则有迭代公式
x(k+1)=B1x(k)+f1
其中,B1=I-D-1A,f1=D-1b。

各自详细流程图如下所示:
雅克比迭代:
分析:
使用高斯-赛德尔和雅克比迭代都可以求出方程组的解,但是利用高斯-赛德尔迭代法所需的迭代次数比雅克比迭代少,能够更早的达到精度要求。

从程序中可以看出,雅克比定义的sum只有一个,而高斯赛德尔需要两个。

时效性上后者要好些。

六、讨论、心得
这次试验算是比较成功,要归功于授课时候的认真听讲。

程序编写之前,对书本的理论知识进行了进一步的探索。

预习准备工作很彻底,自然随后的一切也都很顺利。

好好学习,好好编程,好好思考。

希望,有所成。

实验地点北区多学科综合楼4506指导教师王峥
太原理工大学学生实验报告
if(k==1)
r1=maxvalue(V,N);
else
r2=maxvalue(V,N);
if(fabs(r2-r1)<eps)break;
r1=r2;
}
printf("迭代次数:\t%d\n",k);
printf("矩阵的特征值:\t%f\n",r2);
printf("(");
for(i=0;i<N;i++)
printf("%f\t",U[i]);
printf(")\n");
}
int main()
{
float A[N][N]={{2,-1,0},{-1,2,-1},{0,-1,2}} ;
matrix(A[0]);
}
五、实验结果与分析
分析:
幂方法求解矩阵的最大特征值以及特征向量,最大优点是计算简单,容易在计算机上实现,对稀疏矩阵较为适合。

但有时收敛速度很慢。

六、讨论、心得
程序编写时详细分析了书上的求解过程,但最终结果还是有所出入。

课本的迭代次数只用7次,而程序运行之后显示为12次。

不明白那里原因。

推测是由于精确位数的不同导致。

最后在程序中更改了一下,验证得之。

知识转化为“所见即所得”,效果不错。

可以多多练习,提高编程能力。

实验地点北区多学科综合楼4506指导教师王峥
太原理工大学学生实验报告
scanf("%f",&y[i]);
printf("\n");
}
printf("\n");
difference(x,(float *)y,n);
printf("请输入插值xx:");
scanf("%f",&xx);
yy=y[20];
for(i=n-1;i>=0;i--)
yy=yy*(xx-x[i])+y[i];
printf("\n近似值为:(%f)=%f\n",xx,yy);
}
五、实验结果与分析
分析:
拉格朗日插值的优点是插值多项式特别容易建立,缺点是增加节点是原有多项式不能利用,必须重新建立,即所有基函数都要重新计算,这就造成
计算量的浪费。

六、讨论、心得
本实验有两种插值方法可以选用,由于时间关系,最终选用牛顿插值法。

若是下去有时间的话,可以再用拉格朗日插值法验证一番。

既能增加编程的锻炼能力,还能进一步巩固一下所学知识。

实验地点北区多学科综合楼4506指导教师王峥
太原理工大学学生实验报告
{
double t=x[1]+x[2]*X[i]-Y[i];
m=m+power(t,2);
}
cout<<m<<endl;
}
五、实验结果与分析
分析:
数据拟合的具体作法是:对给定的数据(x i ,y i)(i=0,1,…,m),在取定的函
数类中,求p(x)属于此函数类,使误差r
i =p(x
i
)- y
i
(i=0,1,…,m)的平方和最小,

∑r i2=∑(∑p(x i)-y i)2=min
从几何意义上讲,就是寻求与给定点(x i,y i)(i=0,1,…,m)的距离平方和为最小的曲线y=p(x)。

七、讨论、心得
本次实验设计,很好地实现了最小二乘法的程序模拟。

对程序编写又更进一步,分析算法、尝试编写。

检查并修改其中错误。

感觉收获很大。

特别是对平方误差的计算模块,一次成功。

最后还对程序进行优化,删去冗余以及标准化模块。

很好,坚持下去便是。

作为数值计算方法课程实验的最后一次程序实践,能坚持下来,值得肯定。

同时也是对课本理论知识的复习和巩固,为期末考试而准备。

觉得有必要形成一种思维习惯,即程序编写的潜移默化于生活学习之中。

实验地点北区多学科综合楼4506指导教师王峥。

相关文档
最新文档