文档库 最新最全的文档下载
当前位置:文档库 › 数值分析实验二 数值积分2

数值分析实验二 数值积分2

数值分析实验二      数值积分2
数值分析实验二      数值积分2

数值分析实验二 数值积分

组号 班级 学号 姓名 分数

一:实验目的

1、掌握计算数值积分。

2、可以通过牛顿—柯特斯公式,复化求积公式,龙贝格求积公式计算。

3、通过利用复化求积公式来分析它的优缺点提出改进。

二:实验内容及基本知识介绍

在实际问题中,牛顿—莱布尼斯公式()()()b

a f x dx F

b F a =-?不适用,(1)因为f(x)不能

用初等函数表示,比如2

sin (),()x

x f x f x e

x

-=

=,(2)实际问题中f(x)有其原函数虽然可

以用初等函数表示但相当复杂,计算极不方便,例如()x f x 无解析表达式有时只有数据表格形式:

x 1 2 3 4 5

f(x) 4 4.5 6 8 8.5

所以引出数值积分的重要性。

(1) 使用矩形法求积分

定积分

b a

f x dx ?

的几何意义是y=f(x),y=0,x=a,x=b 围成的曲边梯形的面积(代数

和),用矩形法球定积分就是用小矩形的面积代替小曲边梯形的面积,然后求和以获得定积分的近似值,这种方法精度较低。

复化求积公式:我们在计算定积分时,可以先把积分区间分成若干个子区间,并使子区间长度足够小,再在每个子区间利用某个简单求积公式计算积分,最后将计算结果相加即可,这样推导出来的求积公式叫做复化求积公式。

(2) 复化梯形公式

本方法用小梯形面积代替小曲边梯形的面积,然后求和以获得定积分的近似值。 复化梯形公式推导如下 120

1

1

011211

,

()()()()()

[()()((()())(()()]

2[()2()()]()

2

n n b x x x a

x x x n n n

i i b a h n

I f f x dx f x dx f x dx f x h f x f x f x f x f x f x h f a f x f b T h --?

=-=

==

+

++

≈+++++=++=??

?

?

T(h)即为复化梯形求积公式。其截断误差复化梯形公式

3

''

1

3

''

2

''

[]()()()

12

()12()()

12

n

i i h

R f I f T f f nh f h

b a f ηηη==-=-=-=-

-∑

(3) 复化辛普森求积公式

本方法用抛物线代替小曲边梯形的曲边计算小面积,然后求和以获得定积分的近似值。

类似于上述过程,我们也可以推导复化辛普森求积公式。24

2

2

2

2

012234

222

1

21

21

1

,

2[]()()()()[(()4()())(()4()())(()())]

3[()4()2()()]()3

n n b x x x a

x x

x

n n n

n i i i i b a h n

I f f x dx f x dx f x dx f x dx

h f x f x f x f x f x f x f x f x h f a f x f x f b S h --

-?

-==-===

+

+≈++++++++=+++=?

?

?

?

∑∑ 选定 S(h)即为辛普森求积公式。其截断误差 (4)

4

[][][]()()180

h

R f I f S f b a f

η=-=-

-

三:实验问题及方法、步骤

例题1计算定积分12

121

(1)x x

x e

dx x

+

+-?

syms x

t =1+x-1/x; y =exp(x+1/x); f =t*y;

int(f,x,1/2,2) >> ans =

3/2*exp(5/2) 所以12

121

(1)x x

x e

dx x

+

+-?=

5

232

e

例题2用两种方法求的积分52

2

Inx dx

x

?

编程如下 syms x; x =2:.1:5;

y =log(x)./(x^2); t =trapaz(x,y);

ff =inline('log(x)./(x.^2)','x'); q =quad(ff,2,5);

disp([blanks(3),‘trapz ’,blanks(4),'quad'],[t,q] >> trapz=

0.3247 q=

0.3247 例题3设0.8sin 0

()(),()(10)x

t t

s x y t dt y t e

s -=

=?

其中,求

编程如下: Clf

dt=0.1;t=0:dt:10;

y=exp(-0.8*t.*abs(sin(t))); ss10=dt*sum(y(1:length(t)-1)); st10=trapz(t,y);

ff=inline('exp(-0.8*t.*abs(sin(t))) ', 't') ; q=quad(ff,0,10) q8=quadl(ff,0,10)

disp([blanks(5),'sum',blanks(6),'trapz',blanks(5),'quad',blank(5),'quad8']) disp([ss10,st10,q,q8]) plot(t,y,'b') legend('y(x)') >>

sum= 2.7069

Trapz= 2.6576 q =

2.6597

q8 =

2.6597

例题4用龙贝格算法计算积分12

41dx x

π=+?

f=inline('4/(1+x^2)'); a=0;b=1;n=4;tol=0.0001;

[R,quad,err ,h]=Romberg(f,a,b,n,tol) >>

R=3.0000 0 0 0 0

3.1000 3.1333 0 0 0

3.1312 3.1416 3.1421 0 0

3.1390 3.1416 3.1416 3.1416 0

3.1409 3.1416 3.1416 3.1416 3.1416

quad=

3.1416 err=

6.8815e-006 H=

0.0625

四计算结果分析

定积分的计算是实际问题中经常遇到的问题定积分的计算同样也是较费时间的事情,而且有时还会遇到因求不出原函数而积不出结果的情况,这些在Mathlab 中,只要输入一个命令就可以快速求出积分值来,比如下面的例题1,但是用定积分的符号解法求定积分有时也会失效,此时用数值方法来计算定积分的值。

梯形求积公式对所有次数不超过1的多项式是准确成立的,即余项为0;辛普森求积公式对所有次数不超过3的多项式式准确成立的;牛顿求积公式对所有次数不超过3的多项式式准确成立的;科茨求积公式对所有次数不超过5的多项式式准确成立的;一般的,如果某个求积公式对所有次数不超过m 的多项式式准确成立的,那么就说这个求积公式至少有m 阶代数精度,因此梯形求积公式,辛普森求积公式,牛顿求积公式,科茨求积公式分别至少具有1,3,3,5阶代数精度。

从复化梯形求积公式和复化辛普森求积公式余项可知,与相应的牛顿—科茨求积公式相比,复化求积公式一般不能提高代数精度,但它们均具有收敛性即h 0,()()0,()()0If x T h If x S x →-→-→时,如果一种求积公式Q[f]满足条件

[][]

l i m

p

h I f Q f C h

→-=≠那么就说这种球机公式p 阶时收敛的。显然,复化梯形公式和复化辛普森求积公式分别是2阶和4阶收敛的。

复化求积方法至少有下面两个缺陷:

1. 要先根据实际精度要求选取步长,为此,一般要确定高阶导数的绝对值的上界,因此困难很大。

2.

2.选取步长时,没有考虑被积函数本身变化规律,当被积函数在某个区间上的函数值变化较:“平稳” 时,使用大步长低阶求积公式也不会有大的误差;相反的,如果被积函数在某个区间上的函数变化“急剧” 时,必须使用小步长较高阶的求积公式才会有较小的误差。 解决上述第一个问题的方法是采用变步长求积方法。所谓变步长求积方法是指先用大步长低阶复化求积公式计算,再取小一点的步长计算;如果两次计算结果相差较大,则说明当前的结果不可信,应选取更小的步长进行计算,如此进行下去,直到相邻两次计算结果相差很小时,我们有理由再计算下去,计算结果的改进不会明显,因此算法可以终止。并将上述最小步长的结果作为积分值。

至此我们知道变步长求积方法又能够具有如下优点:

1.不需要事先确定步长;

2.能对每步计算结果估计误差;

3.与相应的复化求积公式的运算量相当;

4.是一种稳定的和收敛的求积方法。

a) 类似于上述讨论,我们也可以将变步长求积方法用于复化辛普森求积公式 结果如下。 对当前步长 2b a h n

-= ,计算

01201132122422*

*

*

*

0112*

3

1

1

1()(42)

3

()()()()()()()(),

2

()()[42()],

23

(

)(

)(

)222

n n n h S h S S S S f a f b S f x f x f x S f x f x f x h h h

S h S S S S S x x x S f f f ---=

++=+=+++=+++=

==+++=+++ (端点的函数值的和)

(奇数点的函数值的和)(偶数点的函数值的和)再将步长变小,比如选取h 这里仅仅是新增节点处函数值的和。

上式说明计算S(h*)时,只需要计算新增节点的函数值的和。其中的

012*

*

22

,,S S S ()()2)41

h S S S h

S S h -≈-都是上一布的计算结果。

进一步,用(h )和(h )估计(h )的近似误差为I(f)-S(

五思考与提高

变步长求积方法的收敛速度较慢,即步长每次减半没有使计算误差下降得很快,一种改进的方法就是龙贝格(Romberg )求积方法。它的基本想法是:既然变步长求积得每一步都能估计出近似截断误差,那么将这个近似误差加上所求得的结果应该是一个更好的近似积分值。从而达到加快收敛的目的。

上述这种想法在理论上被证明是正确的。这是因为复化梯形求积公式的修正公式

1[]()[()(2)]3

I f T h T h T h ≈+

-

恰好是步长为h 的复化辛普森求积公式S().而修正的复化辛普森求积公式恰好是复化科茨求积公式,即

2

()(2)

()()41S h S h C h S h -=+

-

类似地,由复化科茨求积公式的余项可得到如下的修正公式,也称为龙贝格求积公式

3()(2)

()()41

C h C h R h C h -=+

-

我们把这样不断计算积分并不断修正的方法叫做龙贝格求积方法。它的实际计算过程如下:

0111222233333()()()(())T (h )()()(S())()()()()(())T h T h S h T h S h C h h T h S h C h R h C h ?

??

???

???

计算误差近似值并修正计算误差近似值并修正计算误差近似值并修正

10,,1,2,2

i i h h b a h i -=-=

= 其中,

数值分析实验报告1

实验一误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 其中ε(1.1)和(1.221,,,a a 的输出b ”和“poly ε。 (1(2 (3)写成展 关于α solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。 实验过程: 程序: a=poly(1:20); rr=roots(a); forn=2:21 n form=1:9 ess=10^(-6-m);

ve=zeros(1,21); ve(n)=ess; r=roots(a+ve); -6-m s=max(abs(r-rr)) end end 利用符号函数:(思考题一)a=poly(1:20); y=poly2sym(a); rr=solve(y) n

很容易的得出对一个多次的代数多项式的其中某一项进行很小的扰动,对其多项式的根会有一定的扰动的,所以对于这类病态问题可以借助于MATLAB来进行问题的分析。 学号:06450210 姓名:万轩 实验二插值法

数值分析实验报告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 ε 其中ε是一个非常小的数。这相当于是对()中19x 的系数作一个小的扰动。我们希望比较()和()根的差别,从而分析方程()的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个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 的全部根;而函数 poly(v)b =

的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve = ))20:1((ve poly roots + 上述简单的Matlab 程序便得到()的全部根,程序中的“ess ”即是()中的ε。 实验要求: (1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。 如果扰动项的系数ε很小,我们自然感觉()和()的解应当相差很小。计算中你有什么出乎意料的发现表明有些解关于如此的扰动敏感性如何 (2)将方程()中的扰动项改成18x ε或其它形式,实验中又有怎样的现象 出现 (3)(选作部分)请从理论上分析产生这一问题的根源。注意我们可以将 方程()写成展开的形式, ) 3.1(0 ),(1920=+-= x x x p αα 同时将方程的解x 看成是系数α的函数,考察方程的某个解关于α的扰动是否敏感,与研究它关于α的导数的大小有何关系为什么你发现了什么现象,哪些根关于α的变化更敏感 思考题一:(上述实验的改进) 在上述实验中我们会发现用roots 函数求解多项式方程的精度不高,为此你可以考虑用符号函数solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。

数值分析实验报告2

实验报告 实验项目名称函数逼近与快速傅里叶变换实验室数学实验室 所属课程名称数值逼近 实验类型算法设计 实验日期 班级 学号 姓名 成绩

512*x^10 - 1280*x^8 + 1120*x^6 - 400*x^4 + 50*x^2 - 1 并得到Figure,图像如下: 实验二:编写程序实现[-1,1]上n阶勒让德多项式,并作画(n=0,1,…,10 在一个figure中)。要求:输入Legendre(-1,1,n),输出如a n x n+a n-1x n-1+…多项式。 在MATLAB的Editor中建立一个M-文件,输入程序代码,实现勒让德多项式的程序代码如下: function Pn=Legendre(n,x) syms x; if n==0 Pn=1; else if n==1 Pn=x; else Pn=expand((2*n-1)*x*Legendre(n-1)-(n-1)*Legendre(n-2))/(n); end x=[-1:0.1:1]; A=sym2poly(Pn); yn=polyval(A,x); plot (x,yn,'-o'); hold on

end 在command Windows中输入命令:Legendre(10),得出的结果为: Legendre(10) ans = (46189*x^10)/256 - (109395*x^8)/256 + (45045*x^6)/128 - (15015*x^4)/128 + (3465*x^2)/256 - 63/256 并得到Figure,图像如下: 实验三:利用切比雪夫零点做拉格朗日插值,并与以前拉格朗日插值结果比较。 在MATLAB的Editor中建立一个M-文件,输入程序代码,实现拉格朗日插值多项式的程序代码如下: function [C,D]=lagr1(X,Y) n=length(X); D=zeros(n,n); D(:,1)=Y'; for j=2:n for k=j:n D(k,j)=(D(k,j-1)- D(k-1,j-1))/(X(k)-X(k-j+1)); end end C=D(n,n); for k=(n-1):-1:1

数值分析实验指导2012

数值分析实验指导 2012年8月

实验一 误差分析 实验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 +=== 上述简单的MATLAB 程序便得到(1.2)的全部根,程序中的“ess ”即是(1.2)中的ε。

数值分析实验报告

数值分析实验报告 姓名:周茹 学号: 912113850115 专业:数学与应用数学 指导老师:李建良

线性方程组的数值实验 一、课题名字:求解双对角线性方程组 二、问题描述 考虑一种特殊的对角线元素不为零的双对角线性方程组(以n=7为例) ?????????? ?????? ? ???? ?d a d a d a d a d a d a d 766 55 44 3 32 211??????????????????????x x x x x x x 7654321=?????????? ? ???????????b b b b b b b 7654321 写出一般的n (奇数)阶方程组程序(不要用消元法,因为不用它可以十分方便的解出这个方程组) 。 三、摘要 本文提出解三对角矩阵的一种十分简便的方法——追赶法,该算法适用于任意三对角方程组的求解。 四、引言 对于一般给定的d Ax =,我们可以用高斯消去法求解。但是高斯消去法过程复杂繁琐。对于特殊的三对角矩阵,如果A 是不可约的弱对角占优矩阵,可以将A 分解为UL ,再运用追赶法求解。

五、计算公式(数学模型) 对于形如????? ?? ????? ??? ?---b a c b a c b a c b n n n n n 111 2 2 2 11... ... ...的三对角矩阵UL A =,容易验证U 、L 具有如下形式: ??????? ????? ??? ?=u a u a u a u n n U ...... 3 3 22 1 , ?? ????? ? ?? ??????=1 (1) 1132 1l l l L 比较UL A =两边元素,可以得到 ? ?? ??-== = l a b u u c l b u i i i i i i 111 i=2, 3, ... ,n 考虑三对角线系数矩阵的线性方程组 f Ax = 这里()T n x x x x ... 2 1 = ,()T n f f f f ... 2 1 = 令y Lx =,则有 f Uy = 于是有 ()?????-== --u y a f y u f y i i i i i 1 1 11 1 * i=2, 3, ... ,n 再根据y Lx =可得到

数值分析实验报告2

实验名称 插值法 实验目的 (1)学习并熟练掌握MA TLAB 语言的编程; (2)通过课程实习能够应用MATLAB 软件来计算函数的插值,了解函数插值方法。 实验原理 牛顿差商形式多项式 P(x)=f(x0)+f[x0,x1](x-x0)+f[x0,x1,x2](x-x0)(x-x1)+…+f[x0,x1,x2…xn](x-x0)…(x-xn-1) 牛顿插值多项式的余项 Rn(x)=f[x0,x1,x2…xn]wn+1(x) 实验题目 {1}已知函数在下列各点的值为 i x 0.2 0.4 0.6 0.8 1.0 ()i f x 0.98 0.92 0.81 0.64 0.38 试用4次牛顿插值多项式()4P x 及三次样条函数()Q x (自然边界条件)对数据进行插 值。用图给出{(,i i x y ),i x =0.2+0.08i ,i=0,1,11,10},()4P x 及()Q x 。 ①实验过程 x1=[0.2 0.4 0.6 0.8 1.0]; y1=[0.98 0.92 0.81 0.64 0.38]; n=length(y1); c=y1(:); for j=2:n %求差商 for i=n:-1:j c(i)=(c(i)-c(i-1))/(x1(i)-x1(i-j+1)); end end syms x df d ; df(1)=1;d(1)=y1(1); for i=2:n %求牛顿差值多项式 df(i)=df(i-1)*(x-x1(i-1)); d(i)=c(i-1)*df(i); end P4=vpa(sum(d),5) %P4即为4次牛顿插值多项式,并保留小数点后5位数 pp=csape(x1,y1, 'variational');%调用三次样条函数 q=pp.coefs; q1=q(1,:)*[(x-.2)^3;(x-.2)^2;(x-.2);1]; q1=vpa(collect(q1),5) q2=q(1,:)*[(x-.4)^3;(x-.4)^2;(x-.4);1]; q2=vpa(collect(q2),5) q3=q(1,:)*[(x-.6)^3;(x-.6)^2;(x-.6);1];

数值分析试验一

数值分析第一次实验报告 姓名: 学号: 实验1: 1. 实验项目的性质和任务 通过上机实验,使学生对病态问题、线性方程组求解和函数的数值逼近方法有一个初步理解。 2.教学内容和要求 1)对高阶多多项式 20 1()(1)(2)(20)()k p x x x x x k ==---=-∏ 编程求下面方程的解 19()0p x x ε+= 并绘图演示方程的解与扰动量ε的关系。(实验) 2)对2~20n =,生成对应的Hilbert 矩阵,计算矩阵的条件数;通过先确定解获得常向量b 的方法,确定方程组 n H x b = 最后,用矩阵分解方法求解方程组,并分析计算结果。(第三章,实验题4) 3)对函数 2 1()[1,1]125f x x x =∈-+ 的Chebyshev 点 (21)cos( ) 1,2,...,12(1) k k x k n n π -==++ 编程进行Lagrange 插值,并分析插值结果。(第四章 实验1)

项目涉及核心知识点 病态方程求解、矩阵分解和方程组求解、Lagrange插值。 重点与难点 算法设计和matlab编程。 1)a.实验方案: 先创建一个20*50的零矩阵X,然后利用Matlab中的roots()和poly()函数将50个不同的ess扰动值所产生的50个解向量分别存入X矩阵中。然后再将ess向量分别和X的20个行向量绘图。即可直观的看出充分小的扰动值会产生非常大的偏差。即证明了这个问题的病态性。 b.编写程序: >> X=zeros(20,50); >> ve=zeros(1,21); >> ess=linspace(0,,50);k=1; >> while k<=50 ve(2)=ess(k); X(1:20,k)=roots(poly(1:20)+ve); k=k+1; end >> m=1; >> while m<=20 figure(m),plot(ess,X(m,:));

数值计算实验报告

(此文档为word格式,下载后您可任意编辑修改!) 2012级6班###(学号)计算机数值方法 实验报告成绩册 姓名:宋元台 学号: 成绩:

数值计算方法与算法实验报告 学期: 2014 至 2015 第 1 学期 2014年 12月1日课程名称: 数值计算方法与算法专业:信息与计算科学班级 12级5班 实验编号: 1实验项目Neton插值多项式指导教师:孙峪怀 姓名:宋元台学号:实验成绩: 一、实验目的及要求 实验目的: 掌握Newton插值多项式的算法,理解Newton插值多项式构造过程中基函数的继承特点,掌握差商表的计算特点。 实验要求: 1. 给出Newton插值算法 2. 用C语言实现算法 二、实验内容 三、实验步骤(该部分不够填写.请填写附页)

1.算法分析: 下面用伪码描述Newton插值多项式的算法: Step1 输入插值节点数n,插值点序列{x(i),f(i)},i=1,2,……,n,要计算的插值点x. Step2 形成差商表 for i=0 to n for j=n to i f(j)=((f(j)-f(j-1)(x(j)-x(j-1-i)); Step3 置初始值temp=1,newton=f(0) Step4 for i=1 to n temp=(x-x(i-1))*temp*由temp(k)=(x-x(k-1))*temp(k-1)形成 (x-x(0).....(x-x(i-1)* Newton=newton+temp*f(i); Step5 输出f(x)的近似数值newton(x)=newton. 2.用C语言实现算法的程序代码 #includeMAX_N) { printf("the input n is larger than MAX_N,please redefine the MAX_N.\n"); return 1; } if(n<=0) { printf("please input a number between 1 and %d.\n",MAX_N); return 1; } printf("now input the (x_i,y_i)i=0,...%d\n",n); for(i=0;i<=n;i++) { printf("please input x(%d) y(%d)\n",i,i);

数值分析实验报告模板

数值分析实验报告模板 篇一:数值分析实验报告(一)(完整) 数值分析实验报告 1 2 3 4 5 篇二:数值分析实验报告 实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。利用二分法求解给定非线性方程的根,在给定的范围内,假设f(x,y)在[a,b]上连续,f(a)xf(b) 直接影响迭代的次数甚至迭代的收敛与发散。即若x0 偏离所求根较远,Newton法可能发散的结论。并且本实验中还利用利用改进的Newton法求解同样的方程,且将结果与Newton法的结果比较分析。 前言:(目的和意义) 掌握二分法与Newton法的基本原理和应用。掌握二分法的原理,验证二分法,在选对有根区间的前提下,必是收

敛,但精度不够。熟悉Matlab语言编程,学习编程要点。体会Newton使用时的优点,和局部收敛性,而在初值选取不当时,会发散。 数学原理: 对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。 对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b) Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式xk?1?xk?f(xk) f'(xk) 产生逼近解x*的迭代数列{xk},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 xk?1?xk?rf(xk) 'f(xk) 其中r为要求的方程的根的重数,这就是改进的Newton 法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x);

数值分析实验报告

实验一、误差分析 一、实验目的 1.通过上机编程,复习巩固以前所学程序设计语言及上机操作指令; 2.通过上机计算,了解误差、绝对误差、误差界、相对误差界的有关概念; 3.通过上机计算,了解舍入误差所引起的数值不稳定性。 二.实验原理 误差问题是数值分析的基础,又是数值分析中一个困难的课题。在实际计算中,如果选用了不同的算法,由于舍入误差的影响,将会得到截然不同的结果。因此,选取算法时注重分析舍入误差的影响,在实际计算中是十分重要的。同时,由于在数值求解过程中用有限的过程代替无限的过程会产生截断误差,因此算法的好坏会影响到数值结果的精度。 三.实验内容 对20,,2,1,0 =n ,计算定积分 ?+=10 5dx x x y n n . 算法1:利用递推公式 151--=n n y n y , 20,,2,1 =n , 取 ?≈-=+=1 00182322.05ln 6ln 51dx x y . 算法2:利用递推公式 n n y n y 51511-= - 1,,19,20 =n . 注意到 ???=≤+≤=10 10202010201051515611261dx x dx x x dx x , 取 008730.0)12611051(20120≈+≈y .: 四.实验程序及运行结果 程序一: t=log(6)-log(5);

n=1; y(1)=t; for k=2:1:20 y(k)=1/k-5*y(k-1); n=n+1; end y y =0.0884 y =0.0581 y =0.0431 y =0.0346 y =0.0271 y =0.0313 y =-0.0134 y =0.1920 y =-0.8487 y =4.3436 y =-21.6268 y =108.2176 y =-541.0110 y =2.7051e+003 y =-1.3526e+004 y =6.7628e+004 y =-3.3814e+005 y =1.6907e+006 y =-8.4535e+006 y =4.2267e+007 程序2: y=zeros(20,1); n=1; y1=(1/105+1/126)/2;y(20)=y1; for k=20:-1:2 y(k-1)=1/(5*k)-(1/5)*y(k); n=n+1; end 运行结果:y = 0.0884 0.0580 0.0431 0.0343 0.0285 0.0212 0.0188 0.0169

数值分析实验题目及解答

内容包括: 实验题目1:算法的数值稳定性实验 实验题目2:LU分解实验 实验题目3:三次样条插值外推样条实验 实验题目4:第二类Fredholm 积分方程实验实验题目5:M级显式R_K法

实验题目:算法的数值稳定性实验 实验内容:计算积分()1 0()d 1515n x I n x a x ==+? (n=1,2,…,20) 易得到下面递推公式 ()()1 1I n aI n n =--+ 并有估计式 ()() ()() 1 1 111I n a n a n << +++ 计算方法: 算法一:采用下面递推公式计算: ()()1 1I n aI n n =--+ ()1,2,,20 n = 取初值()116 0ln ln 15a I a +== 算法二: 采用下面递推公式计算: ()()111I n I n a n ??-= -+???? ()20,19,,1 n =

结果分析:(分析哪个好哪个不好,原因是什么) 我觉得算法二比较好, 原因一:根据式 ()() ()() 1 1 111I n a n a n << +++得知,I(n)不可能小于 零,而算法一的计算结果有部分结果小于零。原因二:对算法一记初始误差 ε0=/I 0-I(0)/>0; 则εn =/I n -I(n)/=a/I n-1-I(n-1)/=a n *ε0 由此可知,当n=20时, ε20把ε0放大了a 20倍,其结果造成严重的。 而对于算法二^ ^ 11n n a εε-= ,…, ^ ^ 01 n n a εε=,尽管有初始误差^ 20ε,但随着计算的进程,这个误差的影响不断减小。 附:源程序:(把源程序附上) 算法一程序: >> format long >> a=15;I=log(16/15); for n=1:20 n I=-a*I+1/n end 算法二程序: >> format long >> a=15;I=31/10080; >> for n=20:-1:1 n I I=1/a*(-I+1/n); End

(完整版)哈工大-数值分析上机实验报告

实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和Newton法及改进的Newton法。 前言:(目的和意义) 掌握二分法与Newton法的基本原理和应用。 数学原理: 对于一个非线性方程的数值解法很多。在此介绍两种最常见的方法:二分法和Newton法。 对于二分法,其数学实质就是说对于给定的待求解的方程f(x),其在[a,b]上连续,f(a)f(b)<0,且f(x)在[a,b]内仅有一个实根x*,取区间中点c,若,则c恰为其根,否则根据f(a)f(c)<0是否成立判断根在区间[a,c]和[c,b]中的哪一个,从而得出新区间,仍称为[a,b]。重复运行计算,直至满足精度为止。这就是二分法的计算思想。

Newton法通常预先要给出一个猜测初值x0,然后根据其迭代公式 产生逼近解x*的迭代数列{x k},这就是Newton法的思想。当x0接近x*时收敛很快,但是当x0选择不好时,可能会发散,因此初值的选取很重要。另外,若将该迭代公式改进为 其中r为要求的方程的根的重数,这就是改进的Newton法,当求解已知重数的方程的根时,在同种条件下其收敛速度要比Newton法快的多。 程序设计: 本实验采用Matlab的M文件编写。其中待求解的方程写成function的方式,如下 function y=f(x); y=-x*x-sin(x); 写成如上形式即可,下面给出主程序。 二分法源程序: clear %%%给定求解区间 b=1.5; a=0;

%%%误差 R=1; k=0;%迭代次数初值 while (R>5e-6) ; c=(a+b)/2; if f12(a)*f12(c)>0; a=c; else b=c; end R=b-a;%求出误差 k=k+1; end x=c%给出解 Newton法及改进的Newton法源程序:clear %%%% 输入函数 f=input('请输入需要求解函数>>','s') %%%求解f(x)的导数 df=diff(f);

数值分析实验报告总结

数值分析实验报告总结 随着电子计算机的普及与发展,科学计算已成为现代科 学的重要组成部分,因而数值计算方法的内容也愈来愈广泛和丰富。通过本学期的学习,主要掌握了一些数值方法的基本原理、具体算法,并通过编程在计算机上来实现这些算法。 算法算法是指由基本算术运算及运算顺序的规定构成的完 整的解题步骤。算法可以使用框图、算法语言、数学语言、自然语言来进行描述。具有的特征:正确性、有穷性、适用范围广、运算工作量少、使用资源少、逻辑结构简单、便于实现、计算结果可靠。 误差 计算机的计算结果通常是近似的,因此算法必有误差, 并且应能估计误差。误差是指近似值与真正值之差。绝对误差是指近似值与真正值之差或差的绝对值;相对误差:是指近似值与真正值之比或比的绝对值。误差来源见表 第三章泛函分析泛函分析概要 泛函分析是研究“函数的函数”、函数空间和它们之间 变换的一门较新的数学分支,隶属分析数学。它以各种学科

如果 a 是相容范数,且任何满足 为具体背景,在集合的基础上,把客观世界中的研究对象抽 范数 范数,是具有“长度”概念的函数。在线性代数、泛函 分析及相关的数学领域,泛函是一个函数,其为矢量空间内 的所有矢量赋予非零的正长度或大小。这里以 Cn 空间为例, Rn 空间类似。最常用的范数就是 P-范数。那么 当P 取1, 2 ,s 的时候分别是以下几种最简单的情形: 其中2-范数就是通常意义下的距离。 对于这些范数有以下不等式: 1 < n1/2 另外,若p 和q 是赫德尔共轭指标,即 1/p+1/q=1 么有赫德尔不等式: II = ||xH*y| 当p=q=2时就是柯西-许瓦兹不等式 般来讲矩阵范数除了正定性,齐次性和三角不等式之 矩阵范数通常也称为相容范数。 象为元素和空间。女口:距离空间,赋范线性空间, 内积空间。 1-范数: 1= x1 + x2 +?+ xn 2-范数: x 2=1/2 8 -范数: 8 =max oo ,那 外,还规定其必须满足相容性: 所以

数值分析实验报告

学生实验报告实验课程名称 开课实验室 学院年级专业班 学生姓名学号 开课时间至学年学期

if(A(m,k)~=0) if(m~=k) A([k m],:)=A([m k],:); %换行 end A(k+1:n, k:c)=A(k+1:n, k:c)-(A(k+1:n,k)/ A(k,k))*A(k, k:c); %消去end end x=zeros(length(b),1); %回代求解 x(n)=A(n,c)/A(n,n); for k=n-1:-1:1 x(k)=(A(k,c)-A(k,k+1:n)*x(k+1:n))/A(k,k); end y=x; format short;%设置为默认格式显示,显示5位 (2)建立MATLAB界面 利用MA TLAB的GUI建立如下界面求解线性方程组: 详见程序。 五、计算实例、数据、结果、分析 下面我们对以上的结果进行测试,求解:

? ? ? ? ? ? ? ? ? ? ? ? - = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - - - - - - 7 2 5 10 13 9 14 4 4 3 2 1 13 12 4 3 3 10 2 4 3 2 1 x x x x 输入数据后点击和,得到如下结果: 更改以上数据进行测试,求解如下方程组: 1 2 3 4 43211 34321 23431 12341 x x x x ?? ???? ?? ???? ?? ???? = ?? ???? - ?? ???? - ???? ?? 得到如下结果:

数值分析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) 附录

数值计算实验报告2

贵州师范大学数学与计算机科学学院学生实验报告 课程名称: 数值分析 班级: 实验日期:2013年9月27日 学 号: 姓名: 指导教师: 实验成绩: 一、实验名称 实验二: Lagrange 插值与曲线拟合的最小二乘法 二、实验目的及要求 1.让学生掌握Lagrange 插值与曲线拟合的最小二乘法 2.让学生能够用这些方法解决一些实际问题 三、实验环境 每人一台计算机,要求安装Windows XP 操作系统,Microsoft office2003、MATLAB6.5(或7.0). 四、实验内容 题1: 对函数2 11 )(x x f += ,取n+1个等距分布的插值节点,取不同的n ,作n 次Lagrange 插值,把)(x f 和插值多项式的图象绘制在同一张图上进行比较. 题2: 给定数据点 分别用一次,二次,和三次多项式曲线,以及最小二乘法拟合这些数据点,哪一种曲线拟合较好?为什么?你能找出更好的拟合曲线吗? 提示:用残差平方的大小来判断拟合的优劣,越小越好. 五、算法描述及实验步骤 针对实验1: (1)运用Matlab 创建M 文件 (2)在命令窗口调用文件 针对实验2: (1)运用Matlab 作出上面表中的数据的散点图 (2)分别作出一次二次三次多项式拟合曲线 (3)比较三种曲线拟合的精度即比较残差平方的大小

六、调试过程及实验结果 https://www.wendangku.net/doc/4715836415.html,grange插值: (1)命令窗口输入: >> f=shuru(-5,5,10) (回车) f = Columns 1 through 6 0.0385 0.0588 0.1000 0.2000 0.5000 1.0000 Columns 7 through 11 0.5000 0.2000 0.1000 0.0588 0.0385 (2)所得结果为图形所示: 2. 曲线拟合的最小二乘法 (1)先作出该散点图的一次拟合曲线(程序如下):>> x=[-3,-1,0,1,3,5]; >> t=-4:0.01:6; >> y=[-6,-3,-1,0,1,3]; >> subplot(1,3,1) >> scatter(x,y,'filled','r'); >> hold on >> p1=polyfit(x,y,1) p1 = 1.0776 -1.8980 >> y1=polyval(p1,x);

数值分析实验报告

实验报告 实验项目名称 估计水塔的水流量 实验项目类型 验证 演示 综合 设计 其他 指导教师 成绩 一、实验目的 (1)学会对实际问题的分析方法 (2)学会利用所学的知识解决实际问题 (3)设计出相应的算法,编制相应的应用程序 二、实验内容 某居民区,其自来水是有一个圆柱形水塔提供,水塔高12.2m ,塔的直径为17.4m ,水塔是由水泵根据水塔中的水位自动加水,一般水泵每天工作两次。按照设计,当水塔中的水位降低至最低水位,约8.2m 时,水泵自动启动加水。当水位升至最高水位,约10.8m 时,水泵停止工作。 下表给出了某一天的测量记录,测量了28个时刻的数据,但由于水泵正向水塔供水,由3个时刻无法测量到水位(表中为—)。 试建立数学模型,计算居民的用水速度和日总用水量。 三、实验原理、方法(算法)、步骤 时刻 0 0.921 1.843 2.949 3.871 4.978 5.900 水位 9.677 9.479 9.308 9.125 8.982 8.814. 8.686 时刻 7.006 7.928 8.967 9.981 10.925 10.945 12.032 水位 8.525 8.388 8.220 — — 10.820 10.500 时刻 12.954 13.875 14.982 15.903 1 6.826 1 7.931 19.037 水位 10.210 9.936 9.653 9.409 9.180 8.921 8.662 时刻 1 9.959 20.839 22.015 22.958 23.880 24.986 25.908 水位 8.433 8.220 — 10.820 10.591 10.354 10.180

数值分析实验报告2

实验报告 一、实验名称 复合梯形求积公式、复合辛普森求积公式、龙贝格求积公式及自适应辛普森积分。 二、实验目的及要求 1. 掌握复合梯形求积计算积分、复合辛普森求积计算积分、龙贝格求积计算积分和自适应辛普森积分的基本思路和步骤. 2. 培养Matlab 编程与上机调试能力. 三、实验环境 计算机,MATLAB 软件 四、实验内容 1.用不同数值方法计算积分9 4 ln 1 0-=? xdx x 。 (1)取不同的步长h 。分别用复合梯形及复合辛普森求积计算积分,给出误差中关于h 的函数,并与积分精确指比较两个公式的精度,是否存在一个最小的h ,使得精度不能再被改善。 (2)用龙贝格求积计算完成问题(1)。 (3)用自适应辛普森积分,使其精度达到10-4。 五、算法描述及实验步骤 1.复合梯形公式 将区间[a,b]划分为n 等份,分点x k =a+ah,h=(b-a)/h,k=0,1,...,n ,在每个子区间[x k ,x k +1](k=0,1,...,n-1)上采用梯形公式(),得 )]()([2 )(b f a f a b dx x f b a +-≈? () )]()(2)([2)]()([21 1 110b f x f b f h x f x f h T n k k k n k k n ++=+=∑∑-=+-= () ),(),(12 )(' '2b a f h a b f R n ∈-- =ηη () 其中Tn 称为复合梯形公式,Rn 为复合梯形公式的余项。 2.复合辛普森求积公式 将区间[a,b]划分为n 等份,在每个子区间[x k ,x k +1](k=0,1,...,n-1)上采用辛普森公式(),得 )]()2 (4)([6b f b a f a f a b S +++-= ()

数值分析实验(2)word版本

数值分析实验(2)

实验二 插值法 P50 专业班级:信计131班 姓名:段雨博 学号:2013014907 一、实验目的 1、熟悉MATLAB 编程; 2、学习插值方法及程序设计算法。 二、实验题目 1、已知函数在下列各点的值为 试用4次牛顿插值多项式()4P x 及三次样条函数()S x (自然边界条件)对数据进行插值用图给出(){},,0.20.08,0,1,11,10i i i x y x i i =+=,()4P x 及()S x 。 2、在区间[]1,1-上分别取10,20n =用两组等距节点对龙格函数()2 1125f x x = +作多项式插值及三次样条插值,对每个n 值,分别画出插值函数及()f x 的图形。 3、下列数据点的插值 可以得到平方根函数的近似,在区间[]0,64上作图 (1)用这9个点作8次多项式插值()8L x (2)用三次样条(第一边界条件)程序求()S x 从得到结果看在[]0,64上,哪个插值更精确;在区间[]0,1上,两种插值哪个更精确? 三、实验原理与理论基础

1、拉格朗日差值公式 )()(111k k k k k k x x x x y y y x L ---+ =++ 点斜式 k k k k k k k k x x x x y x x x x y x L --+--=++++11111)( 两点式 2、n 次插值基函数 ....,2,1,0,)()(0n j y x l y x L i j n k k k j n ===∑= n k x x x x x x x x x x x x x l n k n k k k k k ,...,1,0,) () (... ) () (... ) () ()(1100=------= -- 3、牛顿插值多项式 ...))(](,,[)](,[)()(102100100+--+++=x x x x x x x f x x x x f x f x P n ))...(](,...,[100---+n n x x x x x x f )(],...,,[)()()(10x x x x f x P x f x R n n n n +=-=ω 4、三次样条函数 若函数],,[)(2b a C x S ∈且在每个小区间],[1+j j x x 上是三次多项式,其中, b x x x a n =<<<=...10是给定节点,则称)(x S 是节点n x x x ,...,,10上的三次样条函数。若在节点j x 上给定函数值),,...,2,1,0)((n j x f y j i ==并成立,,...,2,1,0,)(n j y x S i j ==则称)(x S 为三次样条插值函数。 5、三次样条函数的边界条件 (1)0)()(''''''00''====n n f x S f x S (2)'''00')(,)(n n f x S f x S == 四、实验内容 1、M 文件: function [p]=Newton_Polyfit(X,Y) format long g r=size(X); n=r(2); M=ones(n,n); M(:,1)=Y'; for i=2:n

数值分析实验报告1

实验一 误差分析 实验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 的全部根;而函数 poly(v)b = 的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve =

相关文档