(完整版)关于数值计算过程说明
第1章 数值计算导论

5. 1957 年,美国 IBM 公司的 J. Backus 领导开发的 Fortran 最优编译器算法; 6. 1959-1961 年,英国伦敦 Ferranti 公司的 J. Francis 发现的计算矩阵特征值的稳定算法,
纯数学
纯科学
经过发展、融合,形成“数值计算”方向 的过程. 为了突出数值计算在各种科学
应用数学 实验/工程科学
与工程问题中的应用,以及它作为计算机
学科一部分的重要性,近年来也将它称为 科学计算(scientific computing).
计算数学 计算科学与工程
与数值计算联系紧密的一个研究方
向是高性能计算,它的研究对象包括高性 能的计算机硬件体系结构及其应用,包括
2. 1947 年,美国兰德(RAND)公司的 G. Dantzig 创造的解线性规划问题的单纯型算法 (Simplex 算法);
3. 1950 年,美国国家标准局数值分析研究所的 M. Hestenes, E. Stiefel 和 C. Lanczos 开创 的 Krylov(克雷洛夫)子空间迭代法;
名称 CMLIB
FMM
HSL
IMSL
NAG NAPACK
Netlib NR NUMERALGO MATLAB PORT SLATEC SOL
TOMS
表 1-1 重要的数值计算软件、程序包的网络资源
内容说明
商业/免费
网址
美国国家标准技术协会(NIST)的数学与 免费
1.1.2 数值计算的问题与策略
数值计算的问题来自各个科学和工程分支,可归纳为下述三种情况: 1. 没有解析解的数学问题. 一个简单的例子是五次或更高次一元代数方程的求解,如:
数值分析2-3(牛顿插值法)

二阶差商
f [ xi , x j , xk ]
一般的k阶差商定义为
f [ x0 , x1 ,..., x k ] f [ x0 ,..., x k 2 , x k ] f [ x0 , x1 ,..., x k 1 ] x k x k 1
特别地,f(x)关于一个点xi的零阶 差商定义为函数值本身,即
§3
差 商 与 牛 顿 插 值
一、差商及其性质 二、差商的计算
三、牛顿插值公式 四、牛顿插值法举例
一、差商及其性质
1. 差商的定义 函数关于 xi, xj 一阶差商
f [ xi , x j ] fห้องสมุดไป่ตู้( x j ) f ( xi ) x j xi
f [ x j , xk ] f [ xi , x j ] xk xi
∶ ∶ ∶
f[x0,x1,x2] f[x1,x2,x3]
∶ ∶ ∶
f[x0,x1,x2,x3]
∶ ∶ ∶
例 已知函数y= f (x)的观测数据如下, 试构造差商表,并求 f [2,4,5,6]的值
x 0 2 f(x) 1 5
4 5 6 9 -4 13
解 构造差商表如下
xi f(xi) 一阶 二阶 三阶 0 1 2 5 2 4 9 2 0 5 -4 -13 -5 -1 6 13 17 15 5 四阶
4 3 2
用二次插值求f (3)时,取
x0=2, x1=4, x2=5, 得 f ( 3) f ( 2) f [2,4]( 3 2)
f [2,4,5]( 3 2)( 3 4) 7 5( 3 2)( 3 4) 12 思考:若本题只给出前三个点,结果 如何?请你总结牛顿插值法何时停止?
数值计算方法

数值计算方法在数学中,数值计算是解决实际问题常用的重要方法。
解决这类问题时,只要按照由简单到复杂、由特殊到一般的思维顺序进行逐步分析和研究,总能得到正确的结果。
下面,就有关数值计算方法和运算的规则及要求,进行分析讨论,并举例说明。
当数列或函数的各项中,如果出现加减乘除以外的运算,一定要首先考虑通过“分解”、“凑整”等数值运算的办法来解决,而不能直接运算。
具体来说,可采用以下方法:在运算过程中,为了省略乘方或开方运算,需将原式写成分子、分母都是较大数字的形式;为了使相乘的积尽量不变号,也可以把分母化成整数,再相乘;为了使被除数尽可能多地乘上除数所以位数较多的数,应把除数扩大成被除数的许多倍,然后用乘法分配律进行简便运算;为了把小数化成整数,需将小数点向右移动若干位,使小数的小数部分全部转换成整数的形式;为了保证每一位乘得的结果不变号,还可以对乘法和除法同时进行一次因式分解,使分子、分母同时除以较大的数字,从而在计算时,把小数化成整数,最后按照前面说的分配律,用简便方法进行简便运算。
对于分数值的计算,要先根据分数的意义计算出结果,再将得到的整数写成分数的形式,最后按照分数的运算法则进行运算。
计算方法不但要考虑数字本身的特征,而且还要注意分数与整数之间的互化问题。
一般地,分数的分子和分母都乘以同一个整数后,分数值发生了变化,所以必须进行同分母分数的加减运算;一般地,分数的分子和分母同时乘以较大的整数时,其值仍然不变,故不需要进行同分子分数的加减运算。
例如: 12*10=12(10)=2×3= 6(后一步不需要进行运算); 2*4=8(后一步不需要进行运算); 15*5=45(后一步不需要进行运算)。
关于约分,不仅要看被分数的整数部分和分数部分是否互质,而且要考虑两部分的大小是否适合分子、分母互质,是否有公因数等情况。
例如: 6*2/3=2/3(大小合适); 14/18=4/9(大小不合适)。
(完整版)Mathematica数值分析和数值计算

第五章 数值分析和数值计算1. 如何求插值多项式给定n 个点( x i ,y i ),(i=1,2,…,n),构造一个次数不超过n-1的多项式函数f(x),使得f(x i )=y i ,则称f(x)为拉格朗日插值多项式。
可以证明该多项式函数由公式))...()(())...()((...))...()(())...()(())...()(())...()((1211212321231113121321--------++------+------=n n n n n n n n n n x x x x x x x x x x x x y x x x x x x x x x x x x y x x x x x x x x x x x x y y唯一给定。
Mathematica 提供了根据插值点数据计算拉格朗日插值多项式的函数InterpolatingPolynomial ,下面是其调用格式:InterpolatingPolynomial[data,var]作出以data 为插值点数据,以var 为变量名的插值多项式。
例:在多数情况下,我们构造插值函数的目的在于计算函数f(x)的值,而并不在意插值多项式的具体表示形式。
对于拉格朗日插值多项式,当n 较大时,得到的高次插值多项式由于截断误差和舍入误差的影响,往往误差较大。
此时在实际应用中,一般采用分段插值。
Mathematica 提供了分段插值函数Interpolation ,其使用格式为:Interpolation[data,InterpolationOrder->n]这里InterpolationOrder->n 指定插值多项式的次数,默认值为3。
此外数据data 中还可以包括插值点处的导数,格式为:{{x1,{y1,dy1}},{x2,{y2,dy2}},…}例:已知f(0)=0,f(1)=2,f’(0)=1,f’(1)=1,求3次插值多项式f(x),并计算f(0.72)和画出函数f(x)在[0,1]区间上的图形。
数值计算方法和算法课程设计

数值计算方法和算法课程设计一、简介数值计算方法和算法课程是计算机科学与技术专业中重要的课程之一,其内容主要包含了数值计算方法和基本算法的理论、思想、原理和应用,培养了我们在计算机运算中提高算法效率和准确度的能力。
本文档是数值计算方法和算法课程设计的撰写指南,旨在帮助大家完成课程设计的撰写,以完成课程的要求。
二、数值计算方法数值计算方法是对数值问题进行数学解法的研究。
数值计算方法涉及的问题包括:求解方程、插值和逼近、数值积分和数值微分、常微分方程、偏微分方程等。
在数值计算方法中,我们需要了解一些常见的算法,例如:二分法、牛顿迭代法、高斯-塞德尔迭代法、龙格-库塔法等。
课程设计要求学生能够对各种数值方法进行学习、比较、分析和综合使用,完成一定的数值计算问题。
三、算法设计算法设计是在具体的问题基础上,根据规则和原则选择合适的计算流程和方法,得到满足计算要求的算法过程。
计算机算法是在计算机程序设计过程中所采用的一些指导模式,其目的在于使计算机能够依据事先给定的任务说明和数据,精细地指导其运算。
算法设计需要学生具备深厚的数学功底和良好的编程能力,同时,还需要学生掌握常见的算法设计原则和技巧。
四、课程设计要求本门课程设计要求学生独立完成一个数值计算问题的解法的完整过程。
具体要求:1.选择适合的数值计算问题并设计算法实现;2.实现程序并进行测试;3.通过测试数据的分析和效果评价,进行算法设计的改进;4.撰写设计报告并提交。
五、设计报告内容设计报告应该包括以下内容:1.问题的阐述与分析,明确所需要解决的数值计算问题,并说明具体的解法;2.算法实现流程,详细说明算法中所使用的思想、原理和过程;3.程序编写内容,对程序进行详细的讲解和分析,并附上程序代码;4.程序测试过程,对测试数据和效果进行分析和说明,并展示输出结果;5.算法改进,对算法的不足之处和改进方向进行分析;6.总结,对设计过程中的感受和体会进行总结并对未来方向进行展望和思考。
数值计算方法

1.题目造倒数表,并例求 18 的倒数。
(精度为2.算法原理牛顿迭代法牛顿迭代法是通过非线性方程线性化得到迭代序列的一种方法。
对于非线性方程f x() = 0 ,若已知根x* 的一个近似值x k ,将f (x) 在x k 处展成一阶泰勒公式后忽略高次项可得:f (x) ≈ f x( k ) + f '(x k )(x −x k )右端是直线方程,用这个直线方程来近似非线性方程f (x) 。
将非线性方程fx( ) = 0的根x*代入f x( *) = 0 ,即f x( k ) + f '(x k )(x* −x k ) ≈ 0* x k−f (x k ) 解出x ≈f '(x k )将右端取为x k+1 ,则x k+1 是比x k 更接近于x* 的近似值,即f (x)x≈ x−f '(x k ) 这就是牛顿迭代公式,相应的迭代函数是f (x)ϕ(x) = x −f '(x)牛顿迭代法的应用1 1计算是求cx− =1 0的解,解出x,即得到。
取c c 有牛顿迭代公式cx−1 1x= x−= c c 这样就失去了迭代的意义,达不到迭代的效果。
1f (x) = cx−1, f '(x)= c,故重新构造方程:cx2 −x = 0 ,也是该式的解。
故取f (x) = cx2 −x ,cf '(x) = 2cx −1,则有牛顿迭代公式x= x−cx2 −x= cx, k = 0,1,...2cx k −1 2c k −11 1的值在~ 之间,取初值x0 = 。
20 103.流程图,,Nxε读入1k⇒()0xf′=x输出1k kx x⇒+⇒()()f xx xf x⇒−′x xε−<≠=<=≥≠4.输出结果5.结果分析当k= 3时,得 5 位有效数字 564。
此时,x3 −x4 = 000 < 005,故取x* = x3 = 564 ≈ 。
数值计算方法实验大纲

数学实验课程实验大纲
大纲制定时间:2009年8月
实验课程名称:数值计算方法实验(Mathematics Experiment )
课程负责人:邹昌文
课程分类:专业基础课课程类型:选修
适用专业:信息与计算科学
课程总学时:96 课程总学分:5
实验学时:32 实验学分:1
开课单位:理学院
大纲执笔人:邹昌文
一、实验的性质、目的与任务
本实验大纲内容是与理论课相配套的,是为了让同学通过一系列的上机实习,进一步掌握课堂上所学的内容,并有所扩充。
基本任务是让同学掌握matlab的基本应用,并在此基础上要求同学能完成一定难度的编程实验。
三、教材:《数值计算方法实验指导书》邹昌文 2009
参考书:《数值计算方法》李庆扬
四、考核方式:提交符合规定的实验报告
五、使用说明:
大纲制定人:邹昌文
大纲审定人:。
数值分析 迭代法 二分法和迭代法原理

lim | xk x* | 0
k
即 lim xk x *.
k
(b) | xk1 x*| L | xk x*|
| xk 1 xk | | ( xk 1 x*) ( xk x*) | xk x * xk 1 x * (1 L) xk x * 1 xk x * xk 1 xk 1 L 又 | xk1 xk | ( xk ) ( xk1 ) | '( ) | | xk xk1 | L | xk xk1 |
等价变换
x = (x) 称为迭代函数
(x) 的不动点x*
不动点迭代
具体做法:
从一个给定的初值 x0 出发,计算 x1 = (x0), x2 = (x1), … x 若 k k 0 收敛,即存在 x* 使得 lim x k x *,则由 的连续
k
xk 1 lim xk 可得 x* = (x*),即 x* 是 的不 性和 lim k k
根的估计
引理3.1(连续函数的介值定理) 设f(x)在 [a,b]上连续,且f(a) f(b)<0,则存在x*(a,b) 使f(x*)=0。 例3.1 证明x33x1 = 0 有且仅有3个实根,并 确定根的大致位置使误差不超过 =0.5。 解:
单调性分析和解的位置 选步长h=2, 扫描节点函数值 异号区间内有根
ek 1 xk 1 x* ( xk ) ( x*) '( )ek e 取极限得 lim k 1 '( x*) 0 线性收敛. k e k
数值分析简述及求解应用

数值分析简述及求解应用摘要:数值分析是研究分析用计算机求解数学计算问题的数值计算方法及其理论的学科,本文主要介绍了数值分析的一些求解方法的原理和过程,并应用在电流回路和单晶硅提拉过程中的,进一步体现数值分析的实际应用。
关键字:解方程组插值法牛顿法一、引言随着科学技术的发展,提出了大量复杂的数值计算问题,在建立电子计算机成为数值计算的主要工具以后,它以数字计算机求解数学问题的理论和方法为研究对象。
有可靠的理论分析,要有数值实验,并对计算的结果进行误差分析。
数值分析的主要内容包括插值法,函数逼近,曲线拟和,数值积分,数值微分,解线性方程组的直接方法,解线性方程组的迭代法,非线性方程求根,常微分方程的数值解法。
运用数值分析解决问题的过程包括:实际问题→数学建模→数值计算方法→程序设计→上机计算求出结果。
在自然科学研究和工程技术中有许多问题可归结为求解方程组的问题,方程组求解是科学计算中最常遇到的问题。
如在应力分析、电路分析、分子结构、测量学中都会遇到解方程组问题。
在很多广泛应用的数学问题的数值方法中,如三次样条、最小二乘法、微分方程边值问题的差分法与有限元法也都涉及到求解方程组。
在工程中常会遇到求解线性方程组的问题,解线性方程组的方法有直接法和迭代法,直接法就是经过有限步算术运算,可求的线性方程组精确解的方法(若计算过程没有舍入误差),但实际犹如舍入误差的存在和影响,这种方法也只能求得近似解,这类方法是解低阶稠密矩阵方程组级某些大型稀疏矩阵方程组的有效方法。
直接法包括高斯消元法,矩阵三角分解法、追赶法、平方根法。
迭代法就是利用某种极限过程去逐步逼近线性方程组精确解的方法。
将方程组的解看作是某极限过程的极限值,且计算这一极限值的每一步是利用前一步所得结果施行相同的演算步骤而进行。
迭代法具有需要计算机的存储单元少,程序设计简单,原始系数矩阵在计算过程始终不变等优点,但存在收敛性级收敛速度问题。
迭代法是解大型稀疏矩阵方程组(尤其是微分方程离散后得到的大型方程组)的重要方法。
数值计算方法学习指导

第一章
1、误差估计
绪论
, x 为 x 的一个近似值。称 e = e( x ) = x − x 为近似值 x 的 (1)设 x 为真值(精确值) 绝对误差,简称误差。如果 e = x − x ≤ ε ,则称 ε 为近似值 x 的绝对误差限,简称误差
说法是:取几位有效数字就能确保近似数的相对误差不超过 0.1% 。
x − x∗ 1 解 因为 20 = 4.4 L ,故在例 1 中, s = 1, m = 0 , a1 = 4 , ≤ ×10− ( n −1) , ∗ 2a1 x
令
x − x∗ 1 ≤ × 10− ( n −1) < 0.1% ∗ x 2× 4
特别,设计算函数值 A = f ( x1 , x2 , L , xn ) ,如果 x1 , x2 , L , xn 的近似值为 x1 , x2 , L , xn , 则 A 的近似值为 A = f ( x1 , x2 , L , xn ) ,函数值 A 的误差可由 Taylor 展开方法得到:
∗ ∗ ∗ ∗
1 10 + 99
=
1 = 0.050125639L 10 + 9.94987
利用有效数字的多少来比较不同算法的优劣,说明了算法选取的重要性。 记x=
99, x ∗ = 9.94987 , e( x ∗ ) = x ∗ − x ,则 e( x ∗ ) ≤
1 × 10−5 , 2
由 e(10 − x ) ≈ − e( x ) 得
10 − 99 =
(完整版)传热学知识点

(完整版)传热学知识点传热学主要知识点1. 热量传递的三种基本方式。
热量传递的三种基本方式:导热(热传导)、对流(热对流)和热辐射。
2. 导热的特点。
a 必须有温差;b 物体直接接触;c 依靠分子、原子及自由电子等微观粒子热运动而传递热量;d 在引力场下单纯的导热一般只发生在密实的固体中。
3. 对流(热对流)(Convection)的概念。
流体中(气体或液体)温度不同的各部分之间,由于发生相对的宏观运动而把热量由一处传递到另一处的现象。
4 对流换热的特点。
当流体流过一个物体表面时的热量传递过程,它与单纯的对流不同,具有如下特点:a 导热与热对流同时存在的复杂热传递过程b 必须有直接接触(流体与壁面)和宏观运动;也必须有温差c 壁面处会形成速度梯度很大的边界层5. 牛顿冷却公式的基本表达式及其中各物理量的定义。
q ' = h (t w - t ∞ )(w)= q 'A = Ah (t w - t ∞ )w / m 2h 是对流换热系数单位 w/(m 2 k) q ' 是热流密度(导热速率),单位(W/m 2)是导热量 W6. 热辐射的特点。
a 任何物体,只要温度高于 0 K ,就会不停地向周围空间发出热辐射;b 可以在真空中传播;c 伴随能量形式的转变;d 具有强烈的方向性;e 辐射能与温度和波长均有关;f 发射辐射取决于温度的 4 次方。
7. 导热系数, 表面传热系数和传热系数之间的区别。
导热系数:表征材料导热能力的大小,是一种物性参数,与材料种类和温度关。
表面传热系数:当流体与壁面温度相差1 度时、每单位壁面面积上、单位时间内所传递的热量。
影响h 因素:流速、流体物性、壁面形状大小等传热系数:是表征传热过程强烈程度的标尺,不是物性参数,与过程有关。
第一章导热理论基础1 傅立叶定律的基本表达式及其中各物理量的意义。
傅立叶定律(导热基本定律):q ' = -k ?dT q ' = -k ?T = -k (i ?T + j ?T + k ?T) x ?dx ?x ?y ?zq ' = -k ?T n ?nT(x,y,z)为标量温度场圆筒壁表面的导热速率 q r= -kA dTdr = -k (2rL ) dT dr垂直导过等温面的热流密度,正比于该处的温度梯度,方向与温度梯度相反。
计算方法实验方法过程

计算方法实验方法过程
计算方法和实验方法是科学研究中的重要手段,它们可以帮助我们探索未知的领域和验证假设。
以下是计算方法和实验方法的详细过程:
确定研究问题:首先需要确定一个具体的研究问题,这通常是基于现实生活中的现象或实验现象,并具有实际应用价值。
收集数据:根据研究问题,需要收集相关的数据。
这可以通过各种途径,如调查、实验、观察等。
在收集数据时,需要保证数据的准确性和可靠性。
建立模型:在收集完数据后,需要建立一个适当的模型来描述问题。
这个模型可以是数学模型、物理模型或计算机模型等。
模型的建立需要基于对问题的深入理解和分析。
计算方法:根据建立的模型,选择适当的计算方法来进行数据处理和分析。
计算方法的选择需要基于问题的性质和数据的特点,并且需要考虑计算的效率和精度。
实验方法:根据研究问题,设计适当的实验来验证假设或探究现象。
实验方法的选择需要考虑实验的目的、实验条件、实验步骤等因素,并确保实验结果的准确性和可重复性。
数据处理和分析:使用计算方法对实验数据进行处理和分析,提取有用的信息,并进行统计和可视化处理。
在这个过程中,需要注意数据的处理方式和处理工具的选择。
结果解释和结论:根据数据处理和分析的结果,解释现象并得出结论。
如果结果与预期不一致,可能需要重新审视模型和实验方法,并进行修正和改进。
总的来说,计算方法和实验方法都是科学研究中的重要手段,它们可以帮助我们探索未知的领域和验证假设。
在具体的研究过程中,需要根据问题的性质和数据的特点选择适当的方法,并进行充分的准备和实验设计。
(完整版)数值计算方法教案

《计算方法》教案课程名称:计算方法适用专业:医学信息技术适用年级:二年级任课教师:***编写时间:2011年 8月新疆医科大学工程学院张利萍教案目录《计算方法》教学大纲 (4)一、课程的性质与任务 (4)二、课程的教学内容、基本要求及学时分配 (4)三、课程改革与特色 (5)四、推荐教材及参考书 (5)《计算方法》教学日历..................................... 错误!未定义书签。
第一章绪论 .. (6)第1讲绪论有效数字 (6)第2讲误差………………………………………………………………………………第二章线性方程组的直接法 (14)第3讲直接法、高斯消去法 (14)第4讲高斯列主元消去法 (22)第5讲平方根法、追赶法 (29)第三章插值法与最小二乘法 (31)第6讲机械求积、插值型求积公式 (32)第7讲牛顿柯特斯公式、复化求积公式 (37)第8讲高斯公式、数值微分 (42)第9讲第10讲第12讲第四章数值积分与数值微分 (48)第11讲欧拉公式、改进的欧拉公式 (48)第12讲龙格库塔方法、亚当姆斯方法 (52)第13讲收敛性与稳定性、方程组与高阶方程 (56)第14讲第15讲第五章微分常微分方程的差分方法 (59)第16讲迭代收敛性与迭代加速 (60)第17讲牛顿法、弦截法 (64)第18讲第19讲第20讲第六章线性方程组的迭代法 (67)第21讲迭代公式的建立 (68)第22讲第23讲第24讲向量范数、迭代收敛性 (71)第25讲《计算方法》教学大纲课程名称:计算方法/Computer Numerical Analysis B学时/学分:54/4先修课程:高等数学、线性代数、高级语言程序设计(如:Matlab语言)适用专业:计算机科学与技术、信息管理与信息系统开课学院(部)、系(教研室):医学工程技术学院、医学信息技术专业一、课程的性质与任务计算方法是一门专业必修课。
数值计算方法实验报告(含所有)

本科实验报告课程名称:计算机数值方法实验项目:计算机数值方法实验实验地点:虎峪校区致远楼B401专业班级:软件学院1217班学号:******xxxx 学生姓名:xxx指导教师:xxx2014 年 5 月21 日太原理工大学学生实验报告五、实验结果与分析二分法割线法分析:由程序知,使用二分法和割线法均能计算出方程的根,但利用割线法要比二分法计算的次数少,并且能够较早的达到精度要求。
相比之下,割线法程序代码量较少,精简明了。
六、讨论、心得本次数值计算方法程序设计实验从习题练习中跳脱出来,直接面对实用性较强的程序代码编写。
效果很好,不仅加深对二分法、割线法的理解,还加强了实际用运能力。
将理论知识成功地转化成实践结果。
实验地点虎峪校区致远楼B401指导教师xx太原理工大学学生实验报告l[i][k]=a[i][k];for(r=1;r<k;++r){l[i][k]-=l[i][r]*u[r][k];}l[i][k]/= u[k][k];}l[k][k]=1.0;}for(i=1;i<=n;++i){y[i] = b[i];for(j=1;j<i;++j){y[i]-=l[i][j]*y[j];}}for(i=n;i>0;--i){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分解法:分析:对于两种高斯解方程,完全主元素跟列主元素都是先消元、再回代,由程序段可以发现,始终消去对角线下方的元素。
即,为了节约内存及时效,可以不必计算出主元素下方数据。
列主元素消元法的算法设计上优于完全主元素消元法,它只需依次按列选主元素然后换行使之变到主元素位置,再进行消元即可。
分位值计算方法

一般情况下做数据分析时要求计算25分位(下四分位),50分位(中位),75分位(上四分位)值。
注:分位值说明:Pn为n分位值。
表示被调查群体中有n%的数据小于此数值。
n的大小反应市场的不同水平,通常使用P10、P25、P50、P75、P90来表示市场的不同水平。
10分位值:表示有10%的数据小于此数值,反映市场的低端水平。
25分位值:表示有25%的数据小于此数值,反映市场的较低端水平。
50分位值:表示有50%的数据小于此数值,反映市场的中等水平。
75分位值:表示有75%的数据小于此数值,反映市场的较高端水平。
90分位值:表示有90%的数据小于此数值,反映市场的高端水平。
例:求下例一组数据的25分位,50分位,75分位值:A=【65 23 55 78 98 54 88 90 33 48 91 84】1、先把上面12个数按从小到大排序1 232 333 484 545 556 657 788 849 8810 9011 9112 982、12个数有11个间隔,每个四分位间11/4=2.75个数3、①计算25分位:第1个四分位数为上面12个数中的第1+2.75=3.75个数指第3个数对应的值48及第3个数与第4个数之间的0.75位置处,即:48+(0.75)*(54-48)=52.5 (52.5为25分位值)。
②计算50分位:第2个四分位数为上面12个数中的第1+2.75*2=6.5个数指第6个数对应的值65及第6个数与第7个数之间的0.5位置处,即:65+(0.5)*(78-65)=71.5 (71.5为50分位值)。
【中位值也可以用一种很简单的方法计算,按从小到大排列后:若数组中数的个数为奇数,则最中间那个数对应的值则为中位值;若数组中数的个数为偶数,则取中间两个数值的平均值则为中位值,如上78+65)/2=71.5】③计算75分位:第3个四分位数为上面12个数中的第1+2.75*3=9.25个数指第9个数对应的值88及第9个数与第10个数之间的0.25位置处,即:88+(0.25)*(90-88)=88.5 (88.5为75分位值)。
数值计算方法实验指导(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 迭代法求解线性方程组。
(完整版)关于数值解析过程说明

(完整版)关于数值解析过程说明关于数值解析过程说明
数值解析是一种通过数值计算方法来近似解决数学问题的方法。
它在科学计算领域具有广泛的应用,可以用来对复杂的数学模型进
行求解。
数值解析的基本思路
数值解析的基本思路是将原始的数学问题转化为计算机可以处
理的数值问题。
具体步骤如下:
1. 确定数学模型:首先需要根据实际问题确定数学模型,包括
方程、约束条件等。
2. 离散化处理:将数学模型离散化处理,将连续的问题转化为
离散的问题。
这样可以将问题分解为一系列的小问题,更易于计算
机处理。
3. 选择数值方法:根据实际问题的特点和要求,选择合适的数
值计算方法。
常用的数值方法包括数值积分、插值与曲线拟合、微
分方程求解等。
4. 计算近似解:使用选择的数值方法对离散化后的问题进行计算,得到数值解。
这个数值解是对原始问题的近似解,可以根据实
际需求进行进一步处理。
5. 分析结果:对计算得到的数值解进行分析和评估,判断解的
可靠性和精度。
数值解析的优缺点
数值解析作为一种数学计算方法,具有以下优点和缺点:
优点:
- 可以对复杂的数学问题进行求解,包括无解析解的问题。
- 可以通过调整参数和计算条件来灵活地控制计算过程和结果。
缺点:
- 数值解是对原问题的近似解,存在一定的误差。
- 对于复杂的问题,计算量较大,需要考虑计算效率和时间消耗的问题。
总之,数值解析是一种重要的科学计算方法,在实际问题中具有广泛的应用。
通过合理选择数值方法和合理分析结果,可以得到满足实际需求的数值解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(完整版)关于数值计算过程说明
本文档旨在提供数值计算过程的详细说明,以帮助读者更好地理解和应用数值计算方法。
1. 引言
数值计算是一种通过使用数字近似值来解决数学问题的方法。
它在科学和工程领域中得到广泛应用,并且在很多情况下,数值计算是解决问题的唯一可行方法。
2. 数值计算过程概述
数值计算过程通常可分为以下几个步骤:
1. 问题建模:首先,将实际问题转化为可计算的数学模型。
这包括确定需要计算的量,规定适用的数学公式和方程。
问题建模:首先,将实际问题转化为可计算的数学模型。
这包括确定需要计算的量,规定适用的数学公式和方程。
2. 数值方法选择:选择适当的数值方法来解决问题。
不同的问
题可能需要使用不同的数值方法,如迭代法、插值法、数值积分等。
数值方法选择:选择适当的数值方法来解决问题。
不同的问题可能
需要使用不同的数值方法,如迭代法、插值法、数值积分等。
3. 数值算法实现:根据选定的数值方法,编写计算机程序来实
现算法。
这包括编写数值计算代码和处理可能出现的误差或异常情
况的代码。
数值算法实现:根据选定的数值方法,编写计算机程序
来实现算法。
这包括编写数值计算代码和处理可能出现的误差或异
常情况的代码。
4. 输入数据准备:为计算过程提供所需的输入数据。
这可以是
初始条件、样本数据或用户输入的参数。
输入数据准备:为计算过
程提供所需的输入数据。
这可以是初始条件、样本数据或用户输入
的参数。
5. 计算过程运行:运行数值计算程序来执行所选的数值方法。
这将使用输入数据作为计算的基础,并生成相应的计算结果。
计算
过程运行:运行数值计算程序来执行所选的数值方法。
这将使用输
入数据作为计算的基础,并生成相应的计算结果。
6. 结果评估:评估计算结果的准确性和可靠性。
这可能包括与已知解析解或实验数据的比较,或者通过使用数值稳定性和误差分析方法进行评估。
结果评估:评估计算结果的准确性和可靠性。
这可能包括与已知解析解或实验数据的比较,或者通过使用数值稳定性和误差分析方法进行评估。
7. 结果解释和应用:根据计算结果解释问题的答案,并根据需要应用结果进行进一步的决策或分析。
结果解释和应用:根据计算结果解释问题的答案,并根据需要应用结果进行进一步的决策或分析。
3. 数值计算过程中的注意事项
在进行数值计算过程时应注意以下事项:
- 数值稳定性:某些数值方法可能对输入数据的微小变化非常敏感,导致计算结果不稳定。
在这种情况下,通常需要采取适当的数值稳定性技术来保证计算的准确性和可靠性。
数值稳定性:某些数值方法可能对输入数据的微小变化非常敏感,导致计算结果不稳
定。
在这种情况下,通常需要采取适当的数值稳定性技术来保证计算的准确性和可靠性。
- 误差控制:数值计算过程中常常伴随着各种误差,如舍入误差、截断误差等。
为了控制误差并提高计算结果的准确性,可以采用数值误差分析技术和优化算法。
误差控制:数值计算过程中常常伴随着各种误差,如舍入误差、截断误差等。
为了控制误差并提高计算结果的准确性,可以采用数值误差分析技术和优化算法。
- 计算效率:在进行大规模数值计算时,对计算效率的考虑变得尤为重要。
可以采用并行计算、优化算法和近似计算等技术以提高计算效率。
计算效率:在进行大规模数值计算时,对计算效率的考虑变得尤为重要。
可以采用并行计算、优化算法和近似计算等技术以提高计算效率。
4. 结论
数值计算过程是解决许多实际问题的重要工具。
通过选择适当的数值方法和实施正确的数值算法,结合合理的输入数据和准确的
结果评估,我们可以得到满意的数值计算结果,并用于科学研究、工程设计和决策分析等领域。
希望本文档能够使读者对数值计算过程有更深入的理解,并能够在实践中应用数值计算方法,解决各种数学问题。