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

合集下载

数值计算方法实验报告

数值计算方法实验报告

本科实验报告课程名称:数值计算方法实验地点:计算机科学与技术学院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为上三角阵.六、讨论、心得本次试验中,感觉是最难的一次,完全主元素消元法程序编写过程相对来说花了好长时间。

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

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

数值计算实验报告

数值计算实验报告

数值计算实验报告数值计算实验报告引言:数值计算是一门研究利用计算机进行数值计算的学科,它在科学研究和工程实践中具有重要的应用价值。

本实验报告旨在通过对数值计算实验的探索和分析,展示数值计算在解决实际问题中的应用和效果。

一、实验目的本次实验的主要目的是研究数值计算在求解非线性方程和数值积分中的应用。

通过实验,我们将探索不同数值计算方法的优劣,并分析其适用范围和精度。

二、实验原理1. 非线性方程求解非线性方程是指未知数与其系数之间存在非线性关系的方程。

常见的求解方法有二分法、牛顿法和割线法等。

本实验将比较不同方法在求解非线性方程时的收敛速度和计算精度。

2. 数值积分数值积分是通过将一个函数在一定区间上进行离散化,然后进行求和来近似计算定积分的方法。

本实验将使用复合梯形公式和复合辛普森公式来计算定积分,并比较两种方法的精度和计算效率。

三、实验步骤1. 非线性方程求解实验首先,我们选择一个非线性方程作为实验对象,例如:f(x) = x^3 - 2x - 5。

然后,我们使用二分法、牛顿法和割线法分别求解该方程,并记录每种方法的迭代次数和解的精度。

2. 数值积分实验我们选取一个函数作为被积函数,例如:f(x) = sin(x)。

然后,我们使用复合梯形公式和复合辛普森公式对该函数在一定区间上进行积分,并记录每种方法的计算结果和误差。

四、实验结果与分析1. 非线性方程求解结果通过实验,我们得到了使用二分法、牛顿法和割线法求解非线性方程的结果。

比较三种方法的迭代次数和解的精度,我们可以发现牛顿法收敛速度较快,但对初始值的选取较为敏感;割线法在收敛速度和精度上相对稳定;而二分法则收敛速度较慢,但对初始值的选取要求较低。

2. 数值积分结果通过实验,我们得到了使用复合梯形公式和复合辛普森公式进行数值积分的结果。

比较两种方法的计算结果和误差,我们可以发现复合辛普森公式具有更高的精度,但计算效率相对较低;而复合梯形公式计算速度较快,但精度相对较低。

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

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

数值计算方法上机实验报告
一、实验目的
本次实验的主要目的是熟悉和掌握数值计算方法,学习梯度下降法的
原理和实际应用,熟悉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 -+=。

数值计算基础实验报告(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

数值分析实验报告1
问题提出:考虑一个高次的代数多项式
显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动
其中是一个非常小的数。这相当于是对(1。1)中的系数作一个小的扰动.我们希望比较(1。1)和(1。2)根的差别,从而分析方程(1。1)的解对扰动的敏感性.
实验内容:为了实现方便,我们先介绍两个Matlab函数:“roots”和“poly”。
(3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。
(4)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。重复上述实验,观察记录并分析实验结果。
实验过程:
程序:
建立M文件:
function x=gauss(n,r)
实验总结:
利用MATLAB来进行病态问题的实验,虽然其得出的结果是有误差的,但是可以很容易的得出对一个多次的代数多项式的其中某一项进行很小的扰动,对其多项式的根会有一定的扰动的,所以对于这类病态问题可以借助于MATLAB来进行问题的分析。
学号:06450210
姓名:万轩
实验二插值法
实验2.1(多项式插值的振荡现象)
学号:06450210
姓名:万轩
实验五解线性方程组的直接方法
实验5。1(主元的选取与算法的稳定性)
问题提出:Gauss消去法是我们在线性代数中已经熟悉的.但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss消去法作为数值算法的稳定性呢?Gauss消去法从理论算法到数值算法,其关键是主元的选择。主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题.
其中若变量a存储n+1维的向量,则该函数的输出u为一个n维的向量。设a的元素依次为,则输出u的各分量是多项式方程

数值计算方法实验报告

数值计算方法实验报告

数值计算⽅法实验报告《数值计算⽅法》实验报告实验题⽬⼆分法求⾮线性⽅程的根专业班级11级数学师范⼆班姓名李洪学号201102024056指导⽼师李梦联系电话188********⼀、实验⽬的熟悉⼆分法求⽅程近似根的数值⽅法,与⽤计算器解出的值进⾏⽐较,并学会误差分析。

⼆、实验原理⼆分法的基本思路是通过计算隔根区间的中点,逐步将隔根区间缩⼩,从⽽可得⽅程的近似根数列}{n x 。

(≤-+1*k x x ?)三、实验内容已知0)()3(3=-=-e x x f 在[]1,0上有⼀个实根*x ,0)1(0)0(>本实验中的⽤到的求根⽅法有①⼆分法,②计算器求根。

四、实验步骤1.输⼊:a ,b 值及精度控制?量;2.if 0)()(>b f a f then 返回第1步,重新输⼊a ,b 值else 转第3步;3.while ?>-b a 时做(1))(21b a x +=,计算)(x f ;if )(x f =0 then 输出x ,停机。

(2)if0)()(4.输出)(21b a x +=。

五、 Matlab 源程序1.erfen.m:function [c,err,yc]=erfen(f,a,b,delta)ya = feval(f,a);yb = feval(f,b);if ya * yb > 0 ,return,endmax1 = 1+round((log(b-a)-log(delta))/log(2));for k=1:max1c=(a+b)/2;yc=feval(f,c);if yc==0a=c;b=c;elseif yb * yc > 0b=c;yb=yc;elsea=c;ya=yc;endif b-aendc=(a+b)/2;err=abs(b-a);yc=feval(f,c);2.f.m:function f=f(x);f=x^3-exp(-x);六、运⾏结果七、计算机计算结果⼋、实验分析1、⼆分法和计算器均能解出⽅程的根。

数值计算实验教案

数值计算实验教案
课时安排
2
教学
目的
要求
使学生加深对非线性方程牛顿法及加速迭代法等的理解,会用C及Excel软件求解一些简单的非线性方程。
教学
重点
难点
教学重点:各种算法的构造思路、算法的软件实现
教学难点:各种算法的收敛性及误差控制
实验软件
Excel、TURBOC2.0






1.用Excel及C完成教材P23例4(牛顿法)和P25例5(弦割法)实验。
课外
学习
要求
实验报告,设计求收敛阶的实验。
教 学 后 记
学生基本能完成各实验,但对多种方法的比较不太清楚,这说明学生掌握了基本的计算方法,但对各种方法优缺点的理解不够深入,提醒任课教师在教学中注意多种计算方法的比较,一方面可以加深对每种算法的理解,另一方面还可提高学生综合分析问题的能力。
授课
内容
实验四:线性方程组直接法——高斯顺序消元法(LU分解法),列主元消去法
****学院
实 验教 案
开课单位:数学系
课程名称:数值计算方法
专业年级:2005级
任课教师:周均
教材名称:数值计算方法(李有法)
2007——2008学年第1学期
授课
内容
实验一、数值稳定性及算法设计原则
课时安排
2
教学
目的
要求
熟悉Excel及C语言程序的软件环境及基本操作,验证数值稳定性,体验数值计算与常见数学计算的异同,理解多项式的计算的两个算法的异同。
2.用Excel完成教材P28例7,注意埃特肯加速法的误差控制,并比较这些方法在相同精度情况下的迭代次数,从而粗略说明收阶。
3.用下列方法求方程 的近似根,要求误差不超过 ,并比较计算量。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*
1 * * | En | ,E0 n!
* * * 比 En 缩小了 n!倍,因此,尽管 E9 较大,但由于误差逐步缩小,故可用 I n 近似 I n 。反之,当用方案(A)计
算时,尽管初值 I 0 相当准确,由于误差传播是逐步扩大的,因而计算结果不可靠。此例说明,数值不稳定的
算法是不能使用的。
五、教师评语(或成绩)
教师签字 : 2013 年 月 日
3Leabharlann 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
0.1709 0.1455 0.1268 0.1124 0.1009 0.0916 0.0839 0.0774 0.0718 0.0669 0.0627 0.0590 0.0555 0.0572 -0.0295 1.5596
* 1 1 e1 I9 0.0684, 2 10 10 1 * * I n 1 n 1 I n , (n 1).
进行计算。
n=0,1,2……,9
算法一的程序如下:
function [y,n] =myfun() y_0=0.6321; n=1; y(1)=y_0; for i=2:10 y(i)=1-(i-1)*y(i-1); n=n+1; end n
三、实验内容及要求:
1.用 Matlab 语言编写按递推公式
I e1 1 e x dx 1 e1 , 0 0 I n 1 nI n1 , n 1, 2,.
计算 I n e
1
x e dx (n=0,1,2,……)的程序,并取 I =0.6321,计算 n=0,1,2,…,9 时 I 的值。
数值分析实验报告
姓 名 学 号 系 别 数学系 班级 专业 无 主讲教师 课程名称 指导教师 数值计算方法 实验日期 同组实验者
一、实验名称:
实验一、算法的数值稳定性实验
二、实验目的:
1.进行 Matlab 语言的编程训练,初步体验算法的软件实现; 2.通过对稳定算法和不稳定算法的结果分析、比较,深入理解算法的数值稳定性及其重要性。
n x 0
1
3.分析比较两种算法的数值稳定性。
三、实验步骤(或记录)
(一) 、算法描述 由于 y(n)= I n 算法一: 由积分估值得:
e 1 x n e x dx ,要运用下面两种算法进行计算。
0
1
.
1 1 e 1 1 e 1 min e x x n d x I n e 1 max e x x n d x 0 0 n 1 n 1 0 x 1 0 x1
0.1709 0.1455 0.1268 0.1124 0.1009 0.0916 0.0839 0.0774 0.0718 0.0669 0.0627 0.0590 0.0557 0.0527 0.0508 0.0342
四、实验总结:
4 * * * 计算结果见表 1 的 I n 列。 我们发现 I0 与 I 0 的误差不超过 10 。 En I n I n , | E0 | 记 * 则
取 y(0)=0.6321 时,运用递推公式为:
y(0) 0.6321 y(n 1) 1 (n 1) y(n)
n 0,1,2,,9
1
进行计算。 算法二: 取 n=9 时,得:
e 1 1 y (9) 10 10
所以 y(9)=0.0684 时,运用递推公式为:
n x 0
0 n
1
2. 用 Matlab 语言编写按递推公式
* 1 1 e1 I9 0.0684, 2 10 10 1 * * I n 1 n 1 I n , (n 1).
计算 I n e
1
x e dx (n=0,1,2,……,9)的值程序。
算法二的程序如下:
function [ y,n ] = Myfun_2() syms k y_9; y=zeros(10,1); n=1; y_9=0.6321; y(8)=y_9; for i=10:-1:2 y(i-1)=1/i*(1-y(i)); n=n+1; end end
表 1 计算结果 n 0 1 2 3 第 1 种算法 0.6321 0.3679 0.2642 0.2073 2 第 2 种算法 0.6321 0.3679 0.2642 0.2073
相关文档
最新文档