数值计算方法上机实验题

数值计算方法上机实验

实验内容:

1

.

要求:分别用复化梯形法,复化Simpson 法和 Romberg 公式计算.

2.给定积分

dx e x

⎰3

1

dx x ⎰3

1

1 ,分别用下列方法计算积分值要求准确到510- ,并比较分析计算时间. 1)变步长梯形法; 2)变步长 Simpson 法; 3) Romberg 方法.

算法描述:

1、复合梯形法:⎰=t

dt t a t V 0)()( ))()(2)((21

1

∑-=++=n k k n b f x f a f h

T

输入 被积函数数据点t,a. 输出 积分值.n T

复合Simpson 法:⎰

=t

dt t a t V 0)()( ))()(2)(4)((6101

12

1∑∑---=++++=n k n k k k n b f x f x f a f h

S

输入 被积函数f(x),积分区间[a,b]和n 输出 复合Simpson 积分值n S

步1 .);()(;a x b f a f S n

a

b h n ⇐-⇐-⇐ 步2 对n k ,,2,1 =执行).(2;2

);(4;2x f S S h

x x x f S S h x x n n n n +⇐+⇐+⇐+⇐

步3 n n S h

S ⨯⇐6

步4 输出n S

Romberg 积分法:

根据已知数据对其进行多项式拟合得出p(x);f(x)⇐p(x); 输入 被积函数f(x),积分区间端点a,b,允许误差ε 输出 Romberg 积分值n R 2 步1 .0;0;0;0));()((2;1111⇐===+⇐

-⇐k R C S b f a f h

T a b h 步2 反复执行步3→步9. 步3 .2

;0h a x S +

⇐⇐ 步4 反复执行步5→步6. 步5 ;);(h x x x f S S +⇐+⇐

步6 若x ≥b,则退出本层循环. 步7 执行.63

1

6364;1511516;3134;2212212212212C C R S S C T T S S h T T -⇐-⇐-⇐+⇐

步8 执行.1;;;;;2

;2121212112+⇐⇐⇐⇐⇐⇐

-⇐k k R R C C S S T T h

h R R e 步9 若e ≤ε且k ≥5,则退出循环. 步10 .22R R n ⇐ 步11 输出.2n R

2、变步长梯形算法:

功能 求积分

b

a

)(dx x f ,允许误差为ε。

输入 被积函数f(x),a,b, ε。 输出 复合梯形积分值T n 2。 步1 h ⇐b-a. 步2

T 1⇐

))()((2

b f a f h

-。 步3 反复执行步4——步10. 步4 S ⇐0;x ⇐a+h/2. 步5 反复执行步6——步7. 步6 S ⇐S+f(x);x ⇐x+h.

步7 若x ≥b,则退出本层循环。 步8

S T T

⨯+⇐2

h

212

.

步9 T T T T h h e 2

112;2

;⇐⇐-⇐. 步10 若e ε≤,退出循环. 步11

.22T T

n

步12 输出T n 2

复合Simpson 法算法:

功能 用复合Simpson 公式求积分

b

a

)(dx x f 。

输入 被积函数f(x),积分区间[a,b]和n 。 输出 复合Simpson 积分值S n 。 步1 .);()(;h a x b f a f n a

b S n

⇐-⇐-⇐

. 步2 对k=1,2,…,n 执行)(2;2

);(4;

2

x x f h x x x f h x S S S S n n n n +⇐+⇐+⇐+⇐。

步3

S S n n h

⨯⇐

2

. 步4 输出S n

Romberg 积分法算法:

功能 计算积分

b

a

)(dx x f ,允许误差为ε。

输入 被积函数f(x), 积分区间端点a,b, 允许误差为ε。 输出 Romberg 积分值R n 2。

步1 0;0;0;0));()((2

;

h 1111⇐===+⇐-⇐k b f a f h a b R C S T .

步2 反复执行步3——步9. 步3 S ⇐0;x ⇐a+h/2. 步4 反复执行步5——步6. 步5 S ⇐S+f(x);x ⇐x+h.

步6 若x ≥b,则退出本层循环。 步7

C C R S S C T T S T T

S 1

2212212212

63

16364;1511516;31342h 2-⇐-⇐-⇐⨯+⇐;. 步8 执行1k k ;;;;;2;2

1212121

12

+⇐⇐⇐⇐⇐⇐

-⇐

R

R C C S S T T R R

h

h e .

步10 若e ε≤且5≥k ,则退出循环. 步11

.22R R

n

步12 输出R n 2

源程序清单:

1、复合梯形法源程序清单:

>> t=[0 10 20 30 40 50 60 70 80];

>> a=[30.00 31.63 33.44 35.47 37.75 40.33 42.39 46.69 50.67]; >> h=10;v0=0;

>> v50=v0+(h/2)*(a(1)+2*(a(2)+a(3)+a(4)+a(5))+a(6))

>> v80=v0+(h/2)*(a(1)+2*(a(2)+a(3)+a(4)+a(5)+a(6)+a(7)+a(8))+a(9))

复合Simpson 法源程序清单:

>> t=[0 10 20 30 40 50 60 70 80];

>> a=[30.00 31.63 33.44 35.47 37.75 40.33 42.39 46.69 50.67]; >> h=20;v0=0;

>> v80=v0+(h/6)*(a(1)+4*(a(2)+a(4)+a(6)+a(8))+2*(a(3)+a(5)+a(7))+a(9)) >> x=[0 10 20 30 40 50];y=[30.00 31.63 33.44 35.47 37.75 40.33]; >> p=polyfit(x,y,2);poly2sym(p);x=[5 15 25 35 45 ];q=polyval(p,x); >> a=[30.00 q(1) 31.63 q(2) 33.44 q(3) 35.47 q(4) 37.75 q(5) 40.33]; >> h=10;

>> v50=v0+(h/6)*(a(1)+4*(a(2)+a(4)+a(6)+a(8)+a(10))+2*(a(3)+a(5)+a(7)+a(9))+a(11))

Romberg积分法源程序清单:

function R2n=Romberg(f,a,b,tol)

h=b-a;T1=(h/2)*(feval(f,a)+feval(f,b));S1=0;C1=0;R1=0;k=0;

while 1

S=0;x=a+h/2;

while 1

S=S+feval(f,x);x=x+h;

if x>=b

break

end

end

T2=T1/2+(h/2)*S;S2=(4/3)*T2-(1/3)*T1;

C2=(16/15)*S2-(1/15)*S1;R2=(64/63)*C2-(1/63)*C1;

e=abs(R2-R1);h=h/2;

T1=T2;S1=S2;C1=C2;R1=R2;k=k+1;

if e<=tol&k>=5

break

end

end

R2n=R2;

>> x=[0 10 20 30 40 50 60 70 80];

>> y=[30.00 31.63 33.44 35.47 37.75 40.33 42.39 46.69 50.67];

>> p=polyfit(x,y,3);y=poly2sym(p)

function y=f(x)

y=(5930286613326077*x^3)/295147905179352825856 - (3295392375650087*x^2)/4611686018427387904 + (3387527922312137*x)/18014398509481984 + 74033/2475

>> a=0;b=50;tol=0.000005;

>> v50=Romberg('f',a,b,tol)

>> a=0;b=80;tol=0.000005;

>>80=Romberg('f',a,b,tol)

2、变步长梯形法源程序清单:

function T2n=Vsm(f,a,b,tol)

h=b-a;

T1=h/2*(feval(f,a)+feval(f,b));

while 1

S=0;x=a+h/2;

while 1

S=S+feval(f,x);x=x+h;

if x>=b

break

end

end

T2=T1/2+h*S/2;

e=abs(T2-T1);h=h/2;T1=T2;

if e<=tol

break

end

end

T2n=T2;

function y=f(x)

y=exp(x);

>> a=1;b=3;tol=0.000005;

>> I=Vsm('f',a,b,tol)

function y=f(x)

y=1./x;

>> a=1;b=3;tol=0.000005;

>> I=Vsm('f1',a,b,tol)

变步长Simpson 法源程序清单:

function I=gauss2(gfun,a,b,n)

h=(b-a)/n;

gp1=1/sqrt(3);

gp2=-gp1;

k=1:n;

g1=feval(gfun,a+h/2*(gp2+2*k-1)); g2=feval(gfun,a+h/2*(gp1+2*k-1)); I=h/2*sum(g1+g2);

function f=gfun(x)

y=exp(x);

>> I=gauss2('gfun',1,3,8)

function f=gfun(x)

y=1./;

>> I=gauss2('gfun',1,3,8)

Romberg 方法源程序清单:

function R2n=Vsm(f,a,b,tol)

h=b-a;

T1=h/2*(feval(f,a)+feval(f,b));

S1=0;C1=0;R1=0;k=0;

while 1

S=0;x=a+h/2;

while 1

S=S+feval(f,x);x=x+h;

if x>=b

break

end

end

T2=T1/2+h*S/2;

S2=4*T2/3-T1/3;

C2=(16/15)*S2-(1/16)*S1;

R2=(64/63)*C2-(1/63)*C1;

e=abs(R2-R1);h=h/2;T1=T2;S1=S2;C1=C2;R1=R2;k=k+1; if (e<=tol)&(k>=5)

break

end

end

R2n=R2;

function y=f(x)

y=exp(x);

>> a=1;b=3;tol=0.000005;

>> I=Vsm('f',a,b,tol)

function y=f(x)

y=1./x;

>> a=1;b=3;tol=0.000005;

>> I=Vsm('f1',a,b,tol)

《数值计算方法》试题集及答案

《计算方法》期中复习试题 一、填空题: 1、已知3.1)3(,2.1)2(,0.1)1(===f f f ,则用辛普生(辛卜生)公式计算求得 ?≈3 1 _________ )(dx x f ,用三点式求得≈')1(f 。 答案:2.367,0.25 2、1)3(,2)2(,1)1(==-=f f f ,则过这三点的二次插值多项式中2 x 的系数为 ,拉 格朗日插值多项式为 。 答案:-1, )2)(1(21 )3)(1(2)3)(2(21)(2--------= x x x x x x x L 3、近似值*0.231x =关于真值229.0=x 有( 2 )位有效数字; 4、设)(x f 可微,求方程)(x f x =的牛顿迭代格式是( ); 答案 )(1)(1n n n n n x f x f x x x '--- =+ 5、对1)(3 ++=x x x f ,差商=]3,2,1,0[f ( 1 ),=]4,3,2,1,0[f ( 0 ); 6、计算方法主要研究( 截断 )误差和( 舍入 )误差; 7、用二分法求非线性方程 f (x )=0在区间(a ,b )内的根时,二分n 次后的误差限为 ( 1 2+-n a b ); 8、已知f (1)=2,f (2)=3,f (4)=5.9,则二次Newton 插值多项式中x 2系数为( 0.15 ); 11、 两点式高斯型求积公式?1 d )(x x f ≈( ?++-≈1 )] 321 3()3213([21d )(f f x x f ),代数精度 为( 5 ); 12、 为了使计算 32)1(6 )1(41310-- -+-+ =x x x y 的乘除法次数尽量地少,应将该表达 式改写为 11 ,))64(3(10-= -++=x t t t t y ,为了减少舍入误差,应将表达式1999 2001-

数值分析上机实验

目录 1 绪论 (1) 2 实验题目(一) (2) 2.1 题目要求 (2) 2.2 NEWTON插值多项式 (3) 2.3 数据分析 (4) 2.3.1 NEWTON插值多项式数据分析 (4) 2.3.2 NEWTON插值多项式数据分析 (6) 2.4 问答题 (6) 2.5 总结 (7) 3 实验题目(二) (8) 3.1 题目要求 (8) 3.2 高斯-塞德尔迭代法 (8) 3.3 高斯-塞德尔改进法—松弛法 (9) 3.4 松弛法的程序设计与分析 (9) 3.4.1 算法实现 (9) 3.4.2 运算结果 (9) 3.4.3 数据分析 (11) 4 实验题目(三) (13) 4.1 题目要求 (13) 4.2 RUNGE-KUTTA 4阶算法 (13) 4.3 RUNGE-KUTTA 4阶算法运算结果及数值分析 (14) 总结 (16) 附录A (17)

1绪论 数值分析是计算数学的一个主要部分,它主要研究各类数学问题的数值解法,以及分析所用数值解法在理论上的合理性。实际工程中的数学问题非常复杂,所以往往需要借助计算机进行计算。运用数值分析解决问题的过程:分析实际问题,构建数学模型,运用数值计算方法,进行程序设计,最后上机计算求出结果。 数值分析这门学科具有面向计算机、可靠的理论分析、好的计算复杂性、数值实验、对算法进行误差分析等特点。 本学期开设了数值分析课程,该课程讲授了数值分析绪论、非线性方程的求解、线性方程组的直接接法、线性方程组的迭代法、插值法、函数逼近与曲线拟合、数值积分和数值微分、常微分方程初值问题的数值解法等内容。其为我们解决实际数学问题提供了理论基础,同时我们也发现课程中很多问题的求解必须借助计算机运算,人工计算量太大甚至无法操作。所以学好数值分析的关键是要加强上机操作,即利用计算机程序语言实现数值分析的算法。本报告就是基于此目的完成的。 本上机实验是通过用计算机来解答数值分析问题的过程,所用的计算工具是比较成熟的数学软件MATLAB。MATLAB是Matrix Laboratory的缩写,是以矩阵为基础的交互式程序计算语言。MATLAB是一款具有强大的矩阵运算、数据处理和图形显示功能的软件,其输出结果可视化,编程效率极高,用极少的代码即可实现复杂的运行,因此它使工程技术人员摆脱了繁琐的程序代码,以便快速地验证自己的模型和算法。其主要特点包括:强大的数值运算功能;先进的资料视觉化功能高阶但简单的程序环境;开方及可延展的构架;丰富的程式工具箱。 在科学研究和工程计算领域经常会遇到一些非常复杂的计算问题,利用计算器或手工计算是相当困难或无法实现的,只能借助计算机编程来实现。MATLAB将高性能的数值计算和可视化的图形工具集成在一起,提供了大量的内置函数,使其在科学计算领域具有独特的优势。 最后感谢数值分析课程任课教师赵海良老师的悉心指导!

数值计算方法上机实验题

数值计算方法上机实验 实验内容: 1 . 要求:分别用复化梯形法,复化Simpson 法和 Romberg 公式计算. 2.给定积分 dx e x ⎰3 1 和 dx x ⎰3 1 1 ,分别用下列方法计算积分值要求准确到510- ,并比较分析计算时间. 1)变步长梯形法; 2)变步长 Simpson 法; 3) Romberg 方法. 算法描述: 1、复合梯形法:⎰=t dt t a t V 0)()( ))()(2)((21 1 ∑-=++=n k k n b f x f a f h T 输入 被积函数数据点t,a. 输出 积分值.n T 复合Simpson 法:⎰ =t dt t a t V 0)()( ))()(2)(4)((6101 12 1∑∑---=++++=n k n k k k n b f x f x f a f h S 输入 被积函数f(x),积分区间[a,b]和n 输出 复合Simpson 积分值n S 步1 .);()(;a x b f a f S n a b h n ⇐-⇐-⇐ 步2 对n k ,,2,1 =执行).(2;2 );(4;2x f S S h x x x f S S h x x n n n n +⇐+⇐+⇐+⇐ 步3 n n S h S ⨯⇐6 步4 输出n S Romberg 积分法: 根据已知数据对其进行多项式拟合得出p(x);f(x)⇐p(x); 输入 被积函数f(x),积分区间端点a,b,允许误差ε 输出 Romberg 积分值n R 2 步1 .0;0;0;0));()((2;1111⇐===+⇐ -⇐k R C S b f a f h T a b h 步2 反复执行步3→步9. 步3 .2 ;0h a x S + ⇐⇐ 步4 反复执行步5→步6. 步5 ;);(h x x x f S S +⇐+⇐

数值计算方法试题集及答案

《数值计算方法》复习试题 一、填空题: 1、,则 A 的LU分解为。 答案: 3、,则过这三点的二次插值多项式中的系数为,拉格朗日插值多项式 为。 答案:-1, 4、近似值关于真值有( 2 ) 位有效数字; 5、设可微, 求方程的牛顿迭代格式是( ) ; 答案 6、对, 差商( 1 ),( 0 ) ; 7、计算方法主要研究( 截断) 误差和( 舍入) 误差; 8、用二分法求非线性方程 f (x)=0 在区间( a, b)内的根时,二分n 次后的误差限为( ); 10、已知f(1) =2,f(2)=3,f(4) =,则二次Newton插值多项式中x2系数为( ) ; 11、解线性方程组Ax=b 的高斯顺序消元法满足的充要条件为(A 的各阶顺序主子式均 不为零)。 12、为了使计算的乘除法次数尽量地少,应将该表达式改写为,为了减少舍入误差,应将表达式改写为。 13、用二分法求方程在区间[0,1] 内的根,进行一步后根的所在区间为,1 , 进行两步 后根的所在区间为,。 14、求解方程组的高斯—塞德尔迭代格式为,该迭代格式的迭代矩阵的谱半径 15、设, 则,的二次牛顿插值多项式为。 16、求积公式的代数精度以( 高斯型) 求积公式为最高,具有( ) 次代数精度。 21、如果用二分法求方程在区间内的根精确到三位小数,需对分( 10 )次。 22、已知是三次样条函数,则 =( 3 ) ,=( 3 ),=( 1 )。 23、是以整数点为节点的Lagrange 插值基函数,则 ( 1 ) ,( ) ,当时( ) 。 24、 25、区间上的三次样条插值函数在上具有直到 ____ 2 ____ 阶的连续导数。 26、改变函数() 的形式,使计算结果较精确。

数值计算方法上机实习题答案.doc

1.设I n 1 x n dx , 0 5 x ( 1)由递推公式 I n 5I n 11 ,从 I 0的几个近似值出发,计算I 20;n 解:易得: I 0 ln6-ln5=0.1823, 程序为: I=0.182; for n=1:20 I=(-5)*I+1/n; end I 输出结果为: I 20= -3.0666e+010 ( 2)粗糙估计 I 20,用 I n 1 1 I n 1 1 ,计算 I 0; 5 5n 0.0079 1 x 20 1 x 20 0.0095 因为 dx I 20 dx 6 5 所以取 I 20 1 (0.0079 0.0095) 0.0087 2 程序为: I=0.0087; for n=1:20 I=(-1/5)*I+1/(5*n); end I I 0= 0.0083 ( 3)分析结果的可靠性及产生此现象的原因(重点分析原因 )。 首先分析两种递推式的误差;设第一递推式中开始时的误差为E0 I 0 I 0,递推过程的舍入误差不计。并记 E n I n I n,则有 E n 5E n 1 ( 5) n E0。因为 E20 ( 5) 20 E0 I 20,所此递推式不可靠。而在第二种递推式中E0 1 E1 ( 1 )n E n,误差在缩小,5 5 所以此递推式是可靠的。出现以上运行结果的主要原因是在构造递推式过程中,考虑误差是否得到控制,即算法是否数值稳定。 2.求方程e x10x 2 0 的近似根,要求x k 1x k 5 10 4,并比较计算量。 (1)在 [0, 1]上用二分法; 程序: a=0;b=1.0; while abs(b-a)>5*1e-4 c=(b+a)/2;

数值计算方法上机实验考试答案

数值计算方法上机实验考试答案 1. 小型火箭初始质量为900千克,其中包括600千克燃料。火箭竖直向上发射时燃料以15千克/秒的速率燃烧掉,由此产生30000牛顿的恒定推力。当燃料用尽时引擎关闭。设火箭上升的整个过程中,空气阻力与速度平方成正比,比例系数为0.4(千克/米)。重力加速度取9.8米/秒 2. A. 建立火箭升空过程的数学模型(微分方程); B. 求引擎关闭瞬间火箭的高度、速度、加速度,及火箭到达最高点的时间和高度。 解: A . 建立模型: )(t x ——t 时刻的火箭高度;T =30000(牛顿)——火箭推力,当时间t >40秒时,T=0; m t m 150-=——火箭飞行过程中的质量,t >40秒时,300=m 千克 0m =900(千克)——火箭初始质量; 1m =600(千克)——燃料质量; c =15(千克/秒)——燃料的燃烧速率; k =0.4(千克/米)——空气阻力系数; g =9.8(米/秒2)——重力加速度 由能量守恒定律,可得到火箭飞行过程的方程: mg T t x k t x m -+'-=''2)]([)( 这是一个初值问题,初始条件为 0)0(,0)0(='=x x 设)(),(21t x x t x x '==,则问题化为求下列微分方程组的初值问题: ?? ???--+--='='g t m T x t m k x x x 151******** 0)0(,0)0(21==x x B . 关闭引擎时4015/600==t (秒),所求的是此时火箭的高度)40(1x ;速度)40(2x ; 加速度)40()40(21x x '''或,及火箭到最高点的时间m t 和高度)(1m t x 。具体的Matlab 程序如下: 首先建立微分方程的的m 文件: function y=huojian(t,x) k=0.4;g=9.8;m0=900;T=30000;m=m0-15*t; if t>40 T=0; m=300; end

数值分析上机作业1-1解析

数值计算方法上机题目1 1、实验1. 病态问题 实验目的: 算法有“优”与“劣”之分,问题也有“好”和“坏”之别。所谓坏问题就是问题本身的解对数据变化的比较敏感,反之属于好问题。希望读者通过本实验对此有一个初步的体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出: 考虑一个高次的代数多项式 ∏=-= ---=20 1 )()20)...(2)(1()(k k x x x x x p (E1-1) 显然该多项式的全部根为l ,2,…,20,共计20个,且每个根都是单重的(也称为简单的)。现考虑该多项式方程的一个扰动 0)(19 =+x x p ε (E1-2) 其中ε是一个非常小的数。这相当于是对(E1-1)中19 x 的系数作一个小的扰动。我们希望比较(E1-1)和(E1-2)根的差别,从而分析方程(E1-1)的解对扰动的敏感性。 实验内容: 为了实现方便,我们先介绍两个 Matlab 函数:“roots ”和“poly ”,输入函数 u =roots (a ) 其中若变量a 存储1+n 维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为 121,...,,+n a a a ,则输出u 的各分量是多项式方程 0...1121=++++-n n n n a x a x a x a 的全部根,而函数 b=poly(v) 的输出b 是一个n +1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“Poly ”是两个互逆的运算函数. ve=zeros(1,21); ve(2)=ess; roots(poly(1:20))+ve) 上述简单的Matlab 程序便得到(E1-2)的全部根,程序中的“ess ”即是(E1-2)中的ε。 实验要求: (1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。如果扰动项的系数ε很小,我们自然感觉(E1-1)和(E1-2)的解应当相差很小。计算中你有什么出乎意料的发现?表明有些解关于如此的扰动敏感性如何? (2)将方程(E1-2)中的扰动项改成18 x ε或其他形式,实验中又有怎样的现象出现? 实验步骤:

数值分析韩旭里答案

数值分析韩旭里答案 【篇一:数值分析上机题目】 >1631110xxxx 材料科学与工程学院 一.第2章插值法 l2.7 给定数据表2-15.用newton插值公式计算3次插值多项式 n3(x). 表2-15 x f(x) 1 1.25 1.5 2.50 0 1.00 2 5.50 a. matlab代码如下,two.m, %第二章,p45,练习题2第七题 clear(); x=[1,1.5,0,2]; y(:,1)=[1.25,2.50,1.00,5.50];%已知点集合x和y syms t w; w(1)=1; %计算基函数序列w和差商表y,以及函数序列的权数diag(y),计 算的牛顿三次多项式表述为t的函数 for j=2:length(x) for i=j:length(x) y(i,j)=(y(i,j-1)-y(i-1,j-1))/(x(i)-x(i-j+1)); i=i+1; end w(j)=prod(t-x(1:j-1)); j=j+1; end disp(三次牛顿插值多项式为); disp(collect(w*diag(y))); plot(x,y(:,1),*); hold on; fplot(collect(w*diag(y)),[-0.5,2.5]); legend({已知点集,三次牛顿插值多项式函 数},location,northwest,fontsize,14); xlabel(x,fontsize,16); ylabel(y,fontsize,16); hold off; b. 计算结果如下: 二.第3章函数逼近与数据拟合 a. matlab代码,three.m, %第三章函数逼近与数据拟合,p68练习题,第2题 clear(); syms x; %所使用的非线性基函数序列,用符号表示 y=abs(x);%被逼近函数f=[1,x^2,x^4]; %求解法方程的系数矩阵a*gn=b,其中a和b均为行向量 gn=ones(length(f),length(f)); for i=1:length(f) for j=1:length(f) gn(i,j)=int(f(i)*f(j),-1,1);j=j+1; end

数值分析报告上机第四次作业

数值分析上机第四次作业 实验项目:共轭梯度法求解对称正定的线性方程组 实验容:用共轭梯度法求解下面方程组 (1) 123421003131020141100155x x x x -⎛⎫⎛⎫⎛⎫ ⎪ ⎪ ⎪--- ⎪ ⎪ ⎪= ⎪ ⎪ ⎪-- ⎪ ⎪ ⎪-⎝⎭⎝⎭ ⎝⎭ 迭代20次或满足()(1) 1110k k x x --∞-<时停止计算。 (2) Ax b =,A 是1000阶的Hilbert 矩阵或如下的三对角矩阵, A[i,i]=4,A[i,i-1]=A[i-1,i]=-1,i=2,3,..,n b[1]=3, b[n]=3, b[i]=2,i=2,3,…,n-1 迭代10000次或满足()()710k k r b Ax -=-≤时停止计算。 〔3〕*考虑模型问题,方程为 222222(),(,)(0,1)(0,1)(0,)1,(1,),01 (,0)1,(,1),01 xy y x u u x y e x y D x y u y u y e y u x u x e x ∂∂+=+∈=⨯∂∂==≤≤==≤≤ 用正方形网格离散化,假如取1/,10h N N ==,得到100n =的线性方程组,并用共轭梯度法〔CG 法〕求解,并对解作图。 实验要求:迭代初值可以取01(,1,...,)ij u i j N ==,计算到32||||10k r -≤停止.此题有准确解(,)xy u x y e =,这里k u 表示以k ij u 为分量的向量,u 表示在相应点(,)i j 上 取值作为分量的向量. 实验一: 〔1〕 编制函数子程序CGmethod 。 function [x,k]=CGmethod(A,b) n=length(A);x=zeros(n,1);r=b-A*x;rho=r'*r; k=0; while rho>10^(-12) & k<20 k=k+1; if k==1 p=r; else beta=rho/rho1; p=r+beta*p; end

数值计算方法试题集及答案

数值计算方法试题集及答案 《数值计算方法》复习试题 一、填空题: 1、,则 A 的LU分解为。 答案: 3、,则过这三点的二次插值多项式中的系数为,拉格朗日插值多项式 为。 答案:-1, 4、近似值关于真值有( 2 ) 位有效数字; 5、设可微, 求方程的牛顿迭代格式是( ) ; 答案 6、对, 差商( 1 ),( 0 ) ; 7、计算方法主要研究( 截断) 误差和( 舍入) 误差; 8、用二分法求非线性方程 f (x)=0 在区间( a, b)内的根时,二分n 次后的误差限为( ); 10、已知f(1) =2,f(2)=3,f(4) =,则二次Newton插值多项式中x2系数为( ) ; 11、解线性方程组Ax=b 的高斯顺序消元法满足的充要条件为(A 的各阶顺序主子式均 不为零)。 12、为了使计算的乘除法次数尽量地少,应将该表达式改写为,为了减少舍入误差,应将表达式改写为。 13、用二分法求方程在区间[0,1] 内的根,进行一步后根的所在区间为,1 , 进行两步 后根的所在区间为,。 14、求解方程组的高斯—塞德尔迭代格式为,该迭代格式的迭代矩阵的谱半径 15、设, 则,的二次牛顿插值多项式为。

16、求积公式的代数精度以( 高斯型) 求积公式为最高,具有( ) 次代数精度。 21、如果用二分法求方程在区间内的根精确到三位小数,需对分( 10 )次。 22、已知是三次样条函数,则 =( 3 ) ,=( 3 ),=( 1 )。 23、是以整数点为节点的Lagrange 插值基函数,则 ( 1 ) ,( ) ,当时( ) 。 24、 25、区间上的三次样条插值函数在上具有直到 ____ 2 ____ 阶的连续导数。 26、改变函数() 的形式,使计算结果较精确。 27、若用二分法求方程在区间[1,2] 内的根,要求精确到第 3 位小数,则需要对分10 次。 28、写出求解方程组的Gauss-Seidel 迭代公式,迭代矩阵为,此迭代法是否收敛收敛。 31、设, 则9 。 32、设矩阵的,则。 33、若,则差商 3 。 34、线性方程组的最小二乘解为。 36、设矩阵分解为,则。 二、单项选择题: 1、Jacobi 迭代法解方程组的必要条件是( C ) A .A的各阶顺序主子式不为零 B . C. D 2、设,则为( C ) . A .2 B .5 C.7 D .3 4、求解线性方程组Ax=b的LU分解法中,A须满足的条件是( B ) A.对称阵B.正定矩阵

数值分析上机题目

数值分析上机题目4(总21页) --本页仅作为文档封面,使用时请直接删除即可-- --内页可以根据需求调整合适字体及大小--

实验一 实验项目:共轭梯度法求解对称正定的线性方程组 实验内容:用共轭梯度法求解下面方程组 (1) 123421003131020141100155x x x x -⎛⎫⎛⎫⎛⎫ ⎪ ⎪ ⎪--- ⎪ ⎪ ⎪= ⎪ ⎪ ⎪-- ⎪ ⎪ ⎪-⎝⎭⎝⎭⎝⎭ 迭代20次或满足()(1) 1110k k x x --∞ -<时停止计算。 编制程序:储存m 文件 function [x,k]=CGmethod(A,b) n=length(A);x=2*ones(n,1);r=b-A*x;rho=r'*r; k=0; while rho>10^(-11) & k<1000 k=k+1; if k==1 p=r; else beta=rho/rho1; p=r+beta*p; end w=A*p; alpha=rho/(p'*w); x=x+alpha*p; r=r-alpha*w; rho1=rho; rho=r'*r; end 运行程序: clear,clc A=[2 -1 0 0;-1 3 -1 0;0 -1 4 -1;0 0 -1 5]; b=[3 -2 1 5]'; [x,k]=CGmethod(A,b) 运行结果: x = (2) Ax b =,A 是1000阶的Hilbert 矩阵或如下的三对角矩阵, A[i,i]=4,A[i,i-1]=A[i-1,i]=-1,i=2,3,..,n b[1]=3, b[n]=3, b[i]=2,i=2,3,…,n-1

数值分析试验上机题

数值分析 课程实验指导书 实验一 非线性方程求根 、要求 1、编制一个程序进行运算,最后打印出每种迭代格式的敛散 情况; 2、用事后误差估计 3、初始值的选取对迭代收敛有何影响; 4、分析迭代收敛和发散的原因。 三、目的和意义 1、通过实验进一步了解方程求根的算法; 2、认识选择计算格式的重要性; 3、掌握迭代算法和精度控制; 4、明确迭代收敛性与初值选取的关系。 四、实验学时: 2 学时 五、实验步骤: 1.进入 matlab 开发环境; 2.根据实验内容和要求编写程序; 3.调试程序; 、问题提出 ** 设方程 f (x) x 3 3x 1 0 有三个实根 x 1* 1.8793, x *2 0.34727, 1.53209 现采用下面六种不同计算格式,求 f(x)=0 的根 x 1 或 x 2 3x 1 2 x x 3 1 3 3 3x 1 1 x 2 3 3 1 x 1 x 3 3x 1 x ( 2 ) 3 x 2 1 x 3 1、 2、 3、 4、 5、 6、 x k 1 x k 来控制迭代次数,并且打印出迭代的次数;

4.运行程序;5.生成报告

实验二线方程组的直接解法 一、问题提出给出下列几个不同类型的线性方程组,请用适当算法计算其解。 1、设线性方程组 4231210000x15 8653650100x212 4221321031x33 021*******x42 4261673323x53 86857172635x646 021*******x713 161011917342122x838 462713920124x919 00183248631x1021 x (1, 1,0,1,2,0,3,1, 1,2)T 2、设对称正定阵系数阵线方程组 42402400x10 22121320x26 411418356x320 02161433x423 2181224103x59 433441114x622 025*******x715 006334219x845 x (1, 1,0, 2,1, 1,0, 2)T 3、三对角形线性方程组 4100000000x17 1410000000x25

(完整版)数值计算方法上机实习题答案

1. 设⎰+=1 05dx x x I n n , (1) 由递推公式n I I n n 1 51+-=-,从0I 的几个近似值出发,计算20I ; 解:易得:0I =ln6-ln5=0.1823, 程序为: I=0.182; for n=1:20 I=(-5)*I+1/n; end I 输出结果为:20I = -3.0666e+010 (2) 粗糙估计20I ,用n I I n n 51 5111+- =--,计算0I ; 因为 0095.05 6 0079.01020 201 020 ≈<<≈⎰⎰dx x I dx x 所以取0087.0)0095.00079.0(2 1 20=+= I 程序为:I=0.0087; for n=1:20 I=(-1/5)*I+1/(5*n); end I 0I = 0.0083 (3) 分析结果的可靠性及产生此现象的原因(重点分析原因)。 首先分析两种递推式的误差;设第一递推式中开始时的误差为000I I E '-=,递推过程的舍入误差不计。并记n n n I I E '-=,则有01)5(5E E E n n n -==-=- 。因为=20E 20020)5(I E >>-,所此递推式不可靠。而在第二种递推式中n n E E E )5 1(5110-==-= ,误差在缩小, 所以此递推式是可靠的。出现以上运行结果的主要原因是在构造递推式过程中,考虑误差是否得到控制, 即算法是否数值稳定。 2. 求方程0210=-+x e x 的近似根,要求4 1105-+⨯<-k k x x ,并比较计算量。 (1) 在[0,1]上用二分法; 程序:a=0;b=1.0; while abs(b-a)>5*1e-4 c=(b+a)/2;

数值分析上机实验报告七

实验报告七 题目: 线性方程组的直接解法 摘要:在数值计算中,关于线性方程组的解法有两类:直接法和迭代法。本实验研究线性方程组的直接解法。 前言:(目的和意义) 掌握线性方程组的直接解法,如高斯消去法,LU 解法,平方根法和列住元消去法等。 数学原理: 高斯消去法: 第一步先进行消元计算(1,2,...,1)k n =- ()() (1)()()(1)()()/(1,...,), (,1,...,),(1,...,). k k ik ik kk k k k ij ij ik kj k k k i i ik k m a a i k n a a m a i j k n b b m b i k n ++= =+=- =+=- =+ 第二步进行回代计算 ()() ()()() 1/,()/(1,2,...,2,1). n n n n nn n k k k k k kj j kk j k x b b x b a x a k n n =+⎧=⎪ ⎨=- =--⎪⎩ ∑ 平方根分解法: 设A 为对称阵,且A 的所有顺序主子式均不为零,利用A 的对称性将U 再分解,即 112 11 11 1,1,111 2201 ,1n n n n n u u u u u u nn u u U DU u ---⎡⎤⎧⎫⎢⎥⎪⎪⎢⎥ ⎪⎪==⎨ ⎬⎢⎥⎪⎪⎢⎥ ⎪⎪⎢⎥⎩ ⎭⎣ ⎦ 其中D 为对角阵,为单位上三角阵。于是 00 (1) (),(2) T T T A LU LDU A A U DL == ==

又由分解的唯一性得0T D L =,代入(1)式得到对称矩阵A 的分解式T A LDL = 程序设计: 本实验采用Matlab 的M 文件编写。 对于Hilbert 矩阵,用LU 分解的源程序是; i=n;%%n 代表阶数 h=hilb(i) [L,U]=lu(h) 平方根法: 直接在Matlab 命令窗口编写 先对A 矩阵作Cholesky 分解: >>L=chol(h) 检验其正确性 >>L'*L 将L 转化为下三角矩阵: >>L=L' 利用LU 分解法求解线性方程组(十阶Hilbert 矩阵),程序如下: H=[1,1/2,1/3,1/4,1/5,1/6,1/7,1/8,1/9,1/10;1/2,1/3,1/4,1/5,1/6,1/7,1/8,1/9,1/10,1/11;1/3,1/4,1/5,1/6,1/7,1/8,1/9,1/10,1/11,1/12;1/4,1/5,1/6,1/7,1/8,1/9,1/10,1/11,1/12,1/13;1/5,1/6,1/7,1/8,1/9,1/10,1/11,1/12,1/13,1/14;1/6,1/7,1/8,1/9,1/10,1/11,1/12,1/13,1/14,1/15;1/7,1/8,1/9,1/10,1/11,1/12,1/13,1/14,1/15,1/16;1/8,1/9,1/10,1/11,1/12,1/13,1/14,1/15,1/16,1/17;1/9,1/10,1/11,1/12,1/13,1/14,1/15,1/16,1/17,1/18;1/10,1/11,1/12,1/13,1/14,1/15,1/16,1/17,1/18,1/19] b=[1/2,1,1/3,1/4,0,0,1/2,0,1,1]'; [L,U]=lu(H); x=U\(L\b) 直接建立求解该方程组的M 文件Gauss.m 如下: A=[0.4096,0.1234,0.3678,0.2943;0.2246,0.3872,0.4015,0.1129;0.3645,0.1920,0.3781,0.0643;0.1784,0.4002,0.2786,0.3927]; b=[0.4043,0.1550,0.4240,-0.2557]'; [m,n]=size(A); if m~=n error; return ; end

数值分析上机实验指导书

“数值计算方法”上机实验指导书 实验一 误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对(1.1)中19x 的系数作一个小的扰动。我们希望比较(1.1)和(1.2)根的差别,从而分析方程(1.1)的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个MATLAB 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 p o l y (v b = 的输出b 是一个n+1维向量,它是以n 维向量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ) )20:1((; )2();21,1(; 000000001.0ve poly roots ess ve zeros ve ess +===

数值计算方法 练习题

数值计算方法练习题 习题一 1. 下列各数都是经过四舍五入得到的近似数,试指出它们有几位有效数字以及它们的绝对误差限、相对误差限。 (1);(2);(3); (4);(5);(6); (7); 2. 为使下列各数的近似值的相对误差限不超过,问各近似值分别应取几位有效数字? 3. 设均为第1题所给数据,估计下列各近似数的误差限。 (1);(2);(3) 4. 计算,取,利用下列等价表达式计算,哪一个的结果最好?为什么? (1);(2);(3) (4) 5. 序列满足递推关系式

若(三位有效数字),计算时误差有多大?这个计算过程稳定吗? 6. 求方程的两个根,使其至少具有四位有效数字(要求利用 。 7. 利用等式变换使下列表达式的计算结果比较精确。 (1);(2) (3);(4) 8. 设,求证: (1) (2)利用(1)中的公式正向递推计算时误差增大;反向递推时误差函数减小。 9.设x>0,x*的相对误差为δ,求f(x)=ln x的误差限。 10.下列各数都是经过四舍五入得到的近似值,试指出它们有几位有效数字,并给出其误差限与相对误差限。 11.下列公式如何才比较准确? (1) (2) 12.近似数x*=0.0310,是位有数数字。 13.计算取,利用式计算误差最小。 四个选项:

习题二 1. 已知,求的二次值多项式。 2. 令求的一次插值多项式,并估计插值误差。 3. 给出函数的数表,分别用线性插值与二次插值求的近似值,并估计截断误差。 0.4 0.5 0.6 0.7 0.8 0.38942 0.47943 0.56464 0.64422 0.71736

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

《数值计算方法》 实验指导 (Matlab版) 肇庆学院数学与统计学学院 计算方法课程组

《数值计算方法》实验1报告 班级: 20xx 级XXXXx 班 学号: 20xx2409xxxx 姓名: XXX 成绩: 1. 实验名称 实验1 算法设计原则验证(之相近数相减、大数吃小数和简化计算步骤) 2. 实验题目 (1) 取16 10=z ,计算z z - +1和)1/(1z z ++,验证两个相近的数相减会造成 有效数字的损失. (2) 按不同顺序求一个较大的数(123)与1000个较小的数(15 310-⨯)的和,验证大 数吃小数的现象. (3) 分别用直接法和秦九韶算法计算多项式 n n n n a x a x a x a x P ++++=--1110)( 在x =1.00037处的值.验证简化计算步骤能减少运算时间. 对于第(3)题中的多项式P (x ),直接逐项计算需要2 1 12)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 ; 程序设计语言:Matlab 6. 实验过程 (1) 直接计算并比较; (2) 法1:大数逐个加1000个小数,法2:先把1000个小数相加再与大数加; (3) 将由高次项到低次项的系数保存到数组A[n]中,其中n 为多项式次数. 7. 结果与分析 (1) 计算的z z -+1= ,)1/(1z z ++ . 分析: (2) 123逐次加1000个6 310-⨯的和是 ,先将1000个6 310-⨯相加,

相关主题
相关文档
最新文档