数值分析实验报告(一)算法的数值稳定性实验

合集下载

数值算法的稳定性

数值算法的稳定性

用上式计算 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. 掌握数值方法在求解实际问题中的应用;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. 最小二乘法曲线拟合最小二乘法在拟合曲线时,误差较小,适用于数据点较多的情况。

数值分析实验报告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或者更大,重复上述实验过程,观察记录并分析 不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元

数值分析上机实验

数值分析上机实验

刘力辉 2010210804011.“画圆为方”问题也是古希腊人所提出几何三大难题中的另一个问题。

即求作一个正方形,使其面积等于已知圆的面积。

不妨设已知圆的半径为 R = 1,试用数值试验显示“画圆为方”问题计算过程中的误差。

(1)MATLAB 程序:y=pi^(1/2); % to generate 15-bit value of square root of pi b=1; d=1; for k=1:8 b=b*10;d=d/10; % b and d combined to control the digit of x x=d*fix(b*y); s(k)=x^3; l(k)=x; endformat long [l',s'](2)误差分析:2. 设,I x xd x n n=+⎰501由 x n = x n + 5 x n – 1 – 5 x n – 1 可得递推式 I n = – 5I n – 1 + 1/ n(1)从 I 0 尽可能精确的近似值出发,利用递推公式:I I nn n =-+-511 ( n = 1,2,…20)计算从 I 1 到 I 20 的近似值;(2)从 I 30 较粗糙的估计值出发,用递推公式:I I nn n -=-+11515 ( n= 30,29, …, 3, 2 )计算从I 1 到 I 20 的近似值;(3) 分析所得结果的可靠性以及出现这种现象的原因。

I 0 =dx x⎰+1051=ln (5+x )10|=ln 6-ln 5 所以I0≈0.18232155679395format longI0=log2(6)/log2(exp(1))-log2(5)/log2(exp(1)) % calculate the value of I0=ln6-ln5 for n=1:20I0=-5*I0+1/n; % recycling equation between I(n+1) and I(n) s(n)=I0; end s'则计算结果为:表1I1 0.0883922160302300 I11 0.0140713362538500 I2 0.0580389198488700 I12 0.0129766520640700 I3 0.0431387340890000 I13 0.0120398166027400 I4 0.0343063295550100 I14 0.0112294884148600 I5 0.0284683522249700 I15 0.0105192245923700 I6 0.0243249055418100 I16 0.0099038770381400 I7 0.0212326151481100 I17 0.0093041442210800 I8 0.0188369242594600 I18 0.0090348344501700 I9 0.0169264898137900 I19 0.0074574066965100 I10 0.0153675509310500I20 0.0127129665174600从计算的数据看出I 20=0.0127129665174600 > I 19=0.0074574066965100又I n 的积分范围为0~1,所以应该有I n >I n+1。

数值分析实验指导书资料

数值分析实验指导书资料

数值实验报告一、实验名称误差传播与算法稳定性 二、实验目的1.理解数值计算稳定性的概念。

2.了解数值计算方法的必要性。

3.体会数值计算的收敛性与收敛速度。

三、实验内容计算dx x x I nn ⎰+=110,1,2,,10n =四、算法描述 由 dx x x I nn ⎰+=110,知 dx x x I n n ⎰+=--101110则ndx x dx x x x I I n n n n n 1101010101111==++=+⎰⎰---可得递推关系 1.=n I 1101--n I n,10,,2,1 =n 2.)1(1011n n I nI -=- ,1,,9,10 =n 下面分别以1,2递推关系求解 方案1 =n I 1101--n I n,10,,2,1 =n 当0=n 时,=+=⎰dx x I 10101㏑=1011㏑1.1 , 递推公式为⎪⎩⎪⎨⎧==-=-1.1ln 10,,2,1,10101I n I nI n n (1) 方案2 )1(1011n n I nI -=- ,1,,9,10 =n 当10<<x 时, n n n x x x x 10110111≤+≤则dx x dx x x dx x n n n 1011011110101⎰⎰⎰≤+≤即)1(101)1(111+≤≤+n I n n 取递推初值 )110(22021])110(101)110(111[2110+=+++≈I 递推公式为⎪⎪⎩⎪⎪⎨⎧+==-=-)110(220211,,9,10),1(101101I n I n I n n (2)取递推公式(1)中的初值095310.01.1ln 0≈=I ,得⎪⎩⎪⎨⎧≈=-=-095310.010,,2,1 ,10101I n I nI n n取递推公式(2)中的初值008678.010≈I ,得⎪⎩⎪⎨⎧≈=-=-008678.01,,9,10),1(101101I n I nI n n 五、程序流程图由于实验方案明显、简单,实现步骤及流程图省略。

数值分析实验 实验报告

数值分析实验 实验报告

数值分析实验实验报告数值分析实验实验报告引言在现代科学与工程领域,数值分析是一项重要的技术手段。

通过数值方法,我们可以利用计算机模拟和解决各种实际问题,如物理、化学、生物、经济等领域中的方程求解、优化问题、数据拟合等。

本实验旨在通过实际案例,探讨数值分析的应用和效果。

实验一:方程求解首先,我们考虑一个简单的方程求解问题。

假设我们需要求解方程f(x) = 0的根,其中f(x)是一个在给定区间[a, b]上连续且单调的函数。

为了实现这个目标,我们可以采用二分法、牛顿法、弦截法等数值方法。

在本实验中,我们选择使用二分法来求解方程f(x) = 0。

这种方法的基本思想是通过不断缩小区间[a, b]的范围,直到找到一个近似的根。

我们首先选取一个中间点c,计算f(c)的值,然后根据f(c)与0的关系,将区间[a, b]分成两部分。

重复这个过程,直到找到满足精度要求的根。

实验二:数据拟合接下来,我们考虑一个数据拟合的问题。

假设我们有一组离散的数据点,我们希望找到一个函数,使得该函数与这些数据点的拟合误差最小。

为了实现这个目标,我们可以采用最小二乘法等数值方法。

在本实验中,我们选择使用最小二乘法来进行数据拟合。

这种方法的基本思想是通过最小化数据点与拟合函数之间的误差平方和,来确定拟合函数的参数。

我们首先选择一个拟合函数的形式,如线性函数、多项式函数等。

然后,通过最小化误差平方和的方法,计算出拟合函数的参数。

实验三:优化问题最后,我们考虑一个优化问题。

假设我们需要在给定的约束条件下,找到一个使得目标函数取得最大或最小值的变量。

为了实现这个目标,我们可以采用梯度下降法、遗传算法等数值方法。

在本实验中,我们选择使用梯度下降法来解决优化问题。

这种方法的基本思想是通过迭代的方式,不断调整变量的取值,直到找到一个满足约束条件的最优解。

我们首先计算目标函数关于变量的梯度,然后根据梯度的方向和大小,更新变量的取值。

通过不断迭代,我们可以逐步接近最优解。

《数值分析》实验报告书

《数值分析》实验报告书

N4(0.895) function [y,R]= newcz(X,Y,x,M) x=0.895; M=4; X=[0.4,0.55,0.65,0.8,0.9]; Y=[0.41075,0.57815,0.69675,0.88811,1.02652];
n=length(X); m=length(x); for t=1:m z=x(t); A=zeros(n,n);A(:,1)=Y'; s=0.0; p=1.0; q1=1.0; c1=1.0; for j=2:n for i=j:n A(i,j)=(A(i,j-1)-A(i-1,j-1))/(X(i)-X(i-j+1)); end q1=abs(q1*(z-X(j-1)));c1=c1*j; end C=A(n,n);q1=abs(q1*(z-X(n))); for k=(n-1):-1:1 C=conv(C,poly(X(k)));d=length(C); C(d)=C(d)+A(k,k); end y(k)= polyval(C, z); end R=M*q1/c1; 运行结果: ans = 1.0194
实验三、解线性方程组的直接法
解线性方程组的直接法是指经过有限步运算后能求得方程组精确解
的方法。但由于实际计算中舍入误差是客观存在的,因而使用这类方法 也只能得到近似解。目前较实用的直接法是古老的高斯消去法的变形, 即主元素消去法及矩阵的三角分解法。引进选主元的技巧是为了控制计 算过程中舍入误差的增长,减少舍入误差的影响。一般说来,列主元消 去法及列主元三角分解法是数值稳定的算法,它具有精确度较高、计算 量不大和算法组织容易等优点,是目前计算机上解中、小型稠密矩阵方 程组可靠而有效的常用方法。
Y=[0.82741,0.82659,0.82577,0.82495]; n=length(X); m=length(x); for i=1:m z=x(i);s=0.0; for k=1:n p=1.0; q1=1.0; c1=1.0; for j=1:n if j~=k p=p*(z-X(j))/(X(k)-X(j)); end q1=abs(q1*(z-X(j))); c1=c1*j; end s=p*Y(k)+s; end y(i)=s; end R=M.*q1./c1; 运行结果: ans = 0.8261 2. N3(0.596) function [y,R]= newcz(X,Y,x,M) x=0.596; M=3;

数值分析实验报告

数值分析实验报告

《数值分析》实验报告学院:计算机科学与软件学院姓名: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语言的艰难,能够将实验步骤转换成流程图并编写出完整的实验代码,在经过多次调试、改正后得到正确的程序和结果。

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

算法的数值稳定性实验

算法的数值稳定性实验

专业 序号 姓名 日期实验1 算法的数值稳定性实验【实验目的】1.掌握用MATLAB 语言的编程训练,初步体验算法的软件实现;2.通过对稳定算法和不稳定算法的结果分析、比较,深入理解算法的数值稳定性及其重要性。

【实验内容】1.计算积分 ()dx a x x I n⎰+=10)(n (n=0,1,2......,10) 其中a 为参数,分别对a=0.05及a=15按下列两种方案计算,列出其结果,并对其可靠性,说明原因。

2.方案一 用递推公式 n aI I n 11n +-=- (n=1,2,......,10) 递推初值可由积分直接得)1(0aa In I += 3. 方案二 用递推公式 )1(11-n nI a I n +-= (n=N,N -1,......,1) 根据估计式 ()()()11111+<<++n a I n a n 当1n a +≥n 或()()n1111≤<++n I n a 当1n n a 0+<≤ 取递推初值为 ()()()()11212])1(1111[21N +++=++++≈N a a a N a N a I 当1a +≥N N 或 ()()]1111[21NN a I N +++= 当1a 0+<≤N N 计算中取N=13开始【程序如下】: % myexp1_1.m --- 算法的数值稳定性实验% 见 P11 实验课题(一)%function yyjjglobal n aN = 20; % 计算 N 个值a =0.05;%或者a=15% %--------------------------------------------% % [方案I] 用递推公式%I(k) = - a*I(k-1) + 1/k%I0 =log((a+1)/a); % 初值I = zeros(N,1); % 创建 N x 1 矩阵(即列向量),元素全为零I(1) =-a*I0+1;for k = 2:NI(k) =-a*I(k-1)+1/k;end% %--------------------------------------------% % [方案II] 用递推公式%I(k-1) = ( - I(k) + 1/k ) / a%II = zeros(N,1);if a >= N/(N+1)II(N)=(2*a+1)/(2*a*(a+1)*(N+1));elseII(N) =(1/(a+1)/(N+1)+1/N)/2;endfor k = N:-1:2II(k-1) =(-II(k)+1/k)/a;end% %--------------------------------------------% % 调用 matlab 高精度数值积分命令 quadl 计算以便比较III = zeros(N,1);for k = 1:Nn = k;III(k) = quadl(@f,0,1);end% %--------------------------------------------% % 显示计算结果clcfprintf('\n 方案I结果方案II结果精确值') for k = 1:N,fprintf('\nI(%2.0f) %17.7f %17.7f %17.7f',k,I(k),II(k),III(k))end% %--------------------------------------------function y = f(x) % 定义函数global n a % 参量 n 为全局变量y =x.^n./(a+x); % ★注意:这里一定要 '点' 运算return% %--------------------------------------------【运行结果如下】:当a=0.05方案I结果方案II结果精确值I( 1) 0.8477739 -919648916620722180000.0000000 0.8477739 I( 2) 0.4576113 45982445831036109000.0000000 0.4576113 I( 3) 0.3104528 -2299122291551805700.0000000 0.3104528 I( 4) 0.2344774 114956114577590290.0000000 0.2344776 I( 5) 0.1882761 -5747805728879515.0000000 0.1882761I( 6) 0.1572529 287390286443975.9400000 0.1572529I( 7) 0.1349945 -14369514322198.6540000 0.1349945I( 8) 0.1182503 718475716110.0577400 0.1182503I( 9) 0.1051986 -35923785805.3917770 0.1051986I(10) 0.0947401 1796189290.3695889 0.0947401I(11) 0.0861721 -89809464.4275704 0.0861724I(12) 0.0790247 4490473.3047119 0.0790247I(13) 0.0729718 -224523.5883125 0.0729718I(14) 0.0677800 11226.2508442 0.0677800I(15) 0.0632777 -561.2458755 0.0632777I(16) 0.0593361 28.1247938 0.0593361I(17) 0.0558567 -1.3474162 0.0558567I(18) 0.0527627 0.1229264 0.0527627I(19) 0.0499934 0.0464853 0.0499934I(20) 0.0475003 0.0476757 0.0475003当a=15方案I结果方案II结果精确值I( 1) 0.0319222 0.0319222 0.0319222I( 2) 0.0211673 0.0211673 0.0211673I( 3) 0.0158245 0.0158245 0.0158245I( 4) 0.0126326 0.0126326 0.0126326I( 5) 0.0105112 0.0105112 0.0105112I( 6) 0.0089993 0.0089993 0.0089993I( 7) 0.0078674 0.0078674 0.0078674I( 8) 0.0069883 0.0069883 0.0069883I( 9) 0.0062862 0.0062859 0.0062859I(10) 0.0057064 0.0057117 0.0057117I(11) 0.0053136 0.0052336 0.0052337I(12) 0.0036289 0.0048293 0.0048296I(13) 0.0224896 0.0044830 0.0044838I(14) -0.2659159 0.0041831 0.0041831I(15) 4.0554050 0.0039207 0.0039207I(16) -60.7685756 0.0036893 0.0036893I(17) 911.5874579 0.0034837 0.0034837I(18) -13673.7563129 0.0033002 0.0032998I(19) 205106.3973248 0.0031283 0.0031344I(20) -3076595.9098724 0.0030754 0.0029847>>【结果分析】:1、综上所述,当a=0.05的时候,方案二算法的结果从I(20)开始计算,刚开始的时候与精确解相差不大,但是随着计算的进行,误差变得越来越大,最终与原来的精确解相差十分巨大,而方案一算法的数值结果始终与精确解相差不大,是稳定的算法。

数值分析实验作业,gauss消去法的数值稳定性分析

数值分析实验作业,gauss消去法的数值稳定性分析

实验3.1 Gauss 消去法的数值稳定性试验实验目的:观察和理解Gauss 消元过程中出现小主元(即)(k kka 很小)时引起的方程组解的数值不稳定性。

实验内容:求解方程组b Ax =,其中(1)⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡⨯=11212592.1121-130.6-291.51314.59103.015-1A ,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=2178.4617.591b ; (2)⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡----=2010151526990999999999.23107102A ,⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=15019000000000.582b .实验要求:(1) 计算矩阵的条件数,判断系数矩阵是良态的还是病态的。

(2) 用Gauss 列主元消去法求得L 和U 及解向量421,R x x ∈.(3) 用不选主元的Gauss 消去法求得L ~和U ~及解向量421~,~R x x ∈.(4) 观察小主元并分析其对计算结果的影响.程序如下:计算矩阵条件数及Gauss 列主元消去法:format longengA1=[0.3e-15 59.14 3 1;5.291 -6.130 -1 2;11.2 9 5 2;1 2 1 1]; b1=[59.17;46.78;1;2]; n=4;k2=cond(A1) %k2为矩阵的条件数;for k=1:n-1a=max(abs(A1(k:n,k))); [p,k]=find(A1==a); B=A1(k,:);c=b1(k);A1(k,:)=A1(p,:);b1(k)=b1(p); A1(p,:)=B;b1(p)=c; if A1(k,k)~=0A1(k+1:n,k)=A1(k+1:n,k)/A1(k,k);A1(k+1:n,k+1:n)=A1(k+1:n,k+1:n)-A1(k+1:n,k)*A1(k,k+1:n); else break end endL1=tril(A1,0); for i=1:n L1(i,i)=1; end L=L1U=triu(A1,0) for j=1:n-1b1(j)=b1(j)/L(j,j);b1(j+1:n)=b1(j+1:n)-b1(j)*L(j+1:n,j); endb1(n)=b1(n)/L(n,n); for j=n:-1:2b1(j)=b1(j)/U(j,j);b1(1:j-1)=b1(1:j-1)-b1(j)*U(1:j-1,j); endb1(1)=b1(1)/U(1,1); x1=b1运行结果如下: K2=68.43;⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡---⨯=-14929.00202.00893.0011755.04724.00011079.2600118L⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-=801.0000231.1835.2001314.5902592.11U 1x =[18.9882;3.3378;-34.747;-33.9865] 不选主元的Gauss 消去法程序:clearformat longengA1=[0.3e-15 59.14 3 1;5.291 -6.130 -1 2;11.2 9 5 2;1 2 1 1]; b1=[59.17;46.78;1;2]; n=4;for k=1:n-1A1(k+1:n,k)=A1(k+1:n,k)/A1(k,k);A1(k+1:n,k+1:n)=A1(k+1:n,k+1:n)-A1(k+1:n,k)*A1(k,k+1:n); endL1=tril(A1,0); for i=1:n L1(i,i)=1; end L=L1U=triu(A1,0) for j=1:n-1b1(j)=b1(j)/L(j,j);b1(j+1:n)=b1(j+1:n)-b1(j)*L(j+1:n,j); endb1(n)=b1(n)/L(n,n); for j=n:-1:2b1(j)=b1(j)/U(j,j);b1(1:j-1)=b1(1:j-1)-b1(j)*U(1:j-1,j); endb1(1)=b1(1)/U(1,1); x1=b1程序运行结果如下:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⨯⨯⨯=10189.010333.3011168.21033.3700110637.170001~151515L⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎣⎡--⨯-⨯-⨯-⨯=-5.000816010637.171091.5210043.101314.59103.0~15151815U ]0;0;0005.1;6848.23[~1=x同理可得2A 对应的系数矩阵条件数及Gauss 列主元消去法求解结果: K2=8.994;⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡-⨯=1333.04.0001104.0-3.0-0015.0000112-L ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡--=36667.300030.26005.155.2010710U ]0.1;;0.1;0.1;10444.0[152-⨯=-x不选主元的Gauss 消去法结果:⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⨯⨯=1400.0109999.0-001104998.2-5.00013.0-0001~1212L ⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⨯⨯⨯--=-3667.3000107495.5109987.14003.26100.1010710~121212U ]000145.1;99994.0;000.1;1045.1[~52-⨯-=-x实验4.5 三次样条插值函数的收敛性问题提出:多项式插值不一定收敛的,即插值的节点多,效果不一定就好。

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

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

第1篇一、实验目的本次实验旨在通过数值分析的方法,对工程实际问题进行建模、求解和分析。

通过学习数值方法的基本原理和算法,提高解决实际工程问题的能力。

二、实验内容1. 线性方程组的求解2. 矩阵特征值与特征向量的计算3. 函数插值与曲线拟合4. 数值微分与积分三、实验步骤1. 线性方程组的求解(1)编写程序实现高斯消元法、克劳斯消元法和列主元素法(2)设计输入界面,用户输入增广矩阵的行和列,填写系数及常数项(3)分别运用三种方法求解线性方程组,比较求解结果的正确性、数值稳定性和计算效率2. 矩阵特征值与特征向量的计算(1)编写程序实现幂法、QR算法和逆幂法(2)设计输入界面,用户输入矩阵的行和列,填写矩阵元素(3)分别运用三种方法计算矩阵的特征值与特征向量,比较求解结果的准确性和计算效率3. 函数插值与曲线拟合(1)编写程序实现拉格朗日插值、牛顿插值和样条插值(2)设计输入界面,用户输入函数的自变量和函数值,选择插值方法(3)分别运用三种方法进行函数插值,比较插值结果的准确性和光滑性4. 数值微分与积分(1)编写程序实现有限差分法、龙格-库塔法和辛普森法(2)设计输入界面,用户输入函数的导数或积分的上下限,选择数值方法(3)分别运用三种方法进行数值微分和积分,比较求解结果的准确性和计算效率四、实验结果与分析1. 线性方程组的求解通过实验,我们发现列主元素法在求解线性方程组时具有较好的数值稳定性,计算效率也较高。

而高斯消元法和克劳斯消元法在处理大型稀疏矩阵时存在一定的困难。

2. 矩阵特征值与特征向量的计算实验结果表明,QR算法和逆幂法在计算矩阵特征值与特征向量时具有较高的准确性和计算效率。

幂法在处理大型稀疏矩阵时表现出较好的性能。

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)扰动相对误差与解的相对偏差,分析它们与条件数的关系。

数值分析实验报告(一)算法的数值稳定性实验

数值分析实验报告(一)算法的数值稳定性实验
I(1)=0.6321;
for i=2:10;
I(i)=1-(i-1)*I(i-1);
End
I
五、教师评语(或成绩)
教师签字:
年月日
三、实验内容及要求:
1.用Matlab语言编写按递推公式
计算 (n=0,1,2,……)的程序,并取I0=0.6321,计算n=0,1,2,…,9时In的值。
2.用Matlab语言编写按递推公式
计算 (n=0,1,2,……,9)的值程序。
3.分析比较两种算法的数值稳定性。
四、实验步骤(或记录)
I=zeros(10,1);
数值分析实验报告
姓名
学号
系别
数学系
班级
主讲教师
王丹
指导教师
王丹
实验日期
专业
课程名称
数值分析
同组实验者

一、实验名称:
实验一、算法的数值稳定性实验
二、实验目的:
1对稳定算法和不稳定算法的结果分析、比较,深入理解算法的数值稳定性及其重要性。

数值分析实验报告

数值分析实验报告

数值分析A实验报告目录第1章实验3.1(主元的选取与算法的稳定性) (1)1.1 问题提出 (1)1.2 实验内容 (1)1.3 实验要求 (1)1.4 实验程序 (2)1.5 实验结果 (4)第2章实验3.3(病态的线性方程组的求解) (8)2.1 问题提出 (8)2.2 实验内容 (8)2.3 实验要求 (8)2.4 实验程序 (8)2.5 实验结果 (11)第3章实验4.1(算法设计与比较) (14)3.1 问题提出 (14)3.2 实验内容 (14)3.3 实验要求 (14)3.4 实验程序 (14)3.5 实验结果 (16)第1章实验3.1(主元的选取与算法的稳定性)1.1 问题提出Gauss消去法是我们在线性代数中已经熟悉的。

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

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

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

1.3 实验要求(1)取矩阵6186186186A⎛⎫⎪⎪⎪=⎪⎪⎪⎝⎭,7151514b⎛⎫⎪⎪⎪=⎪⎪⎪⎝⎭,则方程有解()1,1,,1Tx*= 。

取n10=计算矩阵的条件数。

按顺序Gauss消元法求解,结果如何?(2)现选择程序中手动选取主元的功能。

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

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

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

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

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

一、实验名称:
实验一、算法的数值稳定性实验
二、实验目的:
1.进行Matlab语言的编程训练,初步体验算法的软件实现;
2.通过对稳定算法和不稳定算法的结果分析、比较,深入理解算法的数值稳定性及其重要性。
三、实验内容及要求:
1.用Matlab语言编写按递推公式
计算 (n=0,1,2,……)的程序,并取I0=0.6321,计算n=0,1,2,…,9时In的值。
2.用Matlab语言编写按递推公式
计算 (n=0,1,2,……,9)的值程序。
3.分析比较两种算法的数值稳定性。
四、实验步骤(或记录)
I=zeros(10,1);
I(1)=0.6321;
for i=2:10;
I(i)=1-(i-1)*I(i-1);
End
I
五、教师评语(或成绩)
教师签字:
年月日
数学系数学系数学系班级班级班级主讲教师主讲教师主讲教师指导教师指导教师指导教师实验日期实验日期实验日期专业专业专业课程名称课程名称课程名称数值分析数值分析数值分析同组实验者同组实验者同组实验者一实验名称
数值分析实验报告
姓名
学号
系别
数学系
班级
主讲教师
王丹
指导教师
王丹
实验日期
专业
课程名称
数值分析
同组实验者
相关文档
最新文档