数值计算 第六章

合集下载

数值计算方法(山东联盟)智慧树知到答案章节测试2023年中国石油大学(华东)

数值计算方法(山东联盟)智慧树知到答案章节测试2023年中国石油大学(华东)

第一章测试1.数值计算方法研究的误差有()A:截断误差;B:观测误差;C: 模型误差;D:舍入误差.答案:AD2.A:只有模型误差、截断误差与观测误差。

B: 只有舍入误差、截断误差与观测误差;C:只有模型误差、观测误差与舍入误差;D:只有模型误差、截断误差与舍入误差;答案:C3.A:4位B:5位C:3位D:2位答案:A4.对于下列表达式,用浮点数运算,精度较高是A:B:C:D:答案:A5.A:B:C:D:答案:B第二章测试1.A:0.5000B:0.6250C:0.5625D:0.6875答案:C2.A:B:C:D:答案:CD3.关于Steffensen(斯蒂芬森)迭代方法,下列命题中正确的是:A:Steffensen迭代法使得收敛的迭代格式加速收敛,发散的迭代格式更快发散。

B:Steffensen迭代法使得某些发散的迭代格式变为收敛。

C:Steffensen迭代法使得任何收敛的迭代格式加速收敛。

D:Steffensen迭代法使得某些收敛的迭代格式加速收敛。

答案:BD4.关于Newton迭代法,下列命题中正确的是:A:求解任一方程的Newton迭代法都是2阶收敛的。

B:Newton迭代格式若收敛,则一定是超线性收敛的。

C:D:Newton迭代格式可能收敛也可能发散。

答案:CD5.A:6B:3C:5D:4答案:A第三章测试1.A:若求解失败,则说明矩阵A奇异。

B:算法的计算量与近似成正比。

C:若A的对角线元素的绝对值都大于1,则求解结果的精度一定较高。

D:只要A非奇异,则求解结果的精度一定较高。

答案:B2.列主元Gauss消去法与Gauss顺序消元法相比,优点是:A:提高了稳定性,减少了误差的影响。

B:方程组的系数矩阵奇异时也可以求解。

C:能求出方程组的精确解。

D:减少了计算量。

答案:A3.A:平方根法与Gauss列主元消去法相比,提高了稳定性,但增加了计算量。

B:只要是对称正定矩阵,就可用平方根法求解。

数值分析6-1-0

数值分析6-1-0

(1)消元: (1) 2 x1 4 x2 2 x3 6 (1) 于是: (2) 3x2 6 x3 3 (4) (3) 12 x3 3 (6)
(2)回代:
3 1 x3 , x2 , 2 4
3 x1 2
10
二、计算过程:
( 2) ij
a m a
a
( k 1) ij
a
(k ) ij
bi( k 1) bi( k ) mik bk( k )
i, j k 1,, n i k 1,, n
14
当经过k n 1步后, ( A , b )将化为
(1) (1)
(1 a11) ( n) (n) (A ,b ) (1 a12)
1 2 , x2 3 3
用小主元作除数, 致使其它元素的 数量级大大增加, 舍入误差的扩散 将准确解淹没了。
1. a 0,
k kk
2. a a
k kk
k ik
不行
21
§2.主元素消去法
*全主元素消去法: 一、思路
选取
a
k kk
max a
k ij
二、计算过程
1、实例
12 x1 3x2 3x3 15 (1) 18 x1 3x2 x3 15 (2) x x x 6 (3) 1 2 3
16
三、Gauss消去法的运算量
消元 : n - 1步, 第k步变换n-k行,每行需先求倍数,
再从n 1-k个元素的倍数
作第k步消元乘除法运算总次数为
(n k )(1 n k 1)次
完成全部n 1步消元需作乘除法运算总次数为

数值分析第六章_数值插值方法

数值分析第六章_数值插值方法

M n1 (n 1)!
n1 ( x)
说明:
n=1时,
R1 ( x)

1 2
f
( )2 (x)

1 2
f
( )(x
x0 )(x
x1)
n=2时,
( [x0 , x1])
R2 (x)

1 6
f
( )(x
x0 )(x
x1)(x
x2 )
( [x0 , x2 ])
,
x1,
Hale Waihona Puke xn)1
x1
x12

x1n

n
( xi
ni j1

xj)
1 xn xn2 xnn
因 xi x j (i j) 故上式不为0。
据Cramer法则,方程组解存在且唯一。 故Pn (x)存在且唯一。虽然直接求解上述方程组 可求得插值多项式,但繁琐复杂,一般不用。
得关于a0,a1,…,an的n+1阶线性方程组
a0 a1x0 a0 a1x1
an x0n an x1n

y0 y1
a0 a1xn an xnn yn
其系数行列式是Vandermonde行列式
1 x0 x02 x0n
V
( x0
jk jk
(j,k=0,1)
称l0 (x)及l1 (x)为线性插值基函数。
2. 抛物插值:n=2情形
假定插值节点为x0, x1, x2 ,求二次插值多项式 L2 (x),使 L2(xj)=yj (j=0,1,2) y= L2 (x)的几何意义就是过 (x0, y0),(x1, y1) , (x2, y2)三点的抛物线。 采用基函数方法,设

第6章常微分方程初值问题的解法

第6章常微分方程初值问题的解法
yk 1ykh 2 k[f(xk,yk)f(xk 1,yk 1)]
ykh 2 k[ (ykx k 1 ) ( yk 1x k 1 1 )]
yk11 29 1yk1k05110
预估-校正Euler方法:
y k 1 0 .90 y k 5 0 .00 k 9 0 .1 5
20
Euler方法
xk
yk
yk y(xk)
0.0 1.000000
0.0
梯形方法
yk
yk y(xk)
1.000000
0.0

预估-校正方法
yk
yk y(xk)
1.000000
0.0
0.1 1.000000 0.2 1.010000
4.8×10-3 8.7×10-3
1.004762 1.018594
y(0) 1
其解析解为: y1xe-t2dt x[0,1] 0 很难得到其解析解
4
例如:
y=x+y , x[0,1]

y(0) 1
其解析解为 yx12ex
只有一些特殊类型的微分方程问题能够得到用解析表达式 表示的函数解,而大量的微分方程问题很难得到其解析解。
因此,只能依赖于数值方法去获得微分方程的数值解。
例如:
y=x+y , x[0,1]

y(0) 1
其解析解为:yx12ex
3
但是, 只有一些特殊类型的微分方程问题能够得到用解析 表达式表示的函数解,而大量的微分方程问题很难得到其解 析解。
因此,只能依赖于数值方法去获得微分方程的数值解。
例如:
y =e-x2 ,
x[0,1]
7.5×10-5 1.4×10-4

数值计算chapter6 常微分方程初值问题的数值解法

数值计算chapter6 常微分方程初值问题的数值解法

a = x0 < x1 < x 2 < L < x n = b
2
欧拉方法与改进欧拉方法 一、欧拉方法
对于 ∗ , 等分, 把 [a , b] n 等分,记分点为 b−a x i = a + ih h = , i = 0,1,2, L , n − 1 n
()
dy 由 = f ( x, y ), dx
y0 = 1 y1 = 0.1× 0 + 0.9 ×1 + 0.1 = 1 y2 = 0.1× 0.1 + 0.9×1 + 0.1 = 1.01 y3 = 0.1× 0.2 + 0.9 ×1.01 + 0.1 = 1.029 y4 = 0.1× 0.3 + 0.9 ×1.029 + 0.1 = 1.0561 y5 = 0.1× 0.4 + 0.9 ×1.0561 + 0.1 = 1.09049
(0 ) 先确定一个初始值 y i +1 , 然后再进行迭代计算
k+ k) yi(+1 1) = yi + hf xi +1 , yi(+1
(
)
( k = 0,1,2,L)
直至得到满足精度的近似解 y i +1 .
10
把显式欧拉公式与隐式欧拉公式相加,得 把显式欧拉公式与隐式欧拉公式相加,
h yi +1 = yi + [ f ( xi , yi ) + f ( xi +1 , yi +1 )] ( i = 0,1,2, L , n − 1) 2 梯形公式是一个二阶方法。 梯形公式是一个二阶方法。 上式称为梯形公式 可以证明, 梯形公式。 上式称为梯形公式。可以证明,

_第六章_线性方程组的数值解法迭代法

_第六章_线性方程组的数值解法迭代法

b 1
a 11
b2
f
a 22 bn
a nn
x(k1) B0x(k)f
--------(5)
第四节 解线性方程组的迭代法
令:
0 0 0
L
a 21
0
0 A的下三角部分矩阵
a n1 a n 2 0
0
U
0
a12 0
a1n a2n
A的上三角部分矩阵
第三节 向量范数和矩阵范数
(2)范数的另一个简单例子是二维欧氏空间的长度
0M x2 y2
欧氏范数也满足三个条件:
(勾股定理)
设x = (x1, x2) ① x 0 x >0 ② ax = a x a为常数 ③ x+ y ≤ x + y 前两个条件显然,第三个条件在几何上解释为三角形一边的长度不大于其它 两边长度之和。因此,称之三角不等式。
满足:
① A0,且A0,当且A 仅 0当
,若 A
正定
② A A,为任意实数
奇次
③ ABAB,A和 B为任意 n阶两 方个 三阵 角不等
则称 A 为矩阵A的范数。
第三节 向量范数和矩阵范数
2、矩阵范数与向量范数的相容性 对于任意的n维向量x,都有:
Ax A x
这一性质称为矩阵范数与向量范数的相容性。
n
A
max
1in
j1
aij
A的每行绝对值之和的最大值, 又称A的行范数
第三节 向量范数和矩阵范数
(3)矩阵的2范数
2范数 ||A|2 | : (AT A )
(AAT) ?
矩阵的谱半径:
矩阵B的诸特征值为: i(i1,2, ,n)

第六章_常微分方程初值问题的数值解法_习题课

第六章_常微分方程初值问题的数值解法_习题课

h2 h3 y ( x n ) y ( x n ) O(h 4 ) 2 6 而且 y ( x n ) f ( x n , y ( x n )) , y ( x n 1 ) f ( x n 1 , y ( x n 1 )) ,对 y ( x n 1 ) 也在 x n 处作 Talor 展开, y ( x n 1 ) y ( x n ) hy ( x n )
湖北民族学院理学院《数值计算方法》教学辅导材料
陈以平编写
h2 h3 y ( x n ) y ( x n ) O(h 4 ) 2 6 h h h2 h3 y ( x n ) y ( x n ) y ( x n ) y ( x n ) y ( x n ) O(h 4 ) 2 2 2 12 h3 y ( x n ) O(h 4 ) O(h 3 ) 12 h3 所以,梯形公式是 2 阶方法,其截断误差的主项是 y ( x n ) 。 12 y ( x n ) hy ( x n )
y k (0.9 0.1y k sin x k ) 0.1( y k 1 y k 1 sin x k 1 )
2
当 k=0,x0=1, y0=1 时,x1=1.2,有 y y (. . y sin x ) (. sin ) .
y f ( x, y ) 3.求解初值问题 欧拉法的局部截断误差是( y ( x ) y 改进欧拉法的局部截断误差是( ); 四阶龙格-库塔法的局部截断误差是( ). (A)O(h2) (B)O(h3) (C)O(h4) (D)O(h5)
4. 改进欧拉法的平均形式公式是( ) y p y k hf ( x k , y k ) y p y k hf ( x k , y k ) (B) y c y k hf ( x k , y p ) .(A) y c y k hf ( x k , y p ) y k ( y p y c ) y k ( y p y c ) y p y k hf ( x k , y k ) y p y k hf ( x k , y k ) (C) y c y k hf ( x k , y p ) (D) y c y k hf ( x k , y p ) y k h ( y p y c ) y k ( y p y c ) (D) 答案:

(完整版)数值计算方法教案

(完整版)数值计算方法教案

《计算方法》教案课程名称:计算方法适用专业:医学信息技术适用年级:二年级任课教师:***编写时间: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语言)适用专业:计算机科学与技术、信息管理与信息系统开课学院(部)、系(教研室):医学工程技术学院、医学信息技术专业一、课程的性质与任务计算方法是一门专业必修课。

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

import xiaodeng.method.Matrix;/*** @author邓仕军* @time 2012-06-04* @version0.1* @function:Gauss-Seidel迭代法解线性方程组*/class Program6_1 {Matrix coefficientMatrix;// 系数矩阵Matrix constantMatrix;// 常数矩阵double[] result;// 结果集double precious = 10E-5;int size = 0;// result也即结果集的长度public Program6_1(Matrix coefficientMatrix, Matrix constantMatrix, double precious) {this.coefficientMatrix = coefficientMatrix;this.constantMatrix = constantMatrix;this.precious = precious;this.size = coefficientMatrix.getNumColumns();result = newdouble[size];}// 返回result中的最大值double maxValueOfDiffer(double[] d1, double[] d2) {double max = 0d;for (int i = 0; i<this.size; i++) {double temp = Math.abs(d1[i] - d2[i]);if (i == 0 || max < temp) {max = temp;}}return max;}// 根据当前的result,计算一次,得到新的resultpublicdouble[] calculate() {for (int i = 1; i<= constantMatrix.getNumRows(); i++) {double sum = constantMatrix.getElementAt(i, 1);for (int j = 1; j <= constantMatrix.getNumRows(); j++) { if (j != i)sum -= coefficientMatrix.getElementAt(i, j) * result[j - 1];}// for-2result[i - 1] = sum / coefficientMatrix.getElementAt(i, i);}// for-1return result.clone();//}// calculate// 根据精度,调用calculate,得到在精度范围内的结果集publicvoid function() {double[] temp1, temp2;// 虽然java会自动初始化result为0,但是为了程序的可读性、可移植性、扩展性,还是在这里手动初始化一下for (int i = 0; i<this.size; i++) {result[i] = 0d;}temp1 = calculate();temp2 = calculate();while (maxValueOfDiffer(temp1, temp2) >this.precious) { temp1 = temp2;temp2 = calculate();}// while}// functiondouble getPrecious() {return precious;}void setPrecious(double precious) {this.precious = precious;}int getSize() {return size;}void setSize(int size) {this.size = size;}Matrix getCoefficientMatrix() {return coefficientMatrix;}Matrix getConstantMatrix() {return constantMatrix;}double[] getResult() {return result.clone();}}import xiaodeng.method.Matrix;publicclass TestProgram6_1 {publicstaticvoid main(String[] args) {Program6_1 p6_1 = new Program6_1(new Matrix(3, 3, newdouble[][] {{ 8, -3, 2 }, { 4, 11, -1 }, { 2, 1, 4 } }), new Matrix(3, 1,newdouble[][] { { 20 }, { 33 }, { 12 } }), 10E-5);p6_1.function();// 解方程System.out.println("方程组为:");for(int i = 1; i<= p6_1.getCoefficientMatrix().getNumRows(); i++) {for (int j = 1; j <=p6_1.getCoefficientMatrix().getNumColumns(); j++)if (j != p6_1.getCoefficientMatrix().getNumColumns())System.out.print(p6_1.getCoefficientMatrix().getElementAt(i, j)+ "x" + j + " + ");else {System.out.print(p6_1.getCoefficientMatrix().getElementAt(i, j)+ "x"+ j+ " = "+ p6_1.getConstantMatrix().getElementAt(i, 1));}System.out.println();}System.out.println("解得:");for (int i = 0; i< p6_1.getSize(); i++) {System.out.println("x"+ (i + 1) + "="+ p6_1.getResult()[i]);}}}import ng.reflect.InvocationTargetException;import ng.reflect.Method;/*** @author邓仕军* @time 2012-06-07* @version 0.2* Newton迭代法*/class Program6_2 {Method f;double x0;double precious;Derivative derivaFx;// 导数public Program6_2(Method f, double x0, double precious) { this.f = f;this.x0 = x0;this.precious = precious;derivaFx = new Derivative(this, this.f);derivaFx.setPrecision(this.precious);}publicdouble function() {double Xk = 0d, Xk1 = 0d;try {Xk = this.x0 - (Double) this.f.invoke(null, this.x0)/ this.derivaFx.getDerivative(this.x0);Xk1 = Xk - (Double) this.f.invoke(null, Xk)/ this.derivaFx.getDerivative(Xk);while (Math.abs(Xk - Xk1) >this.precious) {Xk = Xk1;Xk1 = Xk - (Double) this.f.invoke(null, Xk)/ this.derivaFx.getDerivative(Xk);}// while} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {e.printStackTrace();}return (Xk + Xk1) / 2;}// functionpublicdouble getX0() {return x0;}publicvoid setX0(double x0) {this.x0 = x0;}publicdouble getPrecious() {return precious;}publicvoid setPrecious(double precious) {this.precious = precious;}}/***@author邓仕军*@version 0.1*@time 2012-05-03* Derivative:求一个函数的导数,运用反射机制*/class Derivative {Method method;Object obj;double Dx = 1;// 增量△Xdouble precision = 10E-10;// 精度public Derivative(Object obj, Method f) {this.method = f;this.obj = obj;}strictfpdouble getDerivative(double x) {double deriva1 = 0d, deriva2 = 0d;boolean flag = true;double dx = this.Dx;try {deriva1 = ((Double) this.method.invoke(obj, x + dx) - (Double) method.invoke(obj, x)) / dx;dx /= 2;while (flag) {deriva1 = ((Double) this.method.invoke(obj, x + dx) - (Double) method.invoke(obj, x)) / dx;if (Math.abs(deriva1 - deriva2) <this.precision)flag = false;else {deriva2 = deriva1;dx /= 2;}}// while} catch (IllegalAccessException | IllegalArgumentException| InvocationTargetException e) {e.printStackTrace();}return (deriva1 + deriva2) / 2;}// getDerivativepublicdouble getDx() {return Dx;}publicvoid setDx(double dx) {Dx = dx;}publicdouble getPrecision() {return precision;}publicvoid setPrecision(double precision) {this.precision = precision;}}publicclass TestProgram6_2 {staticdouble fX(double x) {return Math.pow(Math.E, 5 * x) - Math.sin(x) + Math.pow(x, 3) - 20;}publicstaticvoid main(String[] args) {double x0 = 1;double precious = 10E-8;try {Program6_2 p6_2 = new Program6_2(TestProgram6_2.class.getDeclaredMethod("fX", double.class),x0, precious);System.out.printf("方程为:e^(5x)-sinx+x^3-20=0 ,精度 ");System.out.println(precious);System.out.println("取 x0=" + x0 + ",解得x=" +p6_2.function());--x0;p6_2.setX0(x0);System.out.println("取 x0=" + x0 + ",解得x=" +p6_2.function());} catch (NoSuchMethodException | SecurityException e) {e.printStackTrace();}}}。

相关文档
最新文档