文档库 最新最全的文档下载
当前位置:文档库 › 数值分析上机(西南交大)

数值分析上机(西南交大)

数值分析上机(西南交大)
数值分析上机(西南交大)

数值分析实习报告

——基于matlab 程序的计算机应用

姓名:

学号:

专业:

电话:

序言

数值分析在现代科学发展中有着重要的作用,并且随着科学的发展进步,越来越多的数值分析问题不能够光靠人力计算,这就需要借助计算机进行计算。而在利用计算机解决实际问题时,要根据具体情况作出可靠的理论分析,才能够写出比较可靠的程序。现在面向数值分析问题的计算机软件有:C、C++、MATLAB、Fortran等。

MATLAB(矩阵实验室)是一个功能强大的软件,是一种数值计算的编程语言。在当今世界流行的30多个数学类软件中,MATLAB语言处于数值计算型软件的主导地位,适用范围涵盖了工程数学的各个方面。它的有点主要有:

1.MATLAB是以矩阵为基础的工具,若是编一些对速度没有要求的进行数值计算或者信号处理的小程序,可用matlab编写,并且比较简捷。

2.MATLAB除了具备卓越的数值计算能力外,它还提供有专业水平的符号计算、文字处理、可视化建模仿真和实时控制等功能。

3.MATLAB的基本数据单位是矩阵,它的指令表达式与数学在工程中常用的形式十分相似,所以用matlab来求解工程数学问题要比用C语言、FORTRAN等语言简捷得多。

在新版本中也加入了对C、FORTRAN、C++等程序语言的支持,使用时可以直接调用,也可将编写的实用程序导入到matlab函数库中方便以后使用时调用。

本文通过简单的几个例子包括,插值,线性方程组的SOR法迭代,四阶龙格库特法求解微分方程,采用MATLAB编程,一方面可以深化数值计算对该部分理论的理解,另一方面可以学习matlab程序,并对它的简单应用做一定的认识。

目录

1.插值 (1)

1.1题目 (1)

1.2插值的思想 (3)

1.3实验结果与分析 (3)

1.4程序代码 (5)

2.线性方程组SOR迭代法 (6)

2.1题目 (6)

2.2超松弛逐次迭代法的思路 (6)

2.3 试验结果与分析 (6)

2.4 程序代码 (8)

3.Runge-Kutta 4阶算法求解常微分方程 (10)

3.1题目 (10)

3.1 Runge-Kutta 4阶算法的思路 (10)

3.2 试验结果与分析 (10)

3.4 程序代码: (12)

1.插值

1.1题目

已知:a= -5,b=5, 以下是某函数f(x)的一些点(x k,y k), 其中x k=a+0.1(k-1) ,k=1,..,101

x k=a+0.1k,

请用插值类方法给出函数f(x)的一个解决方案和具体结果。并通过实验考虑下列问题

(1)Ln(x)的次数n越高,逼近f(x)的程度越好?

(2)高次插值收敛性如何?

(3)如何选择等距插值多项式次数?

(4)若要精度增高,你有什么想法?比如一定用插值吗?

(5)逼近某个函数不用插值方式,有何变通之举?

(6)函数之间的误差如何度量,逼近的标准又是什么?

(7)如何比较好的使用插值多项式呢?

x k =

Columns 1 through 7

-5.0000 -4.9000 -4.8000 -4.7000 -4.6000 -4.5000 -4.4000 Columns 8 through 14

-4.3000 -4.2000 -4.1000 -4.0000 -3.9000 -3.8000 -3.7000 Columns 15 through 21

-3.6000 -3.5000 -3.4000 -3.3000 -3.2000 -3.1000 -3.0000 Columns 22 through 28

-2.9000 -2.8000 -2.7000 -2.6000 -2.5000 -2.4000 -2.3000 Columns 29 through 35

-2.2000 -2.1000 -2.0000 -1.9000 -1.8000 -1.7000 -1.6000 Columns 36 through 42

-1.5000 -1.4000 -1.3000 -1.2000 -1.1000 -1.0000 -0.9000 Columns 43 through 49

-0.8000 -0.7000 -0.6000 -0.5000 -0.4000 -0.3000 -0.2000 Columns 50 through 56

-0.1000 0 0.1000 0.2000 0.3000 0.4000 0.5000 Columns 57 through 63

0.6000 0.7000 0.8000 0.9000 1.0000 1.1000 1.2000 Columns 64 through 70

1.3000 1.4000 1.5000 1.6000 1.7000 1.8000 1.9000 Columns 71 through 77

2.0000 2.1000 2.2000 2.3000 2.4000 2.5000 2.6000 Columns 78 through 84

2.7000 2.8000 2.9000

3.0000 3.1000 3.2000 3.3000 Columns 85 through 91

3.4000 3.5000 3.6000 3.7000 3.8000 3.9000

4.0000 Columns 92 through 98

4.1000 4.2000 4.3000 4.4000 4.5000 4.6000 4.7000 Columns 99 through 101

4.8000 4.9000

5.0000

y(x k)=y k=

Columns 1 through 7

25.0000 24.0100 23.0400 22.0900 21.1600 20.2500 19.3600 Columns 8 through 14

18.4900 17.6400 16.8100 16.0000 15.2100 14.4400 13.6900 Columns 15 through 21

12.9600 12.2500 11.5600 10.8899 10.2397 9.6093 8.9991 Columns 22 through 28

8.4092 7.8405 7.2941 6.7705 6.2693 5.7866 5.3144 Columns 29 through 35

4.8403 4.3522 3.8463 3.3402 2.8832 2.5554 2.4475 Columns 36 through 42

2.6154

3.0219 3.4920 3.7149 3.3232 2.0435 -0.1277 Columns 43 through 49

-2.8066 -5.2470 -6.5469 -5.9893 -3.3862 0.7365 5.2312 Columns 50 through 56

8.6985 10.0000 8.6985 5.2312 0.7365 -3.3862 -5.9893 Columns 57 through 63

-6.5469 -5.2470 -2.8066 -0.1277 2.0435 3.3232 3.7149 Columns 64 through 70

3.4920 3.0219 2.6154 2.4475 2.5554 2.8832 3.3402 Columns 71 through 77

3.8463

4.3522 4.8403

5.3144 5.7866

6.2693 6.7705 Columns 78 through 84

7.2941 7.8405 8.4092 8.9991 9.6093 10.2397 10.8899 Columns 85 through 91

11.5600 12.2500 12.9600 13.6900 14.4400 15.2100 16.0000 Columns 92 through 98

16.8100 17.6400 18.4900 19.3600 20.2500 21.1600 22.0900 Columns 99 through 101

23.0400 24.0100 25.0000

1.2插值的思想

Largrange 插值法的思想是要求()()n i i L x f x =,其对应的插值函数的形式为

()()()n

n i i i i L x l x f x ==

∑,其中()i j l x 为插值基函数,且满足1()0()

()i j i j i j l x =??

≠?=,若

要构造满足此条件的插值基函数,则基函数的形式可以写为:

01110111()()...()()...()()()...()()...()

()j j n j j j j j j j n j x x x x x x x x x x x x x x x x x x x x l x -+-+----------=

1.3实验结果与分析

带入原有数据画出图像如下图所示:

-5

-4-3-2-1

012345

-10-50510

15

20

25

x

y

对数据选用十次插值,通过matlab 程序,选用的插值点

x=[-5,-4,-3,-2,-1,0,1,2,3,4,5],可以得出计算的插值十次多项式为:

L=10-681641/1209600000*x^10-2988817/252000*x^2+1348210091/302400000*x^4-33700229/57600000*x^6+2093627/67200000*x^8,画出图像如下图所示:

-5

-4-3-2-1

012345

-100102030

40

50

60

70

80

x

y

十次插值函数

L=10-681641/1209600000*x 10 -2988817/252000*x 2 +1348210091/302400000*x 4 -33700229/57600000*x 6 +2093627/67200000*x 8

分段低次插值,选取的分段差值点分别为[-5,-4,-3,-2][-2,-1.6,-1.2]

[-1.2,-1,-0.6,-0.3,0]

从图像可以看出,用高次插值得出的图像明显存在龙格现象,为了提高精度可以选用分段低次插值,为对比结果,选用的分段插值点分别为

x=[-5,-4,-3,-2][-2,-1.6,-1.2][-1.2,-1,-0.6,-0.3,0],即分别为三次插值,二次插值,四次插值,可以看出分段低次插值做出的效果精度要远远高于用高次插值,且不会出现龙格现象。

由试验结果可知:(1)高次插值并不一定比低次插值好;(2)由于高次插值往往有龙格现象故,往往会造成不收敛;(3)在进行等距插值时,应尽量使插值点分配在函数的一些特征点,如有对称的情况把图像作对称分段,然后在分段区间取等距点,等距点尽量包括极值点,拐点,等图像的特征点;(4)采用分段低次插值的结果精度往往比高次插值要好(5)除了插值可以采用函数逼近曲线拟合等措施做出所需函数(6)误差的估计可以用真值与插值的无穷范数,以及2范数,称为一致逼近和最小二乘逼近。(7)选用插值多项式时,需要根据图像特点,做出合理分段,在分段区间上,考虑图像的变化趋势选取插值次数并考虑图像的特征点等做差值。

1.4程序代码

function yi=lagr_cha(x,y,xi)

n=length(x);

m=length(y);

if n~=m,

error('差值点x的长度应与函数值y相同');

return;

end

yi=zeros(size(xi));

for i=1:n

a=ones(size(xi));

for j=[1:i-1 i+1:n]

if abs(x(i)-x(j))

error('重输数据');

return;

end

a=(xi-x(j))/(x(i)-x(j)).*a;

end

yi=yi+a*y(i);

End

调用程序代码做出插值多项式程序:

x=-5:5;y=[25 16 8.9991 3.8463 2.0435 10 2.0435 3.8463 8.9991 16 25];

symx=sym('x');l=lagr_cha(x,y,symx);

l=simplify(l)

调用程序画出图像程序:

x=-5:0.1:5;y=[25.0000 24.0100 23.0400 22.0900 21.1600 20.2500 19.3600 18.4900 17.6400 16.8100 16.0000 15.2100 14.4400 13.6900 12.9600 12.2500 11.5600 10.8899 10.2397 9.6093 8.9991 8.4092 7.8405 7.2941 6.7705 6.2693 5.7866 5.3144 4.8403 4.3522 3.8463 3.3402 2.8832 2.5554 2.4475 2.6154 3.0219 3.4920 3.7149 3.3232 2.0435 -0.1277 -2.8066 -5.2470 -6.5469 -5.9893 -3.3862 0.7365 5.2312 8.6985 10.0000 8.6985 5.2312 0.7365 -3.3862 -5.9893 -6.5469 -5.2470 -2.8066 -0.1277 2.0435 3.3232 3.7149 3.4920 3.0219 2.6154 2.4475 2.5554 2.8832 3.3402 3.8463 4.3522 4.8403 5.3144 5.7866 6.2693 6.7705 7.2941 7.8405 8.4092 8.9991 9.6093 10.2397 10.8899 11.5600 12.2500 12.9600 13.6900 14.4400 15.2100 16.0000 16.8100 17.6400 18.4900 19.3600 20.2500 21.1600 22.0900 23.0400 24.0100 25.0000];

plot(x,y)

hold on;x=-5:5;y=[25 16 8.9991 3.8463 2.0435 10 2.0435 3.8463 8.9991 16 25];

xi=-5:0.01:5;yi=lagr_cha(x,y,xi);plot(x,y,'o',xi,yi);hold on;

x=-5:-2;y=[25,16,8.9991,3.8463];xi=-5:0.01:-2;yi=lagr_cha(x,y,xi);plot(x,y,'o',xi,yi)

Hold on;x=[-2,-1.6,-1.2];y=[3.8463,2.4475,3.7149];xi=-2:0.01:-1.2;yi=lagr_cha(x,y,xi);

plot(x,y,'o',xi,yi) hold on;

x=[-1.2,-1,-0.6,-0.3,0];y=[3.7149,2.0435,-6.5469,0.7365,10];xi=-1.2:0.01:0;yi=lagr_cha(x,y,xi); plot(x,y,'o',xi,yi)

2.线性方程组SOR 迭代法

2.1题目

用SOR 法求解方程组Ax =b ,其中

?????????

? ??=?????????? ?

?----3-2-.2-2-3-B 41

141

14114,...

...

要求程序中不存系数矩阵A ,分别对不同的阶数取w=1.1, 1.2, ...,1.9进行

迭代,记录近似解x (k)达到||x (k)-x (k-1)||<10-6时所用的迭代次数k ,观察松弛因子对收敛速度的影响,并观察当w ≤0或w ≥2会有什么影响?

2.2超松弛逐次迭代法的思路

逐次超松弛迭代法(SOR)是由Guess-Seidel 迭代法演变而来的一种求解线性方程组的迭代算法,其中Guess-Seidel 迭代法的迭代格式为(1)

()

k k i i

x x x +=+?,

从上式可以看出,所求的(1)

k i

x +实际上是由上一次迭代所得到的()

k i

x 与残量x

?求和得到,为获得收敛速度更快的迭代公式,在Guess-Seidel 的基础上,在残量

x ?的前面乘以一个合适的参数ω,即得到SOR 迭代算法的迭代格式:

(1)

()

k k i

i

x x x ω+=+?

大量的实验发现ω的取值非常关键,如果选取了较好的ω取值,则SOR 迭代算法的收敛速度会大大加快,根据理论知识可以知道当02ω<<时该迭代算法才收敛。

2.3 试验结果与分析

试取四阶矩阵,采用matlab 编程进行运算分析,容易得的该题的真值为

x*=[1,1,1,1]T ,所得结果如下表。其中,初始迭代的初值为x 0=[0,0,0,0]T ,x 为迭代的值,k 为迭代次数,默认k 的最大迭代次数为300,当大于300时,程

序默认迭代不收敛,index为判断是否收敛,其中index=1时,迭代收敛,当index=0时,迭代发散。

w []T x k index

1.1 [1.0000,1.0000,1.0000,1.0000] 8 1

1.2 [1.0000,1.0000,1.0000,1.0000] 11 1

1.3 [1.0000,1.0000,1.0000,1.0000] 14 1

1.4 [1.0000,1.0000,1.0000,1.0000] 18 1

1.5 [1.0000,1.0000,1.0000,1.0000] 22 1

1.6 [1.0000,1.0000,1.0000,1.0000] 31 1

1.7 [1.0000,1.0000,1.0000,1.0000] 42 1

1.8 [1.0000,1.0000,1.0000,1.0000] 66 1

1.9 [1.0000,1.0000,1.0000,1.0000] 138 1

0 error,('w=0,sor方法无法迭代,重新输入w')

-1 [-1.0310,2.7205,-4.4367,4.4719]×1.0e+126 300 0

2 [-0.3703, 0.9651, 0.5366, 1.5563] 300 0

2.1 [-

3.4197,-0.4080, -1.5310, 1.3148]×1.0e+12300 0

计算结果可知,随着w从1.1增至1.9时,迭代均收敛,但收敛速度逐次递减且当w越靠近2时收敛速度在加速变慢。我们知道采用sor法计算时,收敛的必要条件是0

2.4 程序代码

1.解线性方程组的sor法

function [x,k,index]=m_sor(a,b,w,x0,er,m)

%m_sor函数为用sor法求解线性方程的解

%a矩阵为n*n的系数矩阵,b为n维列向量

%w为松弛因子

%m为最大迭代次数,默认为300

%x0为初始迭代向量

%er为两次迭代误差的限制,默认为1e-6

%index为1时迭代收敛,index为0时认为不收敛%x迭代为返回的方程的解

%k求解方程迭代的次数

if nargin<6

m=300;

end

if nargin<5

er=1e-6;

end

if w==0,

error,('w=0,sor方法无法迭代,重新输入w'); end

if abs(m-floor(m))>eps|m<0

error,('m应为非负整数');

end

n=size(a,1);index=1;

for i=1:n,

if a(i,i)==0;

error,('a矩阵主对角线有元素为零重新输入'); end

end

x=x0;

for k=1:m,

x0=x;

for i=1:n,

z=b(i);

for j=1:n,

z=z-a(i,j)*x(j);

end

x(i)=x(i)+w*z/a(i,i);

end

if norm(x-x0,inf)

break;

if k==m,

index=0;

end

end

2.生成题目要求的增广矩阵function [a,b]=zgz(n)

a=zeros(n);

a(1,1)=-4;

for i=2:n;

a(i,i)=-4;

a(i,i-1)=1;

a(i-1,i)=1;

b(i)=-2;

end

b(1)=-3;

b(n)=-3;

3.程序代码调用

w=0;[a,b]=zgz(4);

x0=[0;0;0;0];er=1e-6;

m=300;

[x,k,index]=m_sor(a,b,w,x0,m,er)

3.Runge-Kutta 4阶算法求解常微分方程

3.1题目

用Ru n ge-Kutt a 4阶算法对初值问题y /=-20*y ,y (0)=1按不同步长求解,用于观察稳定区间的作用,推荐两种步长h=0.1,0.2。 注:此方程的精确解为:y =e -20x

3.1 Runge-Kutta 4阶算法的思路

Runge-Kutta 法的基本思想:是通过(,)f x y 某些点的函数值的适当线性组合替换Eular 法中的(,)k k f x y ,可能使得方法的精确度更高。由于有了这种思想,因此标准的Runge-Kutta 的算法如下(h 为求解步长):

1(,)k k K hf x y =

如果k y 是某种方法第k 步的近似值,()k y x 是其准确值,其绝对误差为k e ,即有:()k k k e y x y =-。假定第k 步之后的计算不再有舍入误差,只是由第k 步的舍入误差k δ引起的扰动m δ,都有m k δδ<,则称此方法是绝对稳定的。数值解的稳定性一般与步长h 以及(,)f x y 有关。

3.2 试验结果与分析

不妨取区间为(0,1),则当h=0.1时结果列表如下:

x k

y(x k )

y k |k ε|

0.1000 0.1353 0.3333

0.1980 0.2000 0.0183 0.1111 0.0928 0.3000 0.0025 0.0370 0.0345 0.4000 3.3546e-004 0.0123 0.0120 0.5000 4.5400e-005 0.0041 0.0041 0.6000 6.1442e-006 0.0014 0.0014 0.7000 8.3153e-007 0.0005 0.0005 0.8000 1.1254e-007 0.0002 0.0002 0.9000 1.5230e-008 0.0001 9.9985E-05 1.0000

2.0612e-009 0.0000

2.0612E-09

从结果上看,迭代的刚开始的误差较大,但随着迭代次数的增加,整体截断误差在逐步减小,当h=0.1时,说明迭代具有很好的稳定性。可以看到当x k=1时,结果已经逼近真值,即说明收敛。

而当h=0.2时,结果列表如下:

x k0.2000 0.4000 0.6000 0.8000 1.0000 y k 5 25 125 625 3125

对比真值数据可知,选用h=0.2时,迭代不收敛,而且随着迭代次数的增加累积的误差在不断放大,说明h=0.2时不具有稳定性。我们知道采用标准四阶rungekutta法的绝对稳定区间为:(-2.78,0)当h=0.1时,hλ=-2,在绝对稳定区间内,当h=0.2时,hλ=-4,此时不在稳定区间之内。

3.4 程序代码:

function [x,y]=runge_kutta4(f,a,b,n,y0)

%f为常微分方程y'=f(x,y)中的f(x,y)

%a,b为区间端点

%n为区间等分的分数

%y0为初值,即y(a)的值

x=zeros(1,n+1);y=zeros(1,n+1);

h=(b-a)/n;

x(1)=a;y(1)=y0;

for k=1:n

x(k+1)=x(k)+h;

k1=feval(f,x(k),y(k))*h;

k2=feval(f,x(k)+h/2,y(k)+1/2*k1)*h;

k3=feval(f,x(k)+h/2,y(k)+1/2*k2)*h;

k4=feval(f,x(k)+h,y(k)+k3)*h;

y(k+1)=y(k)+1/6*(k1+2*k2+2*k3+k4);

end

f=inline('-20*y','x','y');a=0;b=1;n=5;y0=1;

>> [x,y]=runge_kutta4(f,a,b,n,y0)

精确值为:

For i=0.1:0.1:1

y=exp(-20*i)

end

总结

通过上机实践,让我认识到处理简单数学问题用matlab好处,一方面锻炼了我的编程能力,学习了一定的matlab语言技巧,同时深化对数值分析相关章节的理解。更让我对数值分析在处理数学问题,采用计算机数值结果的强大作用,使我认识到数值分析在程序设计中的重要地位的理解。

通过学习数值分析这门课程,我对数学的理解有了许多新的认识,也意识到了这门课对我所学专业的重要性,让我对自己的专业有了更好的发挥。对于今后写论文以及解决实际工程问题有很大的帮助。

最后,感谢老师的细心教导,正是老师的认真教学,才是我更快更好地掌握了数值分析计算方法,也才是本文能过按时完成的必要条件,由于初次接触这门软件,在报告中难免有不完善甚至错误的地方,望老师谅解,再次衷心感谢薛老师的教导。

西南交大 数值分析题库

考试目标及考试大纲 本题库的编纂目的旨在给出多套试题,每套试题的考查范围及难度配置均基于“水平测试”原则,按照教学大纲和教学内容的要求,通过对每套试题的解答,可以客观公正的评定出学生对本课程理论体系和应用方法等主要内容的掌握水平。通过它可以有效鉴别和分离不同层次的学习水平,从而可以对学生的学习成绩给出客观的综合评定结果。 本题库力求作到能够较为全面的覆盖教学内容,同时突显对重点概念、重点内容和重要方法的考查。考试内容包括以下部分: 绪论与误差:绝对误差与相对误差、有效数字、误差传播分析的全微分法、相对误差估计的条件数方法、数值运算的若干原则、数值稳定的算法、常用数值稳定技术。 非线性方程求解:方程的近似解之二分法、迭代法全局收敛性和局部收敛定理、迭代法误差的事前估计法和事后估计法、迭代过程的收敛速度、r 阶收敛定理、Aitken加速法、Ne w to n法与弦截法、牛顿局部收敛性、Ne w to n收敛的充分条件、单双点割线法(弦截法)、重根加速收敛法。 解线性方程组的直接法:高斯消元法极其充分条件、全主元消去法、列主元消去法、高斯-若当消元法、求逆阵、各种消元运算的数量级估计与比较、矩阵三角分解法、Doolittle 和Crout三角分解的充分条件、分解法的手工操作、平方根法、Cholesky分解、改进的平方根法(免去开方)、可追赶的充分条件及适用范围、计算复杂性比较、严格对角占优阵。 解线性方程组迭代法:向量和矩阵的范数、常用向量范数的计算、范数的等价性、矩阵的相容范数、诱导范数、常用范数的计算;方程组的性态和条件数、基于条件数误差估计与迭代精度改善方法;雅可比(Jacobi)迭代法、Gauss-Seidel迭代法、迭代收敛与谱半径的关系、谱判别法、基于范数的迭代判敛法和误差估计、迭代法误差的事前估计法和事后估计法;严格对角占优阵迭代收敛的有关结论;松弛法及其迭代判敛法。 插值法:插值问题和插值法概念、插值多项式的存在性和唯一性、插值余项定理;Lagrange插值多项式;差商的概念和性质、差商与导数之间的关系、差商表的计算、牛顿(Newton)插值多项式;差分、差分表、等距节点插值公式;Hermite插值及其插值基函数、误差估计、插值龙格(Runge)现象;分段线性插值、分段抛物插值、分段插值的余项及收敛性和稳定性;样条曲线与样条函数、三次样条插值函数的三转角法和三弯矩法。 曲线拟合和函数逼近:最小二乘法原理和多项式拟合、函数线性无关概念、法方程有唯一解的条件、一般最小二乘法问题、最小二乘拟合函数定理、可化为线性拟合问题的常见函数类;正交多项式曲线拟合、离散正交多项式的三项递推法。最佳一致逼近问题、最佳一致逼近多项式、切比雪夫多项式、切比雪夫最小偏差定理、切比雪夫多项式的应用(插值余项近似极小化、多项式降幂)。本段加黑斜体内容理论推导可以淡化,但概念需要理解。 数值积分与微分:求积公式代数精度、代数精度的简单判法、插值型求积公式、插值型求积公式的代数精度;牛顿一柯特斯(Newton-Cotes)公式、辛卜生(Simpson)公式、几种低价牛顿一柯特斯求积公式的余项;牛顿一柯特斯公式的和收敛性、复化梯形公式及其截断误差、复化Simpson公式及其截断误差、龙贝格(Romberg)求积法、外推加速法、高斯型求积公式、插值型求积公式的最高代数精度、高斯点的充分必要条件。正交多项式的构造方法、高斯公式权系数的建立、Gauss-Legendre公式的节点和系数。本段加黑斜体内容理论推导可以淡化,但概念需要理解。 常微分方程数值解:常微分方程初值问题数值解法之欧拉及其改进法、龙格—库塔法、阿当姆斯方法。

西南交大操作系统实验总报告

操作系统实验报告 指导教师:胡晓鹏

实验报告一 实验名称:Linux操作系统下的C语言编程 实验目的:1.认识Linux系统,熟悉Linux操作系统的基本操作; 2.了解vi命令的基本用法,能够使用vi命令对文件进行基础的操作与编辑; 3.能够在Linux环境下编写C语言程序,生成.out文件,并成功执行; 4.体会Linux环境下编程与Windows环境下编程的异同,加深对Linux操作系统的理解。 实验内容:熟悉Linux环境,编写简单C语言程序。 实验结果:

实验结论:在Linux操作系统下的编程环境不同于Windows,编译器进行命令编译。操作环境简洁,大多以键盘操作。

实验报告二 实验名称:基于进程与线程的并发 实验目的: 1.了解进程与线程工作原理,掌握并发机制,学会编写简单的并发程序。 2.充分理解并掌握基于进程与线程的并发。 实验内容:在Linux环境进行基于进程与线程编写实验程序。 试验核心代码: int main() { pthread_t tid[N]; pid_t pid; pid=fork(); if(pid<0) { printf("fail to fork\n"); exit(1); } else if(pid==0) { printf("the child process:\n"); } else { sleep(10); printf("the parent process:\n"); } void *res; int err[3]; err[0]=pthread_create(&tid[0],NULL,fn1,NULL); err[1]=pthread_create(&tid[1],NULL,fn2,NULL); err[2]=pthread_create(&tid[2],NULL,fn3,NULL); int i;

西南交大数值分析题库填空

一. 填空 2.Gauss型求积公式不是插值型求积公式。(限填“是”或“不是”) 3. 设l k(x)是关于互异节点x0, x1,…, x n, 的Lagrange 插值基函数,则 0 m=1,2,…,n 5.用个不同节点作不超过次的多项式插值,分别采用Lagrange插值方法与Newton插值方法所得多项式相等(相等, 不相等)。 。 7. n个不同节点的插值型求积公式的代数精度一定会超过n-1次 8.f(x)=ax7+x4+3x+1,f[20, 21,…,27]= a,f [20, 21,…,28]= 0 10设 (i=0,1,…,n),则= _x_ , 这里(x i x j,ij, n2)11.设称为柯特斯系数 则=______1____ 12采用正交多项式拟合可避免最小二乘或最佳平方逼近中常见的_法方程组病态___问题。 13辛卜生(Simpson)公式具有___3____次代数精度。 14 牛顿插商与导数之间的关系式为: 15试确定[0,1]区间上2x3的不超过二次的最佳一致逼近多项式p(x), 该多项式唯一否?答:p(x)=(3/2)x, ; 唯一。 17.给定方程组记此方程组的Jacobi迭代矩阵为B J=(a ij)33,则a23= -1; ,且相应的Jacobi迭代序列是__发散_____的。 18.欧拉预报--校正公式求解初值问题的迭代格式(步长为h) ,此方法是阶方法。 ,此方法是 2阶方法。 19. 2n阶Newton-Cotes公式至少具有2n+1次代数精度。 20.设,则关于的 ||f|| =1 21矩阵的LU分解中L是一个 _为单位下三角阵,而U是一个上三角阵____。 22.设y=f (x1,x2) 若x1,x2,的近似值分别为x1*, x2*,令y*=f(x1*,x2*)作为y的近似值,其绝对误差限的估计式为: ||f(x1*,x2*)|x1-x*1|+ |f(x1*,x2*)|x2- x*2| 23设迭代函数(x)在x*邻近有r(1)阶连续导数,且x* = (x*),并且有(k) (x*)=0 (k=1,…,r-1),但(r) (x*)0,则x n+1=(x n)产生的序列{ x n }的收敛阶数为___r___ 24设公式为插值型求积公式,则, 且=b-a 25称微分方程的某种数值解法为p阶方法指的是其局部截断误差 为O(h p+1)。 26.设x0, x1,x2是区间[a, b]上的互异节点,f(x)在[a, b]上具有各阶导数,过

西南交大数值分析题库积分微分方程

用复化梯形公式计算积分 1 ()f x dx ?,要把区间[0,1]一般要等分 41 份才能保 证满足误差小于0.00005的要求(这里(2) () 1f x ∞ ≤) ;如果知道(2) ()0f x >,则 用复化梯形公式计算积分1 ()f x dx ? 此实际值 大 (大,小)。 在以1 0((),())()(),(),()[0,1]g x f x xf x g x dx f x g x C = ∈?为内积的空间C[0,1] 中,与非零常数正交的最高项系数为1的一次多项式是 2 3 x - 3. (15分)导出用Euler 法求解 (0)1y y y λ'=??=? 的公式, 并证明它收敛于初值问题的精确解 解 Euler 公式 11,1,,,k k k x y y h y k n h n λ--=+== L -----------(5分) ()()1011k k k y h y h y λλ-=+==+L ------------------- (10分) 若用复化梯形求积公式计算积分1 x I e dx = ? 区间[0,1]应分 2129 等分,即要 计算个 2130 点的函数值才能使截断误差不超过 71 102 -?;若改用复化Simpson 公式,要达到同样精度区间[0,1]应分12 等分,即要计算个 25 点的函数值 1.用Romberg 法计算积分 2 3 2 x e dx -? 解 []02()()2b a T f a f b -= += 9.6410430E-003 10221()222 b a a b T T f -+=+= 5.1319070E-003 10 022243 T T S -= = 4.6288616E-003 22T = 4.4998E-003 21 122243 T T S -= = 4.E-003 10 02221615 S S C -= = 4.6588636E-003 32T = 4.7817699E-003 32 222243 T T S -= = 4.1067038E-003

数值分析上机报告

数值分析上机报告 班级:20级学隧2班 姓名:000000000 学号:00000000000

目录 1 序言 (6) 2 题目 (7) 2.1 题2 (7) 2.1.1 题目内容 (7) 2.1.2 MATLAB程序 (8) 2.1.3 计算结果 (8) 2.1.4 图形 (9) 2.1.5 分析 (14) 2.2 题3 (14) 2.2.1 题目内容 (14) 2.2.2 程序 (14) 2.2.3 计算结果 (14) 2.2.4 图形 (15) 2.2.5 分析 (16) 2.3 选做题5 (16) 2.3.1方法介绍 (17) 2.3.2计算结果及分析 (17) 3总结 (18) 4.附录 (19) 4.1 题1程序代码 (19) 4.2 题2程序代码 (22) 4.3 题3程序代码 (26)

数值分析2015上机实习报告要求 1.应提交一份完整的实习报告。具体要求如下: (1)报告要排版,美观漂亮(若是纸质要有封面,封面上)要标明姓名、学号、专业和联系电话; (2)要有序言,说明所用语言及简要优、特点,说明选用的考量; (3)要有目录,指明题目、程序、计算结果,图标和分析等内容所在位置,作到信息简明而完全; (4)要有总结,全方位总结机编程计算的心得体会; (5)尽量使报告清晰明了,一般可将计算结果、图表及对比分析放在前面,程序清单作为附录放在后面,程序中关键部分要有中文说明或标注, 指明该部分的功能和作用。 2.程序需完好保存到期末考试后的一个星期,以便老师索取用于验证、询问或质疑部分内容。 3.认真完成实验内容,可以达到既学习计算方法又提高计算能力的目的,还可以切身体会书本内容之精妙所在,期间可以得到很多乐趣。 4.拷贝或抄袭他人结果是不良行为,将视为不合格。 5.请按任课老师要求的时间和载体(电子或纸质)提交给任课老师。

交大数值分析 题库 课后题目 大全 期末

1.填空 1) 设x =3.214, y =3.213,欲计算u =y x -, 请给出一个精度较高的算式u= y x y x +- 2) Simpsons 数值求积公式具有3 代数精度,用于计算 dx x x x )45.02)2(ln (21 4+++? 所产生的误差值为120 1- ; 3) 形如 ? ∑=≈b a n k k k x f A dx x f 0 )()(的插值型求积公式,其代数精度至少可达到 n 阶,至多可达到__2n+1__阶; 4) 确定n +1个节点的三次样条函数所需条件个数至少需要____4n______个 5) 用牛顿法解方程012 3=--x x 的迭代格式为k k k k k k x x x x x x 231 2 231 ----=+ 2.用迭代法求方程052)(3 =--=x x x f 在区间[2,3]上的根,并讨论迭代的敛散性。 (1)3152+=+k k x x ; (2)5 152x x k + = +; (3)),2,1,0( .53 1 =--=+k x x x k k k 解:(1)对于迭代格式(1),其迭代函数为3 52)(+=x x ?,则)(x ?在[2,3]上具有连续的一阶导数32 )52(3 2 )(-+='x x ?, 且]3,2[∈?x ,有0)(>'x ?,故)(x ?单调增加,又29)2(3>=?,311)3(3<=?,于是,当]3,2[∈x 时,]3,2[)(∈x ?,满足定理4.1条件(1)。 又,)(x ?'取正值,且单调递减,所以有 1154081.0)522(3 2 )2()(ma x 32 32<<+?='='-≤≤??x x 即满足定理4.1的条件(2),从而迭代格式(1)收敛。 (2)对于迭代格式(2),其迭代函数为x x 5 2)(+=?,且当],2[∈x 时,有0)52(25)(21 2<+-='-x x x x ?,故)(x ?是单调减少,但23 11 )3(,329)2(<=<= ??,显然不满足定理4.1的条件(1),但若在[2,3]的子区间[2,2.5]中考察,则有2)5.2(,5.2)2(=

西南交通大学2018-2019数值分析Matlab上机实习题

数值分析2018-2019第1学期上机实习题 f x,隔根第1题.给出牛顿法求函数零点的程序。调用条件:输入函数表达式() a b,输出结果:零点的值x和精度e,试取函数 区间[,] ,用牛顿法计算附近的根,判断相应的收敛速度,并给出数学解释。 1.1程序代码: f=input('输入函数表达式:y=','s'); a=input('输入迭代初始值:a='); delta=input('输入截止误差:delta='); f=sym(f); f_=diff(f); %求导 f=inline(f); f_=inline(f_); c0=a; c=c0-f(c0)/f_(c0); n=1; while abs(c-c0)>delta c0=c; c=c0-f(c0)/f_(c0); n=n+1; end err=abs(c-c0); yc=f(c); disp(strcat('用牛顿法求得零点为',num2str(c))); disp(strcat('迭代次数为',num2str(n))); disp(strcat('精度为',num2str(err))); 1.2运行结果: run('H:\Adocument\matlab\1牛顿迭代法求零点\newtondiedai.m') 输入函数表达式:y=x^4-1.4*x^3-0.48*x^2+1.408*x-0.512 输入迭代初始值:a=1 输入截止误差:delta=0.0005 用牛顿法求得零点为0.80072 迭代次数为14 精度为0.00036062 牛顿迭代法通过一系列的迭代操作使得到的结果不断逼近方程的实根,给定一个初值,每经过一次牛顿迭代,曲线上一点的切线与x轴交点就会在区间[a,b]上逐步逼近于根。上述例子中,通过给定初值x=1,经过14次迭代后,得到根为0.80072,精度为0.00036062。

2017年西南交大复试笔试和机试、面试

笔试 第一部分:(微机40分) 1:选择(10小题10分):做完微机部分的题应该至少得5分今年有大概3个题资料上没有,有一个是串并转换问用哪个部件,其他忘了 2:判断(5小题5分):做完微机部分的题应该至少得3分有2个资料上没有,一个是外设接口有两个还有一个是子查询比宏程序更节省空间 3:填空(5小题每空一分15分):做完微机部分的题应该至少得6,7分考了一个8237(3分),完全不懂,还有一个是问三状态的什么东西叫什么,然后是最小模式下有哪些部件构成(3分)还有一个问adc0809的start上升沿和下降沿时adc0809处于什么状态(2分)4:程序题一大题(10分):做完微机部分的题应该至少得4,5分主要要看74ls138译码器(求芯片端口地址),还有8255a,8253,8259a,各个芯片初始化要会写(几乎必考),还有编程(大概占4,5分)今年考得是74ls138,8255,adc0809 前两问一个是地址一个是8255初始化,不难,最后是编程4分,几乎没几个人会 5.然后微机部分总结一下就是今年考得比较偏的感觉,adc0809考好几次压根没看这个,还有dma也考了几次,还有什么8237压根都没听过 第二部分:(数据库30分) 1:选择题(20小题20分):做完数据库部分的题应该至少得12分有一个问数据字典存储的是怎么数据,还有别的忘了太多了 2:简答题(10分) 做完数据库部分的题应该至少得5分第一小题画er图要有主键联系的约束类型和键约束(7分)第二小题写教师的关系表(3分) 第三部分:(计算机基础综合30个选择题30分) 分两部分硬件和软件,得15分左右还是可以的 硬件主要还是考微机还有组原,有一个是考微指令和机器指令的关系,其他忘了 软件主要考c++里面一些东西(普通的不考,一般考一些要注意的东西)还有就是数据结构(几乎不用看,考得不难),其他忘了 这部分不难,但是还是有很多不知道的东西,自己把握吧 做完这些资料差不多能有50分多一点,笔试占最终成绩的20%,50分就是10分,我个人感觉微机对于理工科出身的计算机专业还是不难的,所以考的可能有点那个,至于数据库个人感觉有点烦,但是考的也不难,总之笔试考5,60分不太难,考高分也不简单 上机:这部分我感觉3,50分应该没问题 上机部分就是所给资料的难度,可以说比较简单,如果把每个小程序都自己敲过一遍,考前看看,我觉得6个题至少能做5个,但是这仅仅是能做出5个,交大的那个上机考试要求比较严格,很有可能vc里面运行无误的程序,在那上面就是错的。我做的6个题第一个是求两个数的和,第二个是求3个数中的最大数,第三个是求3阶矩阵主对角线上值的和,第四个是输入两个大于0小于100的数,求和,第五题是10个实数的数组的平均值,并且把大于平均值的放在前面(相对顺序不变),小于平均值的放在后面(相对顺序不变),第六个是比较5个字符数组的长度,输出最大长度,输出字符数组长度小于最大长度的后面补*,还有一个是输入一个整数m求1/1*1+1/2*2+…..+1/m*m 应该记错了一个题的,总共就6题 特别注意,个人怀疑如果题目中要求将一个数组中元素调整顺序或者删除某个或某些元素,

数值分析西南交通大学

1.填空 (1). 在等式∑== n k k k n x f a x x x f 0 10)(],,,[ 中, 系数a k 与函数f (x ) 无 关。 (限填“有”或“无”) (2). Gauss 型求积公式不是 插值型求积公式。(限填“是”或“不是”) 或“无”) (3). 设l k (x )是关于互异节点x 0, x 1,…, x n , 的Lagrange 插值基函数,则 ∑=-n k k m k x l x x 0 )()(≡0 m=1,2,…,n (4). ? ? ? ? ??-=3211A ,则=1||||A 4 ,=2||||A 3.6180340 ,=∞||||A 5 ; (5). 用1n +个不同节点作不超过n 次的多项式插值,分别采用Lagrange 插值方法与Newton 插值方法所得多项式 相等 (相等, 不相等)。 (6). 函数3 320, 10(),01(1),12x f x x x x x x -≤=B ρ,故Jacobi 方法发散。 (2)对Gauss-Seidel 方法,迭代矩阵为

数值分析2016上机实验报告

序言 数值分析是计算数学的范畴,有时也称它为计算数学、计算方法、数值方法等,其研究对象是各种数学问题的数值方法的设计、分析及其有关的数学理论和具体实现的一门学科,它是一个数学分支。是科学与工程计算(科学计算)的理论支持。许多科学与工程实际问题(核武器的研制、导弹的发射、气象预报)的解决都离不开科学计算。目前,试验、理论、计算已成为人类进行科学活动的三大方法。 数值分析是计算数学的一个主要部分,计算数学是数学科学的一个分支,它研究用计算机求解各种数学问题的数值计算方法及其理论与软件实现。现在面向数值分析问题的计算机软件有:C,C++,MATLAB,Python,Fortran等。 MATLAB是matrix laboratory的英文缩写,它是由美国Mathwork公司于1967年推出的适合用于不同规格计算机和各种操纵系统的数学软件包,现已发展成为一种功能强大的计算机语言,特别适合用于科学和工程计算。目前,MATLAB应用非常广泛,主要用于算法开发、数据可视化、数值计算和数据分析等,除具备卓越的数值计算能力外,它还提供了专业水平的符号计算,文字处理,可视化建模仿真和实时控制等功能。 本实验报告使用了MATLAB软件。对不动点迭代,函数逼近(lagrange插值,三次样条插值,最小二乘拟合),追赶法求解矩阵的解,4RungeKutta方法求解,欧拉法及改进欧拉法等算法做了简单的计算模拟实践。并比较了各种算法的优劣性,得到了对数值分析这们学科良好的理解,对以后的科研数值分析能力有了极大的提高。

目录 序言 (1) 问题一非线性方程数值解法 (3) 1.1 计算题目 (3) 1.2 迭代法分析 (3) 1.3计算结果分析及结论 (4) 问题二追赶法解三对角矩阵 (5) 2.1 问题 (5) 2.2 问题分析(追赶法) (6) 2.3 计算结果 (7) 问题三函数拟合 (7) 3.1 计算题目 (7) 3.2 题目分析 (7) 3.3 结果比较 (12) 问题四欧拉法解微分方程 (14) 4.1 计算题目 (14) 4.2.1 方程的准确解 (14) 4.2.2 Euler方法求解 (14) 4.2.3改进欧拉方法 (16) 问题五四阶龙格-库塔计算常微分方程初值问题 (17) 5.1 计算题目 (17) 5.2 四阶龙格-库塔方法分析 (18) 5.3 程序流程图 (18) 5.4 标准四阶Runge-Kutta法Matlab实现 (19) 5.5 计算结果及比较 (20) 问题六舍入误差观察 (22) 6.1 计算题目 (22) 6.2 计算结果 (22) 6.3 结论 (23) 7 总结 (24) 附录

西南交大大学计算机基础实验报告

大学计算机基础 实 验 报 告 教学班级:_______ 学号:__________ 姓名:___________ 课程教师:______________ 实验辅导教师:_____________ 西南交通大学 2011年9月

实验一微机基本操作与上网冲浪 教学班级:_______ 学号:__________ 姓名:___________ 实验日期:___________ 实验地点:_________(机房) 指导教师签名:__________ 实验成绩:___________ 一、实验目的 1.掌握计算机系统的启动与关闭; 2.掌握常用输入设备、输出设备、存储设备的用法。 3.掌握搜索引擎的使用; 4.掌握下载与解压缩的方法; 5.掌握软件安装的方法。 二、实验任务 1.启动与关闭计算机。 2.利用“键盘盲打练习”软件进行键盘的指法练习。 3.硬盘信息查询。 4.利用搜索引擎搜索成都商报,阅读当日报纸新闻。 5.利用下载工具FlashGet在网上下载“NetAnts”软件压缩包,利用压缩工具winRar解压缩该包,并安装该软件。 三、实验检查内容 [ ] 1.能否热启动计算机 [ ] 2.能否下载打字软件(辅导老师可协助将软件下载到教师机上,学生通过网上邻居获取) [ ] 3.能否安装打字软件 [ ] 4.打字速度/分钟 [ ] 5.查看C区总容量 [ ] 6.查看磁盘整理程序对C区的分析报告,看是否需要整理[ ] 7.写出当日成都商报的头版头条标题 [ ] 8.是否将NetAnts软件安装在D区

实验二文件资源的管理与操作 教学班级:_______ 学号:__________ 姓名:___________ 实验日期:___________ 实验地点:_________(机房) 指导教师签名:__________ 实验成绩:___________ 一、实验目的 1.掌握文件的复制、移动、删除; 2.掌握文件的重命名、属性的设置; 3.掌握文件的查找; 4.掌握文件夹选项操作。 二、实验任务 1.查找文件“notepad.exe”,在D盘上以自己的学号为名建立一个新的文件夹,在此文件夹内建一名为“记事本”的文件夹,将文件“notepad.exe”复制到“记事本”文件夹下面,属性修改为“只读”,然后在桌面上创建“notepad.exe”文件的快捷方式。 2.显示“我的文档”文件夹下所有文件的扩展名。 三、实验检查内容 [ ] 1.是否在D区建立以自己学号为名的文件夹 [ ] 2.是否在学号文件夹中创建名为“记事本”的文件夹 [ ] 3.是否将“notepad.exe”文件复制到“记事本”文件夹中[ ] 4.“notepad.exe”文件的属性是否修改为“只读” [ ] 5.是否在桌面上创建“notepad.exe”文件的快捷方式 [ ] 6.是否显示文件的扩展名

数值分析上机实验

目录 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将高性能的数值计算和可视化的图形工具集成在一起,提供了大量的内置函数,使其在科学计算领域具有独特的优势。 最后感谢数值分析课程任课教师赵海良老师的悉心指导!

《数值计算方法》课程教学大纲.

《数值计算方法》课程教学大纲 课程名称:数值计算方法/Mathods of Numerical Calculation 课程代码:0806004066 开课学期:4 学时/学分:56学时/3.5学分(课内教学 40 学时,实验上机 16 学时,课外 0 学时)先修课程:《高等代数》、《数学分析》、《常微分方程》、《C语言程序设计》 适用专业:信息与计算科学 开课院(系):数学与计算机科学学院 一、课程的性质与任务 数值计算方法是数学与应用数学专业的核心课程之一。它是对一个数学问题通过计算机实现数值运算得到数值解答的方法及其理论的一门学科。本课程的任务是架设数学理论与计算机程序设计之间的桥梁,建立解决数学问题的有效算法,讨论其收敛性和数值稳定性并寻找误差估计式,培养学生数值计算的能力。 二、课程的教学内容、基本要求及学时分配 (一)误差分析2学时 1 了解数值计算方法的主要研究内容。 2 理解误差的概念和误差的分析方法。 3 熟悉在数值计算中应遵循的一些基本原则。 重点:数值计算中应遵循的基本原则。 难点:数值算法的稳定性。 (二)非线性方程组的求根8学时 1 理解方程求根的逐步搜索法的含义和思路 2 掌握方程求根的二分法、迭代法、牛顿法及简化牛顿法、非线性方程组求根的牛顿法 3 熟悉各种求根方法的算法步骤,并能编程上机调试和运行或能利用数学软件求非线性方程的近似根。 重点:迭代方法的收敛性、牛顿迭代方法。 难点:迭代方法收敛的阶。 (三)线性方程组的解法10学时 1 熟练掌握高斯消去法 2 熟练地实现矩阵的三角分解:Doolittle法、Crout法、Cholesky法、LDR方法。 3 掌握线性方程组的直接解法:Doolittle法、Crout法、Cholesky法(平方根法)、改进平方根法、追赶法。 4能熟练地求向量和矩阵的1-范数、2-范数、 -范数和条件数。 5 理解迭代法的基本思想,掌握迭代收敛的基本定理。 6 掌握解线性方程组的雅可比(Jacobi)迭代法、高斯-赛德尔(Gauss-Seidel)迭代法、逐次超松驰(SOR)迭代法。

西南交通大学研究生数值分析作业

数值分析上机报告 指导教师:赵海良 班级: 姓名: 学号: 电话: 2011年12月

序 随着计算机技术的迅速发展,数值分析在工程技术领域中的应用越来越广泛,并且成为数学与计算机之间的桥梁。要解决工程问题,往往需要处理很多数学模型,不仅要研究各种数学问题的数值解法,同时也要分析所用的数值解法在理论上的合理性,如解法所产生的误差能否满足精度要求:解法是否稳定、是否收敛及熟练的速度等。 由于工程实际中所遇到的数学模型求解过程迭代次数很多,计算量很大,所以需要借助如MATLAB,C++,VB,JA V A的辅助软件来解决,得到一个满足误差限的解。本文所计算题目,均采用C++编程。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等等泛型程序设计等多种程序设计风格,在实际工程中得到了广泛应用,对解决一些小型数学迭代问题,C++软件精度已满足相应的精度。 本文使用C++对牛顿法、牛顿-Steffensen法对方程求解,对雅格比法、高斯-赛德尔迭代法求解方程组迭代求解,对Ru n ge-Kutt a 4阶算法进行编程,并通过实例求解验证了其可行性,并使用不同方法对计算进行比较,得出不同方法的收敛性与迭代次数的多少,比较不同方法之间的优缺性,比较各种方法的精确度和解的收敛速度。

目录 第一章牛顿法和牛顿-Steffensen法迭代求解的比较 (1) 1.1 计算题目 (1) 1.2 计算过程和结果 (1) 1.3 结果分析 (2) 第二章 Jacobi迭代法与Causs-Seidel迭代法迭代求解的比较 (2) 2.1 计算题目 (2) 2.2 计算过程与结果 (2) 2.3 结果分析 (3) 第三章 Ru n ge-Kutt a 4阶算法中不同步长对稳定区间的作用 (4) 3.1 计算题目 (4) 3.2 计算过程与结果 (4) 3.3 结果分析 (4) 总结 (5) 附件 (6) 附件 1(1.1第一问牛顿法) (6) 附件 2(1.1第一问牛顿-Steffensen法) (6) 附件 3(1.1第二问牛顿法) (6) 附件 4(1.1第二问牛顿-Steffensen法) (7) 附件 5(2.1 Jacobi迭代法) (7) 附件 6(2.1Causs-Seidel迭代法) (8) 附件 7(3.1 Ru n ge-Kutt a 4阶算法) (9)

西南交大数值分析上机实习报告

数值分析上机实习报告(2015~2016学年第一学期) 姓名:xxxxxxx 学号:xxxxxxxxxx 专业:岩土工程 指导教师:徐跃良 联系电话:xxxxxxxxxxx 实习成绩: xxxxxxxxx 2015年12月10日

目录 一序言 (3) 二正文 (3) 题目3 (3) 原理3 (3) 结果3 (4) 分析3 (5) 题目4 (6) 原理4 (6) 结果4 (7) 分析4 (7) 题目5 (7) 原理5 (7) 结果5 (8) 分析5 (9) 三总结 (9) 四附录 (9) 附录1雅格比迭代法程序代码 (9) 附录2高斯-赛德尔迭代法程序 (10)

附录3求解题目3程序代码 (11) 附录4 SOR法程序代码 (12) 附录5求解题目4程序代码 (13) 附录6Ru n ge-Kutt a 4阶算法程序代码 (13) 附录7求解题目5程序代码 (14)

一序言 MATLAB 的M 语言,一种演算纸方式的编程语言。通过这种语言,用户可以用类似于数学公式的方式来编写算法,大大降低了编程所需的难度并节省了时间,从而让用户把主要的精力集中在算法的构思而不是编程上。 为便于检验结果,本上机实习全部使用M 语言编程,然后用内置函数求解进行对比。 二正文 题目3用雅格比法与高斯-赛德尔迭代法解下列方程组Ax =b ,研究 其收敛性,上机验证理论分析是否正确,比较它们的收敛速度,观察右端项对迭代收敛有无影响。 (1)12621-3100142, b 2, b -2003144345A -?????? ? ? ? =-== ? ? ? ? ? ?-?????? (2)1210.80.8350.810.8, b 2, b 00.80.811-10A ?????? ? ? ? === ? ? ? ? ? ??????? (3)134, b 716A ???? == ? ?-???? 原理: 雅格比迭代法: ) b x a x a x a x a (a 1x ) b x a x a x a (a 1x ) b x a x a x a (a 1x n ) 1k (1n 1nn )1k (33n )1k (22n )1k (11n nn ) k (n 2)1k (n n 2) 1k (323) 1k (12122) k (21)1k (n n 1) 1k (313) 1k (21211) k (1-++++-=-+++-=-+++- =------------

西南交通大学数值分析上机实习

目录 解题: (1) 题目一: (1) 1.1计算结果 (1) 1.2结果分析 (1) 题目二: (2) 2.1计算结果 (2) 2.2结果分析 (3) 题目三: (4) 3.1计算结果 (4) 3.2结果分析 (5) 总结 (5) 附录 (6) Matlab程序: (6) 题目一: (6) 第一问Newton法: (6) 第二问Newton法: (6) 第一问Steffensen加速法: (7) 第二问Steffensen加速法: (7) 题目二 (8) 1、Jacobi迭代法 (8) 2、Causs-Seidel迭代法 (8) 题目三: (9)

题目一: 分别用牛顿法,及基于牛顿算法下的Steffensen 加速法 (1)求ln(x +sin x )=0的根。初值x0分别取0.1, 1,1.5, 2, 4进行计算。 (2)求sin x =0的根。初值x0分别取1,1.4,1.6, 1.8,3进行计算。 分析其中遇到的现象与问题。 1.1计算结果 求ln(x +sin x )=0的根,可变行为求解x-sinx-1=0的根。 1.2结果分析 从结果对比我们可发现牛顿—Steffensen 加速法比牛顿法要收敛的快,牛顿法对于初值的选取特别重要,比如第(1)问中的初值为4的情况,100次内没有迭代出来收敛解,而用Steffensen 加速法,7次迭代可得;在第(2)问中的初值为1.6的情况,收敛解得31.4159,分析其原因应该是x x f cos )('=,x0=1.62 π ≈ ,0)('≈x f ;迭代式在迭代过程中会出现分母趋近于0,程序自动停止 迭代的情况,此时得到的x 往往非常大,而在第一问中我们如果转化为用x+sinx=1,则可以收敛到结果。

西南交大数值分析上机实习报告

数值分析上机实习报告要求 1.应提交一份完整的实习报告。具体要求如下: (1)要有封面,封面上要标明姓名、学号、专业和联系电话; (2)要有序言,说明所用语言及简要优、特点,说明选用的考量; (3)要有目录,指明题目、程序、计算结果,图标和分析等内容所在位置,作到信息简明而完全; (4)要有总结,全方位总结机编程计算的心得体会; (5)尽量使报告清晰明了,一般可将计算结果、图表及对比分析放在前面,程序清单作为附录放在后面,程序中关键部分要有中文说明或标注,指明该部分 的功能和作用。 2.程序需完好保存到期末考试后的一个星期,以便老师索取用于验证、询问或质疑部分内容。 3.认真完成实验内容,可以达到既学习计算方法又提高计算能力的目的,还可以切身体会书本内容之精妙所在,期间可以得到很多乐趣。 4.拷贝或抄袭他人结果是不良行为,将视为不合格。 5.报告打印后按要求的时间提交给任课老师。 数值分析上机试题10 (选择其中两个题目) 1.给定三个n阶线性方程组Ax=b,其中A的元素a ij (i,j,=1,...,n)与阶数分别为(1)a ij=(i+j-1)2, n=3,4,5, (9) (2)a ij=(i+j)2, n=3,4,5 (3)a ij=1/(i+j-1), n=3,4,5,6; b的元素b i=a i1+a i2+…,a in, (i=1,2,…,n) 已知其准确解为x=(1,1,...,1)T, 用列主元素法分别求解上列方程组。输出各步主元,解释所遇到的现象。 2.用雅格比法与高斯-赛德尔迭代法解下列方程组Ax=b,研究其收敛性,上机验证理论分析是否正确,比较它们的收敛速度,观察右端项对迭代收敛有无影响。 (1)A行分别为A1=[6,2,-1],A2=[1,4,-2],A3=[-3,1,4];b1=[-3,2,4]T, b2=[100,-200,345]T, (2) A行分别为A1=[1,0,8,0.8],A2=[0.8,1,0.8],A3=[0.8,0.8,1];b1=[3,2,1]T, b2=[5,0,-10]T,

数值分析上机实习报告(西南交通大学)

数值分析上机实习报告 姓名: 学号: 专业:大地测量学与测量工程电话:

序言 1.所用程序语言:本次数值分析上机实习采用Visual c#作为程序设计语言, 利用Visual c#可视化的编程实现方法,采用对话框形式进行设计计算程序界面,并将结果用表格或文档的格式给出。 2.程序概述: (1)第一题是采用牛顿法和steffensen法分别对两个题进行分析,编好程序后分别带入不同的初值,观察与真实值的差别,分析出初值对结果 的影响,分析两种方法的收敛速度。 (2)第二题使用Visual c#程序设计语言完成了“松弛因子对SOR法收敛速度的影响”,通过在可视化界面下输入不同的n和w值,点击按 钮直接可看到迭代次数及计算结果,观察了不同的松弛因子w对收敛 速度的影响。

目录 一.用牛顿法,及牛顿-Steffensen法............ 错误!未定义书签。 1. 计算结果.................................... 错误!未定义书签。 2. 结果分析 (5) 3. 程序清单 (5) 二.松弛因子对SOR法收敛速度的影响 (8) 1. 迭代次数计算结果 (8) 2. 计算X()结果 (10) 3. 对比分析 (12) 4. 程序清单: (12) 三.实习总结 (14)

实验课题(一)用牛顿法,及牛顿-Steffensen法 题目:分别用牛顿法,及牛顿-Steffensen法 (1)求ln(x+sin x)=0的根。初值x0分别取0.1, 1,1.5, 2, 4进行计算。 (2)求sin x=0的根。初值x0分别取1,1.4,1.6, 1.8,3进行计算。 分析其中遇到的现象与问题。 1、计算结果 由于比较多每种方法中只选取了其中两个的图片例在下面:

相关文档
相关文档 最新文档