计算方法算法的数值稳定性实验报告

合集下载

数值算法的稳定性

数值算法的稳定性

用上式计算 Im 可使计算的误差减少5倍,因而它对 应的算法是数值稳定的算法。
线性代数一④
有递推公式
In

5In1

1 n
(n
1,2,...)
15/32
在该例中,用上述公式计算积分的值,I0=ln6-ln5
≈0.182322的舍入误差在计算过程迅速传播,每次扩大 5倍,致使I12= -0.32902110×10-2 严重失真,所以这一 公式是不稳定的。
n
I9n/32
5 0.0284684
4 0.0343063
3 0.0431387
2 0.0580389
1 0.0883922
最后得: I0=0.182322
与我们开始计算的I0≈0.182322是一样的
该公式给 出的算法
I n1


1 5
In

1 5n
(n

m,
m
1,...,2,1)
就是稳定 的
11
就是稳定
In1 5 In 5n (n m, m 1,...,2,1) 的
线性代数一④
五、简化计算步骤,减小运算次数,避免误差积累18/32
简化计算步骤是提高程序执行速度的关键,它不仅可以节省 时间,还能减少舍入误差。
例6:计算9255的值 若逐个相乘要用254次乘法, 9255 = 9•9•9•……•9
≈0.182322的舍入误差在计算过程迅速传播,每次扩大 5倍,致使I12= -0.32902110×10-2 严重失真,所以这一 公式是不稳定的。
线性代数一④
7/32
n
In
n
In
n
In
n

高斯消去法的数值稳定性实验报告

高斯消去法的数值稳定性实验报告
end
end
%½«³£ÊýÏî´ÓAÖзÖÀë
X=A(:,length(A(1,:)));
A=A(:,1:length(A(1,:))-1);
%µÃµ½LÓëU¾ØÕó
fori=1:length(A(:,1))
forj=1:length(A(i,:))
if(i==j)
L(i,j)=1;
U(i,j)=A(i,j);
00-2.83542034035461-0.439277018213440
0000.724838760535495
X2=
5.90739256961544
1.88284104193886
-22.2540722833854
14.5809976298923
(3)beselect.m文件与noselect.m文件
%½«³£ÊýÏî¼Ó½øÈ¥
A(:,length(A(1,:))+1)=Y;
%´ÓÉÏÍùÏÂÑ »·
fori=1:length(A(:,1))
%Ô¤¼ÆËãÿÐеÚÒ»¸öÊý×Ö
fork=i:length(A(:,i))
form=1:i-1
A(k,i) = A(k,i)-A(k,m)*A(m,i);
end
end
end
%¼ÆËãXÖµ
fori=length(X):-1:1
forj=i+1:length(U(i,:))
X(i)=X(i)-U(i,j)*X(j);
end
X(i)=X(i)/U(i,i);
end
end
noselect.m文件:
function[ L,U,X ] = noselect( A,Y )

数值计算基础实验报告(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、目的与要求通过上机编程,复习巩固以前所学得程序设计语言及上机操作指令,切实感受舍入误差所引起的数值不稳定性。

2、算法与实例对n=0,1,2,…,20计算定积分dx x x I nn ⎰+=105 算法1:利用递推公式算法2:利用递推公式n I I n n 51511+-=-),,(01920Λ=n008730.021051126120≈+≈I 3、程序设计(1)流程图算法1流程图如左图,算法2流程图如右 1(2)程序清单算法1:#include<stdio.h>1main(){double y0=log(6.0/5.0),y1;int n=1;printf("y[0]=%f",y0);while (1){y1=1.0/n-5*y0;printf("y[%d]=%f\n",n,y1);if (n>=20)break;y0=y1;n++;}}算法2:#include<math.h>void main(){double y0=(1.0/126+1.0/105)/2,y1; int n;printf("y[20]=%f\n",y0);for (n=19;n>=0;n--){y1=1/(5.0*n)-y0/5.0;printf("y[%d]=%f\n",n,y1); y0=y1;}4、结果与分析算法1结果:算法2结果分析:(1)在数值运算中,两相近数相减会严重损失有效数字。

(2)若参加运算的数量级相差很大而计算机的位数有限,如不注意运算次序,可能出现大数“吃”小数现象,影响计算结果。

(3)避免使用绝对值较小的数做除数(4)如果能够减少运算次数,即能节省计算机的运行时间,又能减少舍入误差。

(5)从结果可以看出,算法1是不稳定的,算法2是稳定的。

计算方法实验报告

计算方法实验报告

实验一:误差传播与算法稳定性实验目的:体会稳定性在选择算法中的地位。

实验内容:考虑一个简单的由积分定义的序列10I ,0,1,10nn x dx n a x==+⎰其中a 为参数,分别对0.05a =及15a =按下列两种方法计算。

方案1:用递推公式11,1,2,,10n n I aI n n-=-+= 递推初值可由积分直接得01lna I a+= 方案2:用递推公式111(),,1,,1n n I I n N N a n-=-+=-根据估计式当1n a n ≥+时,11(1)(1)(1)n I a n a n <<+++或当01n a n ≤<+时,11(1)(1)n I a n n<≤++ 取递推初值 当1n a n ≥+时, 11121()2(1)(1)(1)2(1)(1)N N a I I a N a N a a N +≈+=+++++ 当01n a n ≤<+时,111()2(1)(1)N N I I a N N≈+++ 实验要求:列出结果,并对其稳定性进行分析比较,说明原因。

实验二:非线性方程数值解法实验目的:探讨不同方法的计算效果和各自特点 实验内容:应用算法(1)牛顿法;(2)割线法 实验要求:(1)用上述各种方法,分别计算下面的两个例子。

在达到精度相同的前提下,比较其迭代次数。

(I )31080x x +-=,取00x =;(II) 2281(0.1)sin 1.060x x x -+++=,取00x =;(2) 取其它的初值0x ,结果如何?反复选取不同的初值,比较其结果; (3) 总结归纳你的实验结果,试说明各种方法的特点。

实验三:选主元高斯消去法----主元的选取与算法的稳定性问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。

但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss 消去法作为数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选择。

《数值计算方法》实验 (1)

《数值计算方法》实验 (1)

电子科技大学《数值计算方法》




输入6,1;0,1,21i i n a b i i n ===+=−" 结果得f=1.718263
输入10,1;0,1,21i i n a b i i n ===+=−" 结果得f=1.718282
输入100,1;0,1,21i i n a b i i n ===+=−" 结果得f=1.718282
从中计算结果看随n 增大迭代计算结果逐渐稳定,可认为出现此现象有两种情况一是对该输入序列a,b 用此迭代公式随序列増长会逐渐逼近一个稳定值,二是在迭代计算过程中产生大数“吃掉”小数现象且计算结果只取7为有效数字。

3. 实验结论
在计算机内做加法运算时,首先要对加数作对阶处理,加之计算机字长有限,因尽量避免出现大数吃小数现象,计算时要注意运算次序,否则会影响结果的可靠性。

报告评分:
指导教师签字:。

实验一实验报告1

实验一实验报告1

贵州师范大学数学与计算机科学学院学生实验报告课程名称:数值分析班级数学与应用数学2班实验日期:年月日学号: 110701020060 姓名周明祥指导教师:杨一都实验成绩:一、实验名称实验一:递推法的稳定性,秦九韶算法二、实验目的及要求1. 熟悉数值稳定的概念, 通过上机计算,了解舍入误差所引起的数值不稳定性.2. 培养Matlab编程与上机调试能力.三、实验环境每人一台计算机,要求安装Windows XP操作系统,Microsoft office2003、MATLAB6.5(或7.0).四、实验内容1.教材例1.13中,取15位数字计算,并分析、比较计算结果.2.设100999832,用秦九韶算法编程计=+++++++f x x x x x x x()101100994321算()f x在1,2,3,4x=上的值.五、算法描述及实验步骤1、输入函数f(x)=1/(x+5);输出 I(14);步1 I(1)=int(f,0,1);步2 用for循环语句执行递推关系I(n+1)=1/n-5*I(n);步3 输出I(14);结束。

2、输入多项式系数a(0),a(2),...,a(n),给定点x。

(x)在x处的值y。

输出多项式Pn步1 v<==a(n)。

步2 对k=1,2,...,n执行v<==v*x+a(n-k)。

步3 y<==v。

步4 输出多项式的值y。

结束。

六、调试过程及实验结果1、 y=ditui(14)ans =[ .18232155679396, .8839221603023e-1, .580389198489e-1, .43138734088e-1, .3430632956e-1, .2846835222e-1, .243249055e-1, .21232615e-1, .18836925e-1, .1692649e-1, .153675e-1, .140713e-1,.12978e-1, .1204e-1, .1123e-1]2、 a=[101:-1:1];x=[1,2,3,4];Qinjiu(a,100,x)ans =1.0e+062 *0.0000 0.0000 0.0000 2.1569vpa(ans,8)ans =[ 5151., .25353012e33, .77693161e50, .21568680e63]七、总结八、附录(源程序清单)1、 function y=ditui(n)syms xf=1./(x+5);I(1)=int(f,0,1);for i=1:nI(i+1)=1/i-5*I(i);endvpa(I,15)2、 function y=Qinjiu(a,n,x) v=a(1);for k=1:nv=v.*x+a(k+1);endy=v;。

数值计算LU分解实验报告

数值计算LU分解实验报告

数值计算LU分解实验报告实验目的:1.了解LU分解的原理和数值计算方法;2.掌握LU分解的算法实现过程;3.验证LU分解的正确性和数值稳定性。

实验器材:1.计算机;2.编程环境。

实验步骤:1.确定要进行LU分解的方阵A的大小;2.随机生成一个大小为nxn的方阵A;3.使用LU分解算法对方阵A进行分解;4. 验证LU分解的正确性,即计算得到的L和U是否满足L \cdot U = A;5. 计算方阵A的行列式det(A),并与分解得到的L和U的主对角线元素的乘积进行比较,验证LU分解的数值稳定性。

实验原理:LU分解是将一个n x n的矩阵A分解为一个下三角矩阵L和一个上三角矩阵U的乘积的过程,满足A = L \cdot U。

其中,L的主对角线元素全为1、LU分解的主要目的是为了简化线性方程组的求解过程,因为当A被分解为LU后,可以通过解两个三角线性方程组来求解原方程组。

实验结果与分析:1.随机生成一个3x3的矩阵A,如下所示:A=[[4,3,-2],[8,5,4],[1,-2,3]]2.对矩阵A进行LU分解,得到L和U矩阵分别为:L=[[1,0,0],[2,1,0],[0.25,0.1,1]]U=[[4,3,-2],[0,-1,8],[0,0,10.2]]3. 验证LU分解的正确性,计算L和U矩阵的乘积是否等于矩阵A。

结果为L \cdot U = [[4, 3, -2], [8, 5, 4], [1, -2, 3]],与矩阵A 一致,因此LU分解正确。

4. 计算矩阵A的行列式det(A)为 -95、计算分解得到的L和U的主对角线元素的乘积为 4 \cdot (-1) \cdot 10.2 = -40.8、由于det(A) ≠ 0,且det(A)≠-40.8,因此LU分解满足数值稳定性。

结果分析:通过对3x3方阵A进行LU分解的实验,验证了LU分解算法的正确性和数值稳定性。

LU分解可以将一个矩阵分解为一个下三角矩阵和一个上三角矩阵的乘积,从而简化线性方程组的求解过程。

《计算方法》实验报告

《计算方法》实验报告

《计算方法》实验报告一、实验目的本次《计算方法》实验的主要目的是通过实际操作和编程实现,深入理解和掌握常见的计算方法在解决数学问题中的应用。

通过实验,提高我们运用数学知识和计算机技术解决实际问题的能力,培养我们的逻辑思维和创新能力。

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

实验运行的操作系统为 Windows 10。

三、实验内容与步骤1、线性方程组的求解实验内容:使用高斯消元法和LU分解法求解线性方程组。

实验步骤:首先,定义线性方程组的系数矩阵和常数向量。

对于高斯消元法,通过逐步消元将系数矩阵化为上三角矩阵,然后回代求解。

对于 LU 分解法,将系数矩阵分解为下三角矩阵 L 和上三角矩阵 U,然后通过向前和向后代换求解。

2、插值与拟合实验内容:使用拉格朗日插值法、牛顿插值法进行插值计算,并使用最小二乘法进行曲线拟合。

实验步骤:对于拉格朗日插值法和牛顿插值法,根据给定的节点数据计算插值多项式。

对于最小二乘法,根据给定的数据点和拟合函数形式,计算拟合参数。

3、数值积分实验内容:使用矩形法、梯形法和辛普森法计算定积分。

实验步骤:定义被积函数和积分区间。

对于矩形法,将积分区间等分为若干小区间,每个小区间用矩形面积近似积分值。

梯形法通过构建梯形来近似积分值。

辛普森法利用抛物线来近似积分值。

4、常微分方程的数值解法实验内容:使用欧拉法和改进的欧拉法求解常微分方程。

实验步骤:给定常微分方程和初始条件。

按照欧拉法和改进的欧拉法的公式进行迭代计算,得到数值解。

四、实验结果与分析1、线性方程组的求解高斯消元法和 LU 分解法都能成功求解线性方程组,但在计算效率和数值稳定性上可能存在差异。

对于规模较大的线性方程组,LU 分解法通常更具优势。

实验中通过对比不同方法求解相同线性方程组的结果,验证了算法的正确性。

2、插值与拟合拉格朗日插值法和牛顿插值法在给定节点处能够准确插值,但对于节点之外的区域,可能会出现较大偏差。

数值分析实验报告

数值分析实验报告

《数值分析》实验报告学院:计算机科学与软件学院姓名:XXX班级:计算机XX班学号:XXXXXX实验一:舍入误差与数值稳定性实验目的:1、 通过上机编程,复习巩固以前所学程序设计语言;2、 通过上机计算,了解舍入误差所引起的数值不稳定性。

3、 通过上机计算,了解运算次序对计算结果的影响,从而尽量避免大数吃小数的现象。

实验内容:用两种不同的顺序计算644834.11000012≈∑=-n n ,分析其误差的变化。

实验流程图:实验源程序:#include <stdio.h>#include <math.h>void main(){ int i;float s1=0,s2=0,d1,d2;for (i=1;i<=10000;i++)s1=s1+1.0f/(i*i);for (i=10000;i>=1;i--)s2=s2+1.0f/(i*i);d1=(float)(fabs(1.644834-s1));d2=(float)(fabs(1.644834-s2));printf("正向求和结果为%f\n 误差为%f\n\n",s1,d1);printf("反向求和结果为%f\n 误差为%f\n\n",s2,d2);if(d1<d2)printf("正向求和误差小于负向求和误差\n");else if(d1==d2)printf("正向求和误差等于负向求和误差\n"); elseprintf("正向求和误差大于负向求和误差\n");}实验结果:实验分析:第一次做数值实验,又一次使用C语言编程,没有了刚学习C语言的艰难,能够将实验步骤转换成流程图并编写出完整的实验代码,在经过多次调试、改正后得到正确的程序和结果。

这个实验较简单,计算误差时如果输入数据有误差,而在计算过程中舍入误差不增长,则称此算法是稳定的,否则称此算法是数值不稳定的,减少运算次数可以减小舍入误差。

计算方法数值实验报告

计算方法数值实验报告

计算方法数值实验报告(一)班级:0902 学生:苗卓芳 倪慧强 岳婧实验名称: 解线性方程组的列主元素高斯消去法和LU 分解法实验目的: 通过数值实验,从中体会解线性方程组选主元的必要性和LU 分解法的优点,以及方程组系数矩阵和右端向量的微小变化对解向量的影响。

实验内容:解下列两个线性方程组(1) ⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎭⎫ ⎝⎛--11134.981.4987.023.116.427.199.103.601.3321x x x (2) ⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎭⎫ ⎝⎛----15900001.582012151526099999.23107104321x x x x 解:(1) 用熟悉的算法语言编写程序用列主元高斯消去法和LU 分解求解上述两个方程组,输出Ax=b 中矩阵A 及向量b, A=LU 分解的L 及U ,detA 及解向量。

①先求解第一个线性方程组⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎭⎫ ⎝⎛--11134.981.4987.023.116.427.199.103.601.3321x x x在命令窗口中运行A=[3.01,6.03,1.99;1.27,4.16,-1.23;0.987,-4.81,9.34] 可得A =3.0100 6.0300 1.99001.2700 4.1600 -1.23000.9870 -4.8100 9.3400b=[1,1,1]可得b =1 1 1H =det(A)可得 H =-0.0305列主元高斯消去法:在命令窗口中运行function x=Gauss_pivot(A,b)、A=[3.01,6.03,1.99;1.27,4.16,-1.23;0.987,-4.81,9.34];b=[1,1,1];n=length(b);x=zeros(n,1);c=zeros(1,n);dl=0;for i=1:n-1max=abs(A(i,i));m=i;for j=i+1:nif max<abs(A(j,i))max=abs(A(j,i));m=j;endendif(m~=i)for k=i:nc(k)=A(i,k);A(i,k)=A(m,k);A(m,k)=c(k);enddl=b(i);b(i)=b(m);b(m)=dl;endfor k=i+1:nfor j=i+1:nA(k,j)=A(k,j)-A(i,j)*A(k,i)/A(i,i);endb(k)=b(k)-b(i)*A(k,i)/A(i,i);A(k,i)=0;endendx(n)=b(n)/A(n,n);for i=n-1:-1:1sum=0;for j=i+1:nsum =sum+A(i,j)*x(j);endx(i)=(b(i)-sum)/A(i,i);end经程序可得实验结果ans =1.0e+003 *1.5926-0.6319-0.4936LU分解法:在命令窗口中运行function x=lu_decompose(A,b)A=[3.01,6.03,1.99;1.27,4.16,-1.23;0.987,-4.81,9.34];b=[1,1,1];L=eye(n);U=zeros(n,n);x=zeros(n,1);c=zeros(1,n);for i=1:nU(1,i)=A(1,i);if i==1;L(i,1)=1;elseL(i,1)=A(i,1)/U(1,1);endendfor i=2:nfor j=i:nsum=0;for k=1:i-1sum =sum+L(i,k)*U(k,j);endU(i,j)=A(i,j)-sum;Ifj~=nsum=0;for k=1:i-1sum=sum+L(j+1,k)*U(k,i);endL(j+1,i)=(A(j+1,i)-sum)/U(I,i);endendendy(1)=b(1);for k=2:nsum=0;forj=1:k-1sum=sum+L(k,j)*y (j);endy(k)=b(k)-sum;endx(n)=y(n)/U(n,n);260页最后一行c(k)=A(i,k);A(i,k)=A(m,k);A(m,k)=c(k);enddl=b(i);b(i)=b(m);b(m)=dl;endfor k=i+1:nfor j=i+1:nA(k,j)=A(k,j)-A(i,j)*A(k,i)/A(i,i);endb(k)=b(k)-b(i)*A(k,i)/A(i,i);A(k,i)=0;endendx(n)=b(n)/A(n,n);for i=n-1:-1:1sum=0;for j=i+1:nsum =sum+A(i,j)*x(j);endx(i)=(b(i)-sum)/A(i,i);end经程序可得结果ans =1.0e+003 *1.5926-0.6319-0.4936②再求解第二个线性方程组⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎭⎫ ⎝⎛----15900001.582012151526099999.23107104321x x x x 即A=[10,-7,0,1;-3,2.099999,6,2;5,-1,5,-1;2,1,0,2];b=[8,5.900001,5,1];重复上述步骤可的结果为ans =0.0000-1.00001.00001.0000(2)将方程组(1)中系数3.01改为3.00,0.987改为0.990,用列主元高斯消去法求解变换后的方程组,输出列主元行交换次序,解向量x 及detA ,并与(1)中结果比较。

数值分析计算方法实验报告

数值分析计算方法实验报告

数值分析计算方法实验报告实验报告:数值分析计算方法摘要:数值计算方法是现代科学与工程领域中常用的重要工具。

本实验通过对比分析三种不同的数值计算方法,包括二分法、牛顿迭代法和弦截法的优劣,以及在实际问题中的应用。

实验结果表明,不同的数值计算方法适用于不同的问题,合理选择方法可以提高计算的精度和效率。

一、引言在科学研究和工程实践中,很多问题并不能通过解析方法得到精确解。

数值计算方法可以通过近似计算得到问题的数值解,为科学研究和工程设计提供可靠依据。

本实验主要研究三种常见的数值计算方法,即二分法、牛顿迭代法和弦截法,并通过实例验证其有效性和适用性。

二、方法介绍1.二分法:二分法是一种简单但有效的数值计算方法,适用于通过连续函数的反函数求解根的问题。

其基本思想是将查找区间通过中点划分为两个子区间,根据函数值的符号变化,选择新的查找区间,直到满足精度要求为止。

2.牛顿迭代法:牛顿迭代法是一种基于函数导数的数值计算方法,适用于求解非线性方程的根的问题。

其基本思想是通过对初始值的不断迭代来逼近方程的根,在每次迭代中利用切线的斜率来更新迭代值。

3.弦截法:弦截法是一种近似求解非线性方程根的数值计算方法。

其基本思想是通过初始两个近似解的连线与坐标轴交点的位置,来逼近真实解。

在每次迭代中,通过计算连线与坐标轴的交点来更新迭代值,直到满足精度要求为止。

三、实验内容1.实现二分法、牛顿迭代法和弦截法的数值计算算法;2.通过给定的实例,在同样的精度要求下对三种方法进行比较;3.分析并总结三种方法的优缺点及适用范围。

四、实验结果通过对比实例的计算结果可得到如下结果:1.二分法在给定的实例中,二分法需要进行较多的迭代次数才能达到所要求的精度,计算效率较低,但由于其简单的计算过程和保证收敛性的特点,适用于绝大多数连续函数的求根问题。

2.牛顿迭代法牛顿迭代法的计算速度快且稳定,收敛速度相对较快,但对初始值的选择要求较高。

如果初始值选择不当,可能会导致迭代结果发散。

大学计算实验实验报告

大学计算实验实验报告

实验名称:数值计算方法实验日期:2021年10月15日实验地点:计算机实验室实验目的:1. 理解数值计算的基本原理和方法。

2. 掌握常用数值计算算法的编程实现。

3. 培养分析和解决实际问题的能力。

实验内容:本次实验主要涉及以下内容:1. 线性方程组的求解2. 函数求值与数值微分3. 函数求根4. 数据插值实验原理:数值计算是计算机科学和工程领域中非常重要的一个分支,它涉及到将数学问题转化为计算机可以处理的数值问题。

本实验主要探讨了以下数值计算方法:1. 高斯消元法:用于求解线性方程组。

2. 牛顿法:用于求解函数的根。

3. 二分法:用于求解函数的根。

4. 拉格朗日插值法:用于数据插值。

实验步骤:1. 线性方程组的求解:- 编写程序实现高斯消元法,用于求解线性方程组。

- 输入方程组的系数和常数项。

- 输出方程组的解。

2. 函数求值与数值微分:- 编写程序实现中点法和辛普森法,用于求函数的近似值。

- 编写程序实现中心差分法,用于求函数的导数近似值。

- 输入函数表达式、求值点和微分点。

- 输出函数的近似值和导数的近似值。

3. 函数求根:- 编写程序实现牛顿法和二分法,用于求解函数的根。

- 输入函数表达式、初始猜测值和误差容忍度。

- 输出函数的根。

4. 数据插值:- 编写程序实现拉格朗日插值法,用于数据插值。

- 输入数据点和待插值点。

- 输出插值结果。

实验结果:1. 线性方程组的求解:- 输入方程组系数和常数项:`2x + 3y = 6`,`x - y = 1`。

- 输出解:`x = 2`,`y = 1`。

2. 函数求值与数值微分:- 输入函数表达式:`f(x) = x^2`,求值点:`x = 2`。

- 输出函数的近似值:`f(2) ≈ 4.000000`。

- 输入微分点:`x = 2`。

- 输出导数的近似值:`f'(2) ≈ 4.000000`。

3. 函数求根:- 输入函数表达式:`f(x) = x^2 - 2`,初始猜测值:`x = 1`,误差容忍度:`10^-6`。

数值计算方法实验指导(Matlab版)

数值计算方法实验指导(Matlab版)

《数值计算方法》实验指导(Matlab版)学院数学与统计学学院计算方法课程组《数值计算方法》实验1报告班级: 20##级####x 班 学号: 20##2409#### : ##X 成绩:1. 实验名称实验1 算法设计原则验证(之相近数相减、大数吃小数和简化计算步骤) 2. 实验题目(1) 取1610=z ,计算z z -+1和)1/(1z z ++,验证两个相近的数相减会造成有效数字的损失.(2) 按不同顺序求一个较大的数(123)与1000个较小的数(15310-⨯)的和,验证大数吃小数的现象.(3) 分别用直接法和九韶算法计算多项式n n n n a x a x a x a x P ++++=--1110)(在x =1.00037处的值.验证简化计算步骤能减少运算时间.对于第(3)题中的多项式P (x ),直接逐项计算需要2112)1(+=+++-+n n n 次乘法和n 次加法,使用九韶算法n n a x a x a x a x a x P ++++=-)))((()(1210则只需要n 次乘法和n 次加法. 3. 实验目的验证数值算法需遵循的若干规则. 4. 基础理论设计数值算法时,应避免两个相近的数相减、防止大数吃小数、简化计算步骤减少运算次数以减少运算时间并降低舍入误差的积累.两相近的数相减会损失有效数字的个数,用一个大数依次加小数,小数会被大数吃掉,乘法运算次数太多会增加运算时间. 5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab6. 实验过程(1) 直接计算并比较;(2) 法1:大数逐个加1000个小数,法2:先把1000个小数相加再与大数加; (3) 将由高次项到低次项的系数保存到数组A[n]中,其中n 为多项式次数.7. 结果与分析 (1) 计算的z z -+1= ,)1/(1z z ++.分析:(2) 123逐次加1000个6310-⨯的和是 ,先将1000个6310-⨯相加,再用这个和与123相加得.分析:(3) 计算次的多项式:直接计算的结果是,用时;用九韶算法计算的结果是,用时.分析:8. 附录:程序清单(1) 两个相近的数相减.%*************************************************************%* 程序名:ex1_1.m *%* 程序功能:验证两个相近的数相减会损失有效数字个数 *%*************************************************************z=1e16;x,y======================================================================(2) 大数吃小数%*************************************************************%* 程序名:ex1_2.m *%* 程序功能:验证大数吃小数的现象. *%*************************************************************clc; % 清屏clear all; % 释放所有存变量format long; % 按双精度显示浮点数z=123; % 大数t=3e-15; % 小数x=z; % 大数依次加小数% 重复1000次给x中加上ty=0; % 先累加小数% 重复1000次给y中加上ty=z + y; % 再加到大数x,y======================================================================(3) 九韶算法%*************************************************************%* 程序名:ex1_3.m *%* 程序功能:验证九韶算法可节省运行时间. *%*************************************************************clc; % 清屏clear all; % 释放所有存变量format long; % 按双精度显示浮点数A=[8,4,-1,-3,6,5,3,2,1,3,2,-1,4,3,1,-2,4,6,8,9,50,-80,12,35,7,-6,42,5,6,23,74,6 5,55,80,78,77,98,56];A(10001)=0; % 扩展到10001项,后面的都是分量0% A为多项式系数,从高次项到低次项x=1.00037;n=9000; % n为多项式次数% 直接计算begintime=clock; % 开始执行的时间 % 求x的i次幂% 累加多项式的i次项endtime=clock; % 完毕执行的时间time1=etime(endtime,begintime); % 运行时间disp('直接计算');disp(['p(',num2str(x),')=',num2str(p)]);disp([' 运行时间: ',num2str(time1),'秒']);% 九韶算法计算begintime=clock; % 开始执行的时间% 累加九韶算法中的一项endtime=clock; % 完毕执行的时间time2=etime(endtime,begintime); % 运行时间disp(' ');disp('九韶算法计算');disp(['p(',num2str(x),')=',num2str(p)]);disp([' 运行时间: ',num2str(time2),'秒']);《数值计算方法》实验1报告班级: 20##级####x 班 学号: 20##2409#### : ##X 成绩:1. 实验名称实验1 算法设计原则验证(之数值稳定性) 2. 实验题目 计算定积分⎰==-1110,1,0,d n x e xI x nn ,分别用教材例1-7推导出的算法A 和B ,其中:算法A :⎩⎨⎧≈-=-6321.0101I nI I n n 算法B :⎪⎩⎪⎨⎧≈-=-0)1(1101I I nI n n 验证算法不稳定时误差会扩大.3. 实验目的验证数值算法需遵循的若干规则. 4. 基础理论设计数值算法时,应采用数值稳定性好的算法.数值稳定的算法,误差不会放大,甚至会缩小;而数值不稳定的算法会放大误差. 5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab6. 实验过程分别用数组IA[ ]和IB[ ]保存两种算法计算的结果. 7. 结果与分析 运行结果:(或拷屏)8. 附录:程序清单%*************************************************************%* 程序名:ex1_4.m *%* 程序功能:验证数值稳定性算法可控制误差. *%*************************************************************clc; % 清屏clear all; % 释放所有存变量format long; % 按双精度显示浮点数I=[0.856, 0.144, 0.712, 0.865, ...0.538, 0.308, 0.154, 0.938, ...0.492, 0.662, 0.843];% 保留14位小数的精确值, …是Matlab中的续行符% 算法AIA(1) = 0.6321; % Matlab下标从1开始,所以要用IA(n+1)表示原问题中的I(n)% 算法Bdisp('n 算法A 算法B 精确值');for n=1:11fprintf('%2d %14.6f %14.6f %14.6f\n',n-1,IA(n),IB(n),I(n));end% n显示为2位整数, 其它显示为14位其中小数点后显示6位的小数《数值计算方法》实验1报告班级: 20##级####x 班 学号: 20##2409#### : ##X 成绩:1. 实验名称实验1 算法设计原则(除数绝对值不能太小) 2. 实验题目将线性方程组增广矩阵利用初等行变换可化为⎪⎪⎭⎫⎝⎛→-⎪⎪⎭⎫ ⎝⎛→-⎪⎪⎭⎫ ⎝⎛''0'0''02221112'12221121112222211121122121121b a b a r r b a b a a r r b a a b a a a a a a由此可解得'/',/'22221111a b x a b x ==.分别解增广矩阵为161011212-⎛⎫ ⎪⎝⎭和162121011-⎛⎫⎪⎝⎭的方程组,验证除数绝对值远小于被除数绝对值的除法会导致结果失真. 3. 实验目的验证数值算法需遵循的若干规则. 4. 基础理论设计数值算法时,应避免除数绝对值远小于被除数绝对值的除法,否则绝对误差会被放大,使结果失真. 5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab6. 实验过程用二维数组A 和B 存放方程组的增广矩阵,利用题目所给初等行变换求解方程组. 7. 结果与分析第1种顺序的方程组的解为x =,y =;第2种顺序的方程组的解为x =,y =. 分析:8. 附录:程序清单%************************************************************* %* 程 序 名:ex1_5.m * %* 程序功能:验证除数的绝对值太小可能会放大误差. * %*************************************************************clc;A=[1e-16, 1, 1; 2, 1, 2];B=[2, 1, 2; 1e-16, 1, 1]; % 增广矩阵% 方程组A% m = - a_{21}/a_{11} 是第2行加第1行的倍数% 消去a_{21}% m = - a_{12}/a_{22} 是第1行加第2行的倍数% 消去a_{12}, 系数矩阵成对角线% 未知数x1的值% 未知数x2的值disp(['方程组A的解: x1=',num2str(A(1,3)),', x2=',num2str(A(2,3))]); disp(' ');% 方程组B% m = - b_{21}/b_{11} 是第2行加第1行的倍数% 消去b_{21}% m = - b_{12}/b_{22} 是第1行加第2行的倍数% 消去b_{12}, 系数矩阵成对角线% 未知数x1的值% 未知数x2的值disp(['方程组B的解: x1=',num2str(B(1,3)),', x2=',num2str(B(2,3))]);《数值计算方法》实验2报告班级: 20##级####x 班 学号: 20##2409#### : ##X 成绩:1. 实验名称实验2 非线性方程的迭代解法(之简单迭代法) 2. 实验题目用简单迭代法求方程010423=-+x x 在区间[1,2]的一个实根,取绝对误差限为410-.3. 实验目的掌握非线性方程的简单迭代法. 4. 基础理论简单迭代法:将方程0)(=x f 改写成等价形式)(x x ϕ=,从初值0x 开始,使用迭代公式)(1k k x x ϕ=+可以得到一个数列,若该数列收敛,则其极限即为原方程的解.取数列中适当的项可作为近似解. 5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程7. 结果与分析8. 附录:程序清单《数值计算方法》实验2报告班级: 20##级####x 班 学号: 20##2409#### : ##X 成绩:1. 实验名称实验2 非线性方程的迭代解法(之Newton 迭代法) 2. 实验题目用Newton 迭代法求方程010423=-+x x 在区间[1,2]的一个实根,取绝对误差限为410-.3. 实验目的掌握求解非线性方程的Newton 迭代法. 4. 基础理论Newton 迭代法:解方程0)(=x f 的Newton 迭代公式为)(')(1k k k k x f x f x x -=+.5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程7. 结果与分析8. 附录:程序清单《数值计算方法》实验2报告班级: 20##级####x 班 学号: 20##2409#### : ##X 成绩:1. 实验名称实验2 非线性方程的迭代解法(之对分区间法) 2. 实验题目用对分区间法求方程310x x --=在区间[1, 1.5]的一个实根,取绝对误差限为410-. 3. 实验目的掌握求解非线性方程的对分区间法. 4. 基础理论对分区间法:取[a ,b ]的中点p ,若f (p ) ≈ 0或b – a < ε,则p 为方程0)(=x f 的近似解;若f (a ) f (p ) < 0,则说明根在区间取[a ,p ]中;否则,根在区间取[p ,b ]中.将新的有根区间记为 [a 1,b 1],对该区间不断重复上述步骤,即可得到方程的近似根. 5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程用宏定义函数f (x );为了循环方便,得到的新的有根区间始终用[a ,b ]表示;由于新的有根区间可能仍以a 为左端点,这样会反复使用函数值f (a ),为减少运算次数,将这个函数值保存在一个变量fa 中;同样在判断新的有根区间时用到函数值f (p ),若新的有根区间以p 为左端点,则下一次用到的f (a )实际上就是现在的f (p ),为减少运算次数,将这个函数值保存在一个变量fp 中.算法的伪代码描述:Input :区间端点a ,b ;精度要求(即误差限)ε;函数f (x );最大对分次数N Output :近似解或失败信息7. 结果与分析8. 附录:程序清单说明: 源程序中带有数字的空行,对应着算法描述中的行号%**********************************************************%* 程序名:Bisection.m *%* 程序功能:使用二分法求解非线性方程. *%**********************************************************f=inline('x^3-x-1'); % 定义函数f(x)a=input('有根区间左端点: a=');b=input('右端点:b=');epsilon=input('误差限:epsilona=');N=input('最大对分次数: N=');1 % 对分次数计数器n置12 % 左端点的函数值给变量fafprintf('\n k p f(p) a(k) f(a(k))'); fprintf(' b(k) b-a\n');% 显示表头fprintf('%2d%36.6f%12.6f%12.6f%12.6f\n',0,a,fa,b,b-a);% 占2位其中0位小数显示步数0, 共12位其中小数6位显示各值3% while n≤ N 4 % 取区间中点p5% 求p 点函数值给变量fpfprintf('%2d%12.6f%12.6f',n,p,fp); % 输出迭代过程中的中点信息p 和f(p)6 % 如果f(p)=0或b-a 的一半小于误差限εfprintf('\n\n 近似解为:%f\n',p);% 则输出近似根p (7)return;% 并完毕程序 (7)89 % 计数器加110% 若f(a)与f(p)同号11% 则取右半区间为新的求根区间, 即a 取作p 12 % 保存新区间左端点的函数值 13% 否则14 % 左半区间为新的求根区间, 即b 取作p 15fprintf('%12.6f%12.6f%12.6f%12.6f\n',a,fa,b,b-a); %显示新区间端点与左端函数值、区间长度 16fprintf('\n\n 经过%d 次迭代后未达到精度要求.\n',N); % 输出错误信息(行17)《数值计算方法》实验2报告班级: 20##级####x 班 学号: 20##2409#### : ##X 成绩:1. 实验名称实验2 非线性方程的迭代解法(之Aitken-Steffensen 加速法) 2. 实验题目用Aitken-Steffensen 加速法求方程010423=-+x x 在区间[1,2]的一个实根,取绝对误差限为410-.3. 实验目的熟悉求解非线性方程的Aitken-Steffensen 加速法. 4. 基础理论将方程0)(=x f 改写成等价形式)(x x ϕ=,得到从初值0x 开始的迭代公式)(1k k x x ϕ=+后,基于迭代公式)(1k k x x ϕ=+的Aitken-Steffensen 加速法是通过“迭代-再迭代-加速”完成迭代的,具体过程为kk k k k k k k k k k x y z z y x x y z x y +---===+2)(),(),(21ϕϕ. 5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程为了验证Aitken-Steffensen 加速法可以把一些不收敛的迭代加速成迭代收敛,我们使用将方程组变形为31021x x -=,取迭代函数31021)(x x -=ϕ,并利用宏定义出迭代函数.由于不用保存迭代过程,所以用x0表示初值同时也存放前一步迭代的值,y 和z 是迭代过程中产生的y k 和z k ,x 存放新迭代的结果.算法的伪代码描述:Input :初值x 0;精度要求(即误差限)ε;迭代函数φ(x );最大迭代次数N7. 结果与分析8. 附录:程序清单%************************************************************* %* 程 序 名:Aitken_Steffensen.m * %* 程序功能:用Aitken-Steffensen 加速法求方程. * %************************************************************* clc;clear all;phi=inline('0.5 * sqrt( 10 - x^3)'); % 迭代函数x0=input('初值: x0 = ');epsilon=input('误差限: epsilon='); N=input('最大迭代次数: N=');disp(' n 迭代中间值y(n-1) 再迭代结构z(n-1) 加速后的近似值x(n)'); fprintf('%2d%54.6f\n',0,x0);% 占2位整数显示步数0, 为了对齐, 占54位小数6位显示x01 % n 是计数器2 % while n<=Ny= 3 ; % 迭代 z= 3 ; % 再迭代 x= 3 ; % 加速% x0初值与前一步的近似值, y 和z 是中间变量, x 是下一步的近似值fprintf('%2d%18.6f%18.6f%18.6f\n',n,y,z,x);%显示中间值和迭代近似值6 % 如果与上一步近似解差的绝对值不超过误差限 fprintf('\n\n 近似解 x≈x(%d)≈%f \n',n,x);% 则输出近似根 (7), 可简略为: fprintf('\n\n 近似解 x=%f',x); return; % 并完毕程序(7) 8 % 相当于endif9 % 计数器加110 % 新近似值x 作为下一次迭代的初值 11fprintf('\n 迭代%d 次还不满足误差要求.\n\n',N); %输出错误信息(12)《数值计算方法》实验2报告班级: 20##级####x 班 学号: 20##2409#### : ##X 成绩:1. 实验名称实验2 非线性方程的迭代解法(之Newton 下山法) 2. 实验题目用Newton 下山法求方程010423=-+x x 在区间[1,2]的一个实根,取绝对误差限为410-.3. 实验目的熟悉非线性方程的Newton 下山法. 4. 基础理论Newton 下山法:Newton 下山法公式为)(')(1k k kk k x f x f x x λ-=+,使|)(||)(|1k k x f x f <+,其中10≤<k λ.5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程定义函数f(x)和df(x),其中df(x)是f(x)的导函数.每步迭代时先取下山因子为1,尝试迭代,判断尝试结果是否满足下山因子,若满足则作为这步的迭代结果;否则将下山因子减半,然后再尝试.为防止当前的x k 是极小值点,附近不会有满足下述条件的其它点,使尝试陷入死循环,同时计算机中能表示出的浮点数也有下界,因此我们设置了最大尝试次数.当超过最大尝试次数时,不再进行下山尝试.由于反复尝试迭代且要判断下山条件,所以f (x 0)和f ‘(x 0)会反复使用,为避免重复计算浪费运行时间,将这两个值分别保存在变量fx0和dfx0.而尝试产生的节点,判断下山条件时要用到它的函数值,若尝试成功,这个点会作为下一步的初值再使用,所以把该点的函数值也保存在变量fx 中.算法的伪代码描述:Input :初值x 0;精度要求(即误差限)ε;函数与其导函数f (x )和f’(x);最大迭代次数N ;K 下山尝试最大次数Output :近似解或失败信息7. 结果与分析8. 附录:程序清单%*************************************************************%* 程序名:NewtonDownhill.m *%* 程序功能:用Newton下山法求解非线性方程. *%*************************************************************clc;clear all;f=inline('x^3-x-1'); % 函数f(x)df=inline('3*x^2-1'); % 函数f(x)的导函数x0=input('初值: x0 = ');epsilon=input('误差限: epsilon=');N=input('最大迭代次数: N=');K=input('最大下山尝试次数: K=');1 % 迭代次数计数器2 % 存x0点函数值fprintf('\n\n n x(n) f(x(n))\n'); % 显示表头fprintf('%2d%14.6f%14.6f\n',0,x0,fx0); % 2位整数显示0, 共14位小数6位显示x0和fx03 % while n≤ Ndisp(''); % 换行显示下山尝试过程的表头disp(' 下山因子尝试x(n) 对应f(x(n)) 满足下山条件');disp('');4 % 存x0点导数值, 每次下山尝试不用重新计算ifdfx0==0 % 导数为0不能迭代disp(‘无法进行Newton迭代’);return;endlambda=1.0; % 下山因子从1开始尝试k=1; % k下山尝试次数计数器while k<=K % 下山最多尝试K次% 下山公式fx=f(x); % 函数值fprintf('%22.6f%14.6f%14.6f',lambda,x,fx); % 显示尝试结果if (abs(fx)<abs(fx0)) % 判断是否满足下山条件fprintf(' 满足\n');break; % 是, 则退出下山尝试的循环elsefprintf(' 不满足\n');endlambda=lambda/2; % 不是, 则下山因子减半k=k+1; % 计数器加1endif k>Kfprintf('\n 下山条件无法满足, 迭代失败.\n\n');return;endfprintf('%2d%14.6f%14.6f\n',n,x,fx);% 2位整数显示步数n, 共14位小数6位显示下步迭代结果22 % 达到精度要求否fprintf('\n\n 方程的近似解为: x≈%f\n\n',x); % (23)return; % 达到, 则显示结果并完毕程序(23) end % (24)% 用x0,fx0存放前一步的近似值和它的函数值, 进行循环迭代25262728fprintf('\n 迭代%d次还不满足误差要求.\n\n',N);《数值计算方法》实验2报告班级: 20##级####x 班 学号: 20##2409#### : ##X 成绩:1. 实验名称实验2 非线性方程的迭代解法(之弦截法) 2. 实验题目用弦截法求方程010423=-+x x 在区间[1,2]的一个实根,取绝对误差限为410-. 3. 实验目的熟悉非线性方程的弦截法. 4. 基础理论将Newton 迭代法中的导数用差商代替,得到弦截法(或叫正割法)公式)()()(111k k k k k k k x f x f x f x x x x --+---=.5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程不保存迭代过程,所以始终以x 0和x 1分别存放x k -1和x k ,而x 存放新产生的迭代值x k +1,这样,下一次迭代时需要把上一步的x 1(即x k )赋值于x 0(做新的x k -1).这些点的函数值会重复用到,在迭代公式中也要用到,上一步的x 1作为下一步的x 0也会再一次用它的函数值,为减少重新计算该点函数值的运行时间,将x 1点的函数值保存在变量fx1中.算法的伪代码描述:Input :初值x 0,x 1;精度要求(即误差限)ε;函数f (x );最大迭代次数N7. 结果与分析8. 附录:程序清单%*************************************************************%* 程序名:SecantMethod.m *%* 程序功能:用弦截法求解非线性方程. *%*************************************************************clc;clear all;f=inline('2*x^3-5*x-1'); % 函数f(x)x0=input('第一初值: x0 = ');x1=input('第二初值: x1 = ');epsilon=input('误差限: epsilon=');N=input('最大迭代次数: N=');fprintf('\n n x(n)\n'); % 显示表头fprintf('%2d%14.6f\n', 0, x0); % 占2位显示步数0, 共14位其中小数6位显示x0fprintf('%2d%14.6f\n', 1, x1); % 占2位显示步数1, 共14位其中小数6位显示x11 % 存x0点函数值2 % 存x1点函数值3 % 迭代计数器4 % while n≤ N% 弦截法公式fprintf('%2d%14.6f\n', n, x); %显示迭代过程6 % 达到精度要求否fprintf('\n\n 方程的近似解为: x≈%f\n\n', x);return; % 达到, 则显示结果并完毕程序89 % 原x1做x0为前两步的近似值10 % 现x做x1为一两步的近似值11 % x0点函数值12 % 计算x1点函数值, 为下一次循环13 % 计数器加1 14fprintf('\n 迭代%d 次还不满足误差要求.\n\n',N);《数值计算方法》实验3报告班级: 20##级####x 班 学号: 20##2409#### : ##X 成绩:1. 实验名称实验3 解线性方程组的直接法(之Gauss 消去法) 2. 实验题目用Gauss 消去法求解线性方程组⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎭⎫ ⎝⎛--000.3000.2000.1643.5072.1000.2623.4712.3000.1000.3000.2001.0321x x x . 3. 实验目的掌握解线性方程组的Gauss 消去法. 4. 基础理论Gauss 消去法是通过对增广矩阵的初等行变换,将方程组变成上三角方程组,然后通过回代,从后到前依次求出各未知数.Gauss 消去法的第k 步(1≤k≤n -1)消元:若0≠kk a ,则依次将增广矩阵第k 行的kk ik a a /-倍加到第i 行(k+1≤i≤n),将第k 列对角线下的元素都化成0.5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程7. 结果与分析8. 附录:程序清单《数值计算方法》实验3报告班级: 20##级####x 班 学号: 20##2409#### : ##X 成绩:1. 实验名称实验3 解线性方程组的直接法(之Gauss 列主元消去法) 2. 实验题目用Gauss 列主元消去法求解线性方程组⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎭⎫ ⎝⎛--000.3000.2000.1643.5072.1000.2623.4712.3000.1000.3000.2001.0321x x x . 3. 实验目的掌握解线性方程组的Gauss 列主元消去法. 4. 基础理论Gauss 列主元消去法也是通过对增广矩阵的初等行变换,将方程组变成上三角方程组,然后通过回代,从后到前依次求出各未知数.Gauss 列主元消去法的第k 步(1≤k≤n -1)消元:先在nk k k kk a a a ,,,,1 +中找绝对值最大的,将它所在的行与第k 行交换,然后将第k 行的kk ik a a /-倍加到第i 行(k+1≤i≤n),将第k 列对角线下的元素都化成0. 5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程7. 结果与分析8. 附录:程序清单《数值计算方法》实验3报告班级: 20##级####x 班 学号: 20##2409#### : ##X 成绩:1. 实验名称实验3 解线性方程组的直接法(之Doolittle 分解) 2. 实验题目对矩阵A 进行Doolittle 分解,其中⎪⎪⎪⎪⎪⎭⎫⎝⎛----=3101141101421126A .3. 实验目的掌握矩阵的Doolittle 分解. 4. 基础理论矩阵的Doolittle 分解是指将矩阵n n ij a A ⨯=)(可以分解为一个单位下三角矩阵和一个上三角矩阵的乘积.若设⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛=⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛=nn n n n n n n u u u u u u u u u u U l l ll l l L000000,1010010001333223221131211321323121则可依如下顺序公式计算⎪⎪⎩⎪⎪⎨⎧++=-=+=-=∑∑-=-=1111,,2,1,/)(,,1,,k t kk tk it ik ik k r rj kr kj kj nk k i u u l a l nk k j u l a u其中k = 1,2,…,n .5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程(1)按计算公式依次计算一行u 同时计算一列l ;(2)因为计算完u ij (或l ij )后,a ij 就不再使用,为节省存储空间,将计算的u ij (和l ij )仍存放在矩阵A 中的相应位置;(3)使用L 矩阵和U 矩阵时需要根据元素所在位置取固定值或A 中相应位置的值.L 对角线上的元素为1,上三角部分为0,下三角部分为A 中对应的元素;U 的下三角部分为0,上三角部分为A 中对应的元素.算法的伪代码描述: Input :阶数n ;矩阵A7. 结果与分析8. 附录:程序清单%****************************************************% 程序名: Doolittle.m *% 程序功能: 矩阵LU分解中的Doolittle分解. *%****************************************************clc;clear all;n=4; % 矩阵阶数A=[6 2 1 -1;2 4 1 0; 1 1 4 -1; -1 0 -1 3]disp('A=');disp(A);% LU分解(Doolittle分解)for k=1:n% 计算矩阵U的元素u_{kj}% (可参照下面l_{ik}的公式填写)% 计算矩阵L的元素l_{ik}% L 在A 下三角, U 在上三角(对角线为1) enddisp('分解结果:'); disp('L='); for i=1:n for j=1:nif i>j % 在下三角部分, 则取A 对于的元素显示 fprintf(' %8.4f',A(i,j));elseif i==j % 在对角线上, 则显示1 fprintf(' %8d',1);else % 在上三角部分, 则显示0 fprintf(' %8d',0); end endfprintf('\n'); % 换行 enddisp('U='); for i=1:n for j=1:nif i<=j % 在上三角部分或对角线上, 则取A 对于的元素显示 fprintf(' %8.4f',A(i,j));else % 在下三角部分, 则显示0 fprintf(' %8d',0); end endfprintf('\n'); % 换行 end《数值计算方法》实验3报告班级: 20##级####x 班 学号: 20##2409#### : ##X 成绩:1. 实验名称实验3 解线性方程组的直接法(之LU 分解法) 2. 实验题目用LU 分解(Doolittle 分解)法求解线性方程组⎪⎩⎪⎨⎧=++=++=++104615631552162321321321x x x x x x x x x 3. 实验目的熟悉解线性方程组LU 分解法.4. 基础理论若将矩阵A 进行了Doolittle 分解,A = LU ,则解方程组b x A=可以分解求解两个三角方程组b y L=和y x U =.它们都可直接代入求解,其中b y L=的代入公式为∑-==-=11,,2,1,k j j kj k k n k y l b y而y x U=的代入公式为∑+=-=-=nk j kk j kjk k n n k u x uy x 11,,1,,/)( .5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程(1)Doolittle 分解过程依次计算一行u 同时计算一列l 完成,并将计算的u ij (和l ij )仍存放在矩阵A 中的相应位置;(2)求解方程组的代入公式中用到的u ij 和l ij 都直接在A 的相应位置取值即可. 算法的伪代码描述:Input :阶数n ;矩阵A ;常数项向量b7. 结果与分析8. 附录:程序清单%**************************************************** % 程序名: LinearSystemByLU.m *% 程序功能: 利用LU分解(Doolittle分解)解方程组. *%****************************************************clc;clear all;n=3; % 矩阵阶数A=[1 2 6; 2 5 15; 6 15 46];b=[1;3;10];% LU分解(Doolittle分解)for k=1:n% 计算矩阵U的元素u_{kj}% (可参照下面l_{ik}的公式填写)% 计算矩阵L的元素l_{ik}% L在A下三角, U在上三角(对角线为1) endfor k=1:n % 用代入法求解下三角方程组Ly=by(k)=b(k);3 %∑-==-=11,,2,1,kjj kjk knkylby33enddisp('方程组Ly=b的解:y=');disp(y');for k=n:-1:1 % 回代求解上三角方程组Ux=y x(k)=y(k);6 %∑+=-=-=nkjj kjk knnkxuyx11,,1,,666 enddisp('原方程组的解:x='); disp(x');《数值计算方法》实验3报告班级: 20##级####x 班 学号: 20##2409#### : ##X成绩:1. 实验名称实验3 解线性方程组的直接法(之Cholesky 分解) 2. 实验题目对矩阵A 进行Cholesky 分解,其中⎪⎪⎪⎪⎪⎭⎫⎝⎛----=3101141101421126A . 3. 实验目的理解矩阵的Cholesky 分解. 4. 基础理论矩阵的Cholesky 分解是指将矩阵n n ij a A ⨯=)(可以分解为一个下三角矩阵L 和L 转置的乘积,即A =LL T,其中L 各元素可依如下顺序公式计算⎪⎪⎩⎪⎪⎨⎧++=-=-=∑∑-=-=11112,,2,1,/)(k t kktk it ik ik k r kr kk kk nk k i l l l a l l a l其中k = 1,2,…,n .5. 实验环境操作系统:Windows xp ; 程序设计语言:VC++ 6. 实验过程(1)按计算公式依次先计算一列对角线上的元素l kk ,再计算这列其他元素l ik ,且对称位置的元素也取同一个值;(2)因为计算完l ij 后,a ij 就不再使用,为节省存储空间,将计算的l ij 仍存放在矩阵A 中的相应位置;(3)使用L 矩阵时需要根据元素所在位置取固定值或A 中相应位置的值.L 上三角部分为0,对角线和下三角部分为A 中对应的元素.算法的伪代码描述:Input :阶数n ;矩阵AOutput :矩阵L (合并存储在数组A 中)行号 伪代码注释1 for k ← 1 to n2∑-=-=112k r krkk kk l a l3 for i ← k to n4 ∑-=-=11/)(k t kk tk it ik ik l l l a l计算结果存放在a ij5 endfor6 endfor7return L输出L7. 结果与分析8. 附录:程序清单%************************************************************* %* 程 序 名:Cholesky.m * %* 程序功能:对称正定矩阵的Cholesky 分解. * %*************************************************************n=4; % 矩阵阶数 A=[6,2,1,-1; 2,4,1,0; 1,1,4,-1; -1,0,-1,3];disp('A ='); for i=1:n for j=1:nfprintf('%10.4f',A(i,j)); % 共占14位endfprintf('\n');% 一行完毕换行end% Cholesky 分解 for k=1:n % 计算对角线上的l _{kk}% 计算其他的l _{ik} % 和l _{ki}end % L 在A 下三角, L^T 在上三角disp('分解结果:'); disp('L='); for i=1:n for j=1:n if i>=j % 在下三角部分或对角线上, 则取A 对于的元素显示fprintf('%10.4f',A(i,j));else % 在上三角部分, 则显示0 fprintf('%10d',0); end endfprintf('\n'); % 换行 end《数值计算方法》实验3报告班级: 20##级####x 班 学号: 20##2409#### : ##X成绩:1. 实验名称实验3 解线性方程组的直接法(之改进的Cholesky 分解) 2. 实验题目对矩阵A 进行改进的Cholesky 分解,其中⎪⎪⎪⎪⎪⎭⎫⎝⎛----=3101141101421126A .3. 实验目的理解矩阵改进的Cholesky 分解. 4. 基础理论矩阵的改进的Cholesky 分解是指将矩阵n n ij a A ⨯=)(可以分解为一个单位下三角矩阵L 和对角矩阵D 与L 转置的乘积,即A =LDL T,其中L 和D 各元素可依如下顺序公式计算⎪⎪⎩⎪⎪⎨⎧++=-=-=∑∑-=-=11112,,2,1,/)(k t k kt it t ik ik k r kr r kk k nk k i d l l d a l l d a d其中k = 1,2,…,n .5. 实验环境操作系统:Windows xp ; 程序设计语言:VC++ 6. 实验过程(1)按计算公式依次先计算D 的一个元素d k ,再计算L 中这列的元素l ik ,且对称位置的元素也取同一个值;(2)因为计算完d k 和l ij 后,a kk 或a ij 就不再使用,为节省存储空间,将计算的a kk 或l ij 仍存放在矩阵A 中的相应位置;(3)使用L 矩阵时需要根据元素所在位置取固定值或A 中相应位置的值.L 对角线和上三角部分为0,下三角部分为A 中对应的元素;D 对角线为A 中对应的元素,其余都是0.算法的伪代码描述: Input :阶数n ;矩阵AOutput :矩阵L (合并存储在数组A 中)7. 结果与分析8. 附录:程序清单%************************************************************* %* 程 序 名:ImprovedCholesky.m * %* 程序功能:对称正定矩阵的改进的Cholesky 分解. * %*************************************************************n=4; % 矩阵阶数A=[6,2,1,-1; 2,4,1,0; 1,1,4,-1; -1,0,-1,3];disp('A =');for i=1:nfor j=1:nfprintf('%10.4f',A(i,j)); % 共占14位endfprintf('\n'); % 一行完毕换行end% Cholesky分解for k=1:n% 计算D对角线上的u_{kk}% 计算L的元素l_{ik}% 和L转置的元素l_{ki} end % L在A下三角, D在对角线disp('分解结果:');disp('L=');for i=1:nfor j=1:nif i>j % 在下三角部分, 则取A对于的元素显示fprintf('%10.4f',A(i,j));elseif i==j % 在对角线上, 则显示1fprintf('%10d',1);else % 在上三角部分, 则显示0fprintf('%10d',0);endendfprintf('\n'); % 换行enddisp('D='); for i=1:n for j=1:n if i==j % 在对角线上, 则取A 对于的元素显示fprintf('%10.4f',A(i,j));else % 其余显示0fprintf('%10d',0); end endfprintf('\n'); % 换行 end《数值计算方法》实验3报告班级: 20##级####x 班 学号: 20##2409#### : ##X 成绩:1. 实验名称实验3 解线性方程组的直接法(之追赶法) 2. 实验题目用追赶法求解线性方程组⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=⎪⎪⎪⎪⎪⎭⎫ ⎝⎛⎪⎪⎪⎪⎪⎭⎫ ⎝⎛-----101053001210023100124321x x x x 3. 实验目的熟悉解线性方程组的追赶法. 4. 基础理论对于系数矩阵为三对角矩阵的方程组,其Crout 分解可分解为⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛=⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛=------11111211122111122211n n nn n n nn n n t t t s a s a s a s b a c b a c b a c b A这样,解方程组可以由如下2步完成:“追”:,,,3,2,/)(,,/,/,1111111111n i s y a f y t a b s s c t s f y b s i i i i i i i i i i i i =-=-====-----其中:Tn f f ),,(1 为方程组的常数项,n t 没用;“赶”:.1,,2,1,,1 --=-==+n n i x t y x y x i i i i n n5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程在“追”的过程中,向量s 和y 都有n 个元素,t 只有n -1个元素,又1s 和1y 的计算公式与其它i s 和i y 不同,所以先单独计算1s 和1y ,然后在一个n -1次循环中,求其它i s 和i y 以与i t .由于在“追”的过程中,i b ,i c 和i f 在分别计算完对应的i s ,i t 和i y 后就不再使用,所以借用数组b ,c 和f 存储向量s ,t 和y ;同样在“赶”的过程中,i y 在计算完对应的i x 后就不再使用,所以再一次借用数组f 存储向量x .追赶法算法的伪代码描述:Input :阶数n ;三对角矩阵的三条对角线向量a ,b ,c ,常数项向量f Output :方程组的解x改进的追赶法算法的伪代码描述:Input :阶数n ;三对角矩阵的三条对角线向量a ,b ,c ,常数项向量f Output :方程组的解x7. 结果与分析8. 附录:程序清单%*************************************************************%* 程序名:ChaseAfter.m *%* 程序功能:用追赶法求解三对角线性方程组. *%*************************************************************clc;clear all;n=4;a=[0,-1,-1,-3];b=[2, 3, 2, 5];c=[-1, -2, -1, 0];f=[0, 1, 0, 1];% "追"s(1) = b(1);y(1) = f(1); % 先单独求s_1和y_1 for k = 1 : n-1% 再求t_i(i=1,2,…,n-1)% s_i(i=2,3,…,n)% y_i(i=2,3,…,n)end% "赶"x(n) = y(n); % 先单独求x_nfor k = n-1 : -1 : 1% 再求x_i(i=n-1,n-2, (1)endx=x' % 输出解向量-------------------------------------------------------------------------------------------------------------------改进的程序:%*************************************************************%* 程序名:ChaseAfter.m *%* 程序功能:用追赶法求解三对角线性方程组. *%*************************************************************clc;clear all;n=4;a=[0,-1,-1,-3];b=[2, 3, 2, 5];c=[-1, -2, -1, 0];f=[0, 1, 0, 1];% "追"% b(1)=b(1); % s_1仍在b_1中,不用重新计算y(1)=f(1)/b(1); % 先单独y_1for k=1:n-1% 再求t_i(i=1,2,…,n-1)% s_i(i=2,3,…,n)% y_i(i=2,3,…,n)end% "赶"% f(n)=f(n); % x_n等于y_n仍在f_n中for k=n-1:-1:1% 再求x_i(i=n-1,n-2, (1)endx=f' % 输出解向量《数值计算方法》实验4报告班级:20##级####x班学号:20##2409####:##X 成绩:1. 实验名称实验4 解线性方程组的迭代法(之Jacobi迭代)2. 实验题目用Jacobi迭代法求解线性方程组1231231232251223x x x x x x x x x +-=⎧⎪++=⎪⎨++=⎪⎪⎩任取3. 实验目的掌握解线性方程组的Jacobi 迭代法. 4. 基础理论将第i (n i ≤≤1)个方程i n in i i b x a x a x a =+++ 2211移项后得到等价方程ii n in i i i i i i i i i a x a x a x a x a b x /)(11,11,11------=++--便可构造出Jacobi 迭代公式,1,0,/)()()(11,)(11,)(11)1(=------=++--+k a x a x a x a x a b x ii k n in k i i i k i i i k i i k i . 5. 实验环境操作系统:Windows xp ; 程序设计语言:Matlab 6. 实验过程7. 结果与分析8. 附录:程序清单《数值计算方法》实验4报告班级: 20##级####x 班 学号: 20##2409#### : ##X 成绩:1. 实验名称实验4 解线性方程组的迭代法(之Gauss-Seidel 迭代) 2. 实验题目用Gauss-Seidel 迭代法求解线性方程组。

数值分析实验报告

数值分析实验报告

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

构建牛顿插值多项式。

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

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

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

分析误差。

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

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

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

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

进行消元操作。

回代求解方程。

输出解向量。

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

计算方法与实习的实验报告范文

计算方法与实习的实验报告范文

计算方法与实习的实验报告范文1舍入误差与数值稳定性1.1目的与要求(1)通过上机编程,复习巩固以前所学程序设计语言及上机操作指令;(2)通过上机计算,了解舍入误差所引起的数值不稳定性。

1.2舍入误差和数值稳定性1.2.1概要舍入误差在计算方法中是一个很重要的概念。

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

因此,选取稳定的算法在实际计算中是十分重要的。

1.2.2程序和实例对n=0,1,2,…,40计算定积分1某n某5n0d某。

算法利用递推公式yn=ln6-ln50.182322。

程序如下:#include#includevoidmain(){doubley_0=log(6.0/5.0),y_1;intn=1;printf(\while(1){y_1=1.0/n-5某y_0;printf(\if(n>=40)break;y_0=y_1;n++;if(n%2==0)printf(\}}1n5y(n=1,2,…,40)取y0=11某50d某=2方程求根2.1实验目的(1)通过对二分法与牛顿迭代法作编程练习与上级运算,进一步体会二分法与牛顿迭代法的不同特点;(2)编写割线迭代法的程序,求非线性迭代法的解,并与牛顿迭代法作比较。

2.2二分法2.2.1算法给定区间[a,b],并设f(a)与f(b)符号相反,取ε为根的容许误差,δ为|f(某)|的容许误差。

1令c=(a+b)/2;2如果(c-a)0,则令a=c;否则令b=c,重复1,2,3。

2.2.2程序与实例求方程f(某)=某4某100在1.5附近的根。

程序如下:#include#include#defineep5e-6#definedelta1e-6floatBiection(floata,floatb,float(某f)(float)){floatc,fc,fa=(某f)(a),fb=(某f)(b);intn=1;printf(\二分次数\\t\\tc\\t\\tf(c)\\n\while(1){if(fa某fb>0){printf(\不能用二分法求解\c=(a+b)/2,fc=(某f)(c);printf(\if(fab(fc)returnc;}floatf(float某){return某某某某某+4某某某某-10;32}intmain(){floata=1,b=2;float某;某=Biection(a,b,f);printf(\方程的根为%f\return0;}3线性方程组数值解法3.1目的与要求(1)熟悉求解线性方程组的有关理论和方法;(2)会编制列主元消去法、LU分解法、雅克比及高斯赛德尔迭代法的程序;(3)通过实际计算,进一步了解各种方法的优缺点,选择合适的数值方法。

数值分析实验报告

数值分析实验报告

实验五 解线性方程组的直接方法实验5.1 (主元的选取与算法的稳定性) 问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。

但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss 消去法作为数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选择。

主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。

实验内容:考虑线性方程组n n n R b R A b Ax ∈∈=⨯,,编制一个能自动选取主元,又能手动选取主元的求解线性方程组的Gauss 消去过程。

实验要求:(1)取矩阵⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=1415157,6816816816 b A ,则方程有解T x )1,,1,1(* =。

取n=10计算矩阵的条件数。

让程序自动选取主元,结果如何?(2)现选择程序中手动选取主元的功能。

每步消去过程总选取按模最小或按模尽可能小的元素作为主元,观察并记录计算结果。

若每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。

(3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。

(4)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。

重复上述实验,观察记录并分析实验结果。

思考题一:(Vadermonde 矩阵)设⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=∑∑∑∑====n i i n n i i ni i n i i n n n n n n nx x x x b x x x x x x x x x x x x A 002010022222121102001111 ,, 其中,n k k x k ,,1,0,1.01 =+=,(1)对n=2,5,8,计算A 的条件数;随n 增大,矩阵性态如何变化?(2)对n=5,解方程组Ax=b ;设A 的最后一个元素有扰动10-4,再求解Ax=b(3)计算(2)扰动相对误差与解的相对偏差,分析它们与条件数的关系。

数值分析实验报告

数值分析实验报告

数值分析实验报告数值分析实验报告导言数值分析是一门研究利用计算机进行数值计算和数值模拟的学科。

通过数值分析,我们可以利用数学方法和计算机技术解决实际问题,提高计算效率和精度。

本实验报告将介绍我们在数值分析实验中所进行的研究和实践。

一、实验目的本次实验的目的是通过数值分析方法,研究和解决实际问题。

具体而言,我们将通过数值计算方法,对某个物理模型或数学模型进行求解,并分析结果的准确性和稳定性。

二、实验方法我们采用了有限差分法作为数值计算的方法。

有限差分法是一种常用的数值分析方法,适用于求解偏微分方程和差分方程。

通过将连续的问题离散化为离散的差分方程,我们可以得到数值解。

三、实验步骤1. 确定问题:首先,我们需要确定要研究的问题。

在本次实验中,我们选择了热传导问题作为研究对象。

2. 建立数学模型:根据研究问题的特点,我们建立了相应的数学模型。

在热传导问题中,我们可以利用热传导方程描述热量的传递过程。

3. 离散化:为了进行数值计算,我们需要将连续的问题离散化为离散的差分方程。

在热传导问题中,我们可以将空间和时间进行离散化。

4. 求解差分方程:通过求解离散化的差分方程,我们可以得到数值解。

在热传导问题中,我们可以利用迭代法或直接求解法得到数值解。

5. 分析结果:最后,我们需要对数值解进行分析。

我们可以比较数值解和解析解的差异,评估数值解的准确性和稳定性。

四、实验结果通过数值计算,我们得到了热传导问题的数值解。

我们将数值解与解析解进行比较,并计算了误差。

结果显示,数值解与解析解的误差在可接受范围内,证明了数值计算的准确性。

此外,我们还对数值解进行了稳定性分析。

通过改变离散化步长,我们观察到数值解的变化趋势。

结果显示,随着离散化步长的减小,数值解趋于稳定,证明了数值计算的稳定性。

五、实验总结通过本次实验,我们深入了解了数值分析的基本原理和方法。

我们通过数值计算,成功解决了热传导问题,并对数值解进行了准确性和稳定性分析。

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

矿产资源开发利用方案编写内容要求及审查大纲
矿产资源开发利用方案编写内容要求及《矿产资源开发利用方案》审查大纲一、概述
㈠矿区位置、隶属关系和企业性质。

如为改扩建矿山, 应说明矿山现状、
特点及存在的主要问题。

㈡编制依据
(1简述项目前期工作进展情况及与有关方面对项目的意向性协议情况。

(2 列出开发利用方案编制所依据的主要基础性资料的名称。

如经储量管理部门认定的矿区地质勘探报告、选矿试验报告、加工利用试验报告、工程地质初评资料、矿区水文资料和供水资料等。

对改、扩建矿山应有生产实际资料, 如矿山总平面现状图、矿床开拓系统图、采场现状图和主要采选设备清单等。

二、矿产品需求现状和预测
㈠该矿产在国内需求情况和市场供应情况
1、矿产品现状及加工利用趋向。

2、国内近、远期的需求量及主要销向预测。

㈡产品价格分析
1、国内矿产品价格现状。

2、矿产品价格稳定性及变化趋势。

三、矿产资源概况
㈠矿区总体概况
1、矿区总体规划情况。

2、矿区矿产资源概况。

3、该设计与矿区总体开发的关系。

㈡该设计项目的资源概况
1、矿床地质及构造特征。

2、矿床开采技术条件及水文地质条件。

相关文档
最新文档