文档视界 最新最全的文档下载
当前位置:文档视界 › 数值计算方法上机实验报告

数值计算方法上机实验报告

数值计算方法上机实验报告
数值计算方法上机实验报告

华北电力大学

科技学院

课程名称:数值计算方法上机实验报告

姓名:牛玺童

班级:电气11k6

学号:111904010415

k k

*

k

*

1.题目

实验一 造倒数表

造倒数表,并例求 18 的倒数。(精度为 0.0005)

2.算法原理

2.1 牛顿迭代法 牛顿迭代法是通过非线性方程线性化得到迭代序列的一种方法。

对于非线性方程 f (x ) = 0 ,若已知根 x * 的一个近似值 x ,将 f (x ) 在 x 处展 成一阶泰勒公式后忽略高次项可得:

f (x ) ≈ f (x k ) + f '(x k )(x - x k )

右端是直线方程,用这个直线方程来近似非线性方程 f (x ) 。将非线性方程

f (x ) = 0 的根 x * 代入 f (x * ) = 0 ,即

f (x k ) + f '(x k )(x - x k ) ≈ 0

解出

x * ≈ x - f (x k ) f '(x k )

将右端取为 x k +1 ,则 x k +1 是比 x k 更接近于 x

的近似值,即

x k +1 ≈ x k -

f (x k ) f '(x k ) 这就是牛顿迭代公式,相应的迭代函数是

?(x ) = x -

f (x )

f '(x )

2.2 牛顿迭代法的应用

计算 1 是求 cx -1 = 0 的解,解出 x ,即得到 1

。取 f (x ) = cx -1 , f '(x ) = c ,

c 有牛顿迭代公式

x k +1

= x k c

- cx k -1 = 1

c c

这样就失去了迭代的意义,达不到迭代的效果。

故重新构造方程: cx 2 - x = 0 , 1

也是该式的解。 故取 f (x ) = cx 2 - x ,

c f '(x ) = 2cx -1 ,则有牛顿迭代公式

k k k

cx 2 -x cx 2

x

k +1

=x

k

- 2cx=,

-1 2c -1 k = 0,1,...

1

的值在

1

k k

~

1

之间,取初值x = 0.1。

18

3.流程图

20 10 0

1 ?k

k +1 ?k

x

1

?x

x

-

f (x0 )

f '(x0 ) ?x1

读入

x

,ε,N

f '(x)= ?0 =

x -x <ε? <

1 0

=

输出

3

4.输出结果

5.结果分析

当 k = 3 时,得 5 位有效数字 0.05 564。此时, x 3 - x 4 = 0.00 000 < 0.0 005 ,

故取 x * = x = 0.05 564 ≈ 0.056 。

此种迭代格式仍存在一定的缺陷,经实验后发现当初值 x 0 > x * 时必收敛,但

是当 x 0 < x * - ? (? > 0) 时迭代结果发散,? 较小尚不确定。

6.心得体会

起初对题目的理解并不是很透彻,另外对构建牛顿迭代公式理论依据不是特 别充分,比如说为什么在原有直接得到的式子两边各乘一个 x ,只是试出来的。 在编程方面不够成熟。当然也加深了对牛顿迭代法的理解和应用的具体实现。

kk

a 11 22 33

1.题目

实验二 例 3-4

用列主元消去法求解方程组

? 12x 1 - 3x 2 + 3x 3 =

15?

? ?

?-18x 1 - 3x 2 - x 3 = -15← ? ?

? x 1 + x 2 + x 3 = 6↑

并求出系数矩阵 A 的行列式的值 det A 。

2.算法原理

2.1 顺序高斯消去法

顺序高斯消去法是利用线性方程组初等变换中的一种变换,即用一个不为零 的数乘一个方程后加至另一个方程,使方程组变成同解的上三角方程组,然后再 自下而上对上三角方程组求解。这样,顺序高斯消去法可分成“消去”和“回代” 两个过程。

在用顺序高斯消去法时,在消元之前检查方程组的系数矩阵的顺序主子式, 当阶数较高时是很难做到的。若线性方程组的系数具有某种性质时,如常遇到的 对角占优方程组,自然能够用高斯消去法求解。

2.2 列选主元消去法

线性方程组只要系数矩阵非奇异,就存在惟一解,但是按顺序消元过程中可

能出现主元素 a (k )

= 0 ,这时尽管系数矩阵非奇异,消元过程无法再进行,或者 即使 (k )

a kk ≠ ,但如果其绝对值很小,用它作除数也会导致其他元素的数量级急剧

增大和使舍入误差扩大,将严重影响计算的精度。 为避免在校园过程确定乘数

时的所用除数是零或绝对值小的数,即零主元或

小主元,在每一次消元之前,要增加一个选主元的过程,将绝对值大的元素交换 到主对角线的位置上来。

列选主元是当高斯消元到第

k 步时,从 k 列的 a kk 以下(包括 a kk )的各元素中 选出绝对值最大的,然后通过行交换将其交换到

a kk 的位置上。交换系数矩阵中的 两行(包括常数项),只相当于两个方程的位置交换了,因此,列选主元不影响 求解的结果。

列选主元消去法常用来求行列式。设有矩阵

a 11 L a 1n A = M M n 1 L a nn

用列主元消去法将其化为上三角形矩阵,对角线上元素为 a (1) , a (2) ,L , a (3)

, 于是行

a a L a

a

kk

?d

k ?l

a

ik

?

i ?l

a

lj

?t, a

kj

?a

lj

, t?a

kj

j =k ,k +1,..., n

b

l

?t, b

k

?b

l ,

t ?b

k

k +1?i

a

ik

>

=

=

列式

det A =(-1)m(1) (2) (n)

11 22 nn

其中m 为所进行的行交换次数。这是实际中求行列式值的可靠方法。

3.流程图

d ?

d

k +1?k

1 ?k

a

ik

a

kk

?a

ik

i =k +1, k + 2,L, n

a

ij

-a

ik

a

kj

?a

ij

i, j =k +1, k + 2,L, n

b

i

-a

i

b

k

?b

i

i =k +1, k + 2,L, n

b

n

a

nn

?b

n

1

n

a

b

i

- a b ?b

∑ij j i

j =i +1

i =n -1, n- 2,L,1

读入数据a

ij

, b

i

i, j = 1, 2,L, n

=

输出

b

1

, b

2

,L, b

n

kk

4.输出结果

5.结果分析

采用计算机运算在计算大数据时有明显的优点,另外也需要考虑到存储。

高斯消去法的使用条件是 a (k )

≠ 0, k = 1, 2,L , n ,而列选主元法可以保证这一

条件。并且可以避免在消元过程确定乘数时所用除数是绝对值小的数,相对全选 主元的运算量小,一般也可以满足精度要求。

6.心得体会

此次上机不仅需要对原理了解透彻,而且要求的编程能力较强。在定义和思 路上没问题,只是在编程软件的使用上遇到些不稳定的问题,如头文件的使用。 在存储空间上得到了新的认识,另外发现了当代码多时流程框图的好处。编程是 一件很需要耐心的事,自己还有很大进步空间。

(1) (1) (2) M =

1.题目

实验三 例 3-10

用杜里特尔分解法求矩阵 A 的逆矩阵 A -1 。

1 1 A = 1

2 -1

-2

2.算法原理

-2 1 1

2.1 杜里特尔分解法

设线性方程组 Ax = b ,对系数矩阵 A 进行除不交换两行位置得初等行变换相

当于用初等矩阵 M 1 左乘 A ,在对方程组第一次消元后,A 和 b 分别化为 A

b (2) ,即

?M A (1)

= A (2) ? 1

? M b (1) = b (2)

?? 1

? 1 ? ? ? ??-m 21 1 ?? 其中

M 1 = ?-m 31 1 ← ? ?

? M O ?

??-m n 1

1↑?

第 k 次消元时, A (k ) 和 b (k ) 分别化为 A (k +1) 和 b (k +1) ,即

?M A (k )

= A (k +1) ? k ? M b (k ) = b (k +1) ?

? k

?1 ? ? ?

? ? 其中

1 ?

? O ? 1 ? ← -m k +1,k O ?

? M O ? ? ?

?? -m nk 1↑?

n -1 2 1 L M M b = -1

1 M

2 a 消元过程是对 k = 1~ n -1进行的,因此有

??M L M M A (1) = A (n ) ? ??

M (1) n -1 2 1 b (n )

将上三角形矩阵 A (n ) 记为 U ,于是有

A = M -1 -1 L M n -1U = LU

1

其中

L = M -1M -1 M -1 m 21 m = 31 1 m 32 1

1 2 L n -1

M M

m 43 O M M M O

为单位下三角形矩形。

m n 1 m n 2 m n 3 L

1 这样高斯消去法的实质是将系数矩阵 A 分解为两个三角形矩阵 L 和 U 相乘, 即 A = LU

在上述矩阵描述中遇到了下三角形矩阵运算。主对角线以上元素全为零的方 阵称为下三角形矩阵。下三角形矩阵的乘积仍是下三角形矩阵。若下三角形矩阵 可逆,其逆矩阵仍是下三角形矩阵,而且下三角形矩阵的乘积和逆矩阵很容易求 得。

把 A 分解成一个单位下三角阵和一个上三角阵 U 的乘积成为杜里特尔分解。 这种分解是惟一的。

2.2 高斯-约当法

高斯消去法有消元和回代两个过程,当对消元过程稍加改变便可以使方程组 化为对角形方程组

Dx = b

的形式,其中矩阵 D 为对角形矩阵,即

(1)

11

D =

(2)

22 O a

(n ) nn

当高斯-约当消去法消元的每一步都先用主元去除其所在行的各元素(包括常 数项)时,方程组便可化成

(n )

1 x 1 b 1

1 x b (n )

2 =

2 O M

M 1 x n b (n ) n

这是等号右端即为方程组的解。高斯-约当消去法每一步都用主元去除其所在行

a

的各元素(包括常数项),这个个过程成为归一化,这时方程组的系数阵转化为单位阵。为减小误差,高斯-约当消去法还常用列选主元技术。

3.流程图

i +1 ?i

1 ?a

11

1 ?i

i +1 ?i

a

ij

a

ii

?a

ij

j=i+1,i+2,L,2n

1 ?a

ij

i =1, 2,???, n

1 ?a

ii

a

i1

a

11

?a

i1

i =1, 2,L, n

0 ?r

r +1 ?r i

a

ij

-∑a ik a kj ?a ij

k =1

j =i, i+1,L , 2n

a

rj

-a

ij

a

r

a

r +1

?a

rj

j =r +2, r+3,L, 2n

i

a ji-∑a ki a jk

a

ii

?a

ji

k=0

j =i +1,i+2,L, n

0 =a

r

a

r +1

0 ? a

i j

i = 2, 3 , L , n

j = 1 , 2 , L , i

a

1j

a

11

?a

1j

j =1,2,L,2n输出a ij

i =1, 2,L, n

j =i +n, i+n +1,L, 2n

输入数据a

ij

i, j =1, 2,???, n

1+n?j

=≠

=

=

4.输出结果

5.结果分析

采用杜里特尔分解法求解方程组时,由于把对系数矩阵的计算和对右端项的计算分开,这使计算线性方程组系非常方便。只需进行一次矩形三角分解,然后再解多个三个方程组,且多解一个方程组仅需要增加大约n2 次乘除法运算。

采用高斯约当法仅需要进行消元归一,而不需要回代,为编程实现提供了便利。

6.心得体会

步骤很重要,审题--确定算法--解题步骤--流程图--程序--代入简单值进行验证。在编程时先在代码输入区打好框架,并且尽量在每一命令后注释,方便检查错误和日后复习。定义和变量存储很灵活,如我把单位向量直接赋给了 A 矩阵变量中,还有根据最终的目的直接简化计算。另外赋值前,确定存储空间并且要定义初值为零。

实验四 例 4-6

1.题目

已知 f (x ) 的观测数据

2.算法原理

首先构造基函数 l k

(x ) =

n ∏ i =0 i ≠k

x - x i x k - x i

,可以证明基函数满足下列条件:

?0 l (x ) = ?

i ≠ k

, k i ?

1 i = k 对于给定 n +1个节点, n 次拉格朗日插值多项式由下式给出:

n

L (x ) = ∑l k (x ) y k

k =0

其中

l k

(x ) = n

∏ i =0 i ≠k

x - x i

x k - x i

由于 l k (x ) 是一个关于 x 的 n 次多项式,所以 L (x ) 为关于 x 的不高于 n 次的代数多 项式。当 x = x i 时, L (x i ) = y i ,满足插值条件。

3.流程图

输入(x i ,y i ) i = 0,1,L , n

0 ? y 0 ? k

1 ? t

x - x j

t ? t

x k - x j

j = 0,???, k - 1, k +1,???, n

y + ty k ? y

=

4.输出结果

5.结果分析

由于所知的拉格朗日计算机算法只能实现计算某一特定值的近似函数值,而不知如何导出表达式,故例求x=2.5 处的函数值以说明表达式以得出,只是在计算机程序中。并且也能达到拉格朗日插值法使用的目的。

6.心得体会

编程不够细心,程序没问题,却因为不知道是输入文件错了而检查了好长时间。但同时也加深了对拉格朗日基函数性质的认识和理解。

0 1 m i

1.题目

实验五 习题 5-2

给出平面函数 z (x , y ) = ax + by + c 的数据

按最小二乘原理确定 a ,b ,c 。

2.算法原理

2.1 最小二乘原理

设已知某物理过程 y = f (x ) 的一组观测数据

(x i , f (x i )), i = 1, 2,L , m

要求在某特定函数类 Φ(x ) 中寻找一个函数 ?(x ) 作为 y = f (x ) 的近似函数,使得

二者在 x i 上的误差或称残差

δi = ?(x i ) - f (x i ) , i = 1, 2,L , m

按某种度量标准为最小,这就是拟合问题。

要求残差 δi 按某种度量标准为最小,即要求由残差 δi 构成的残差向量

δ = [δ ,δ ,L ,δ ]T

的某种范数 δ 为最小。例如,要求 δ ,或

δ 即

1

m m

δ

1

= ∑ δi i =0

=∑ i =0

?(x i ) - f (x i )

δ

= max δ ∞

= max ? (x i ) - f (x i )

i

i

为最小,这本来都是很自然的,可是计算不太方便。所以通常要求:

1

1

m 2 2 ? m 2 ?2

δ 2 = ∑δi = ?∑[ ? (x i ) - f (x i ) ] ←

i =0 ? i =0 ↑

∞ ∞ 0 1 1 2 2 n n

或者

δ

2=

m

m

δ 2

=

[ ?(x ) - f (x ) ]2

2

i

i =0

i

i

i =0

为最小。这种要求误差平方和最小的拟合称为曲线拟合的最小二乘法。

2.2 多变量数据拟合

对于给定的一组数据 (x i , y i ) , i =1,2…, m ,寻求做 n 次多项式

使性能指标

n

y = ∑ k =0

a k x

m n 0 1 n

i

k i

J (a , a ,L , a ) =

( y i =1

-

k =0

a x k )2 为最小。

由于性能指标 J 可以被看做关于 a k , k =0,1,…, n 的多元函数,故上述拟 合多项式的构造问题可转化为多元函数的极值问题。令

从而有正则方程组

?J = 0 ?a k

∑ i

i

' ∑

i

a 0

'

i

? m x x 2 L x n / ? / ? y / ' x

x 2

3 n +1 ' ∞ x L

x ∞ a '

x y ∞ ∑ i ∑ i ∑ i ' ∑ i ∞ ' 1 ∞ = '∑ i i ∞

' M M M L M ' M ∞ M ' ∞ ' x n x

n +1

x n +2 x

2n ≤a ? 'x n y ∞≤∑ i ∑ i

∑ i L ∑ i ? n ≤∑ i i ?

对多变量(或称多元)线性模型

y * = a + a x + a x +L + a x

进行了 m 次观测

? y *

= a + a x + a x

+L + a x 1 0 1 11 2 21 ? n 1 n ? y *

= a + a x + a x +L + a x

? 2

1 12

2 22

n 2 n

? M ? y * = a + a x + a x +L + a x

? n 0 1 1n 2 2n

nn n

这个称为回归方程组,写成矩阵形式

y= Aα

k

1 1

2

m

1 2 m

? y * / ?1 x 11

x 21 L x n 1 / ?a 0 /

' ∞ ' ∞ ' ∞ y

* 1 x x L x a 其中

y = ' 2 ∞ , A = '

12

22

n 2 ∞

, α = ' 1 ∞ 。 ' M ∞

'M M M M M ∞ ' M ∞

' ∞ ' ∞

' ∞ *

1 x

x L x a '≤ y m ∞? ≤

1m

2m nm ? ≤ n ?

当 m > n 时,要确定一组 a i , i = 0,1,L , n , 使之精确地满足 m 个方程,这是超定方 程组的问题,只能在最小平方误差的基础上确定αi 。

定义残差向量

δ = [δ ,δ ,L ,δ ]

T

, 则 δ =y - Aα

其中 y = [ y , y ,L , y ]T 代替输出向量。取性能指标

J = δT δ

使之最小,以此确定出 α 。由

J =δT δ = ( y - Aα)T ( y - Aα) =y T y - αT A y - y T Aα + αT A T Aα

利用向量和矩阵的运算公式,有

A T Aα=A T y

此即为正则方程组,当

A T A 非奇异时,可求得

α = (A T A )-1 A T y

3.流程图

输入x

i

, y

i

, z

i

i = 1,2,L , n

1 ?AT

1i

;

x

i

?AT

2 i

;

y

i

?AT

3 i

i = 1,2,..., n

1?k

k + 1 ?k n

∑a ki a ji

i =1

j = 1, 2 ,3

n

?X

kj

∑a ki z i

i =1

?

Y

输出参数

5 ?n

k ? = 3

=

4.输出结果

5.结果分析

曲线拟合的最小二乘法是反映所给数据点的总的趋势,并不是严格的通过每个数据点,这样就避免了大量数据插值时需要高次多项式,同时又去掉了数据所含的测量误差。

6.心得体会

整理思路越来越熟练了,所以执行各个步骤也相对简单了很多。另外对原理也加深了认识。

附录:

1.造倒数表

1>源程序:

#include"stdio.h"

#include"math.h"

#define N 30

void main()

{

int i;

float x[N],c;

FILE *fp1,*fp2;

fp1=fopen("input1.txt","r");

fp2=fopen("output1.txt","w");

fscanf(fp1,"%f",&c);

fscanf(fp1,"%f",&x[0]);//初值

fprintf(fp2," ****倒数表****\n");

for(i=0;i

{

x[i+1]=x[i]*x[i]*c/(2*c*x[i]-1);

fprintf(fp2,"k=%d\tx(%d)=%.5f\n",i,i,x[i]);

if(fabs(x[i+1]-x[i])<=0.0005)

break;

else

continue;

}

fprintf(fp2,"k=%d\tx(%d)=%.5f\n",i+1,i+1,x[i]);

fprintf(fp2,"\n 计算结果:\n1/%f=%.3f\n\n",c,x[i+1]); fclose(fp1);

fclose(fp2);

数值分析实验报告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 姓名:万轩 实验二插值法

数值分析上机作业

数值分析上机实验报告 选题:曲线拟合的最小二乘法 指导老师: 专业: 学号: 姓名:

课题八曲线拟合的最小二乘法 一、问题提出 从随机的数据中找出其规律性,给出其近似表达式的问题,在生产实践和科学实验中大量存在,通常利用数据的最小二乘法求得拟合曲线。 在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量y 与时间t 的拟合曲线。 二、要求 1、用最小二乘法进行曲线拟合; 2、近似解析表达式为()33221t a t a t a t ++=?; 3、打印出拟合函数()t ?,并打印出()j t ?与()j t y 的误差,12,,2,1 =j ; 4、另外选取一个近似表达式,尝试拟合效果的比较; 5、*绘制出曲线拟合图*。 三、目的和意义 1、掌握曲线拟合的最小二乘法; 2、最小二乘法亦可用于解超定线代数方程组; 3、探索拟合函数的选择与拟合精度间的关系。 四、计算公式 对于给定的测量数据(x i ,f i )(i=1,2,…,n ),设函数分布为 ∑==m j j j x a x y 0)()(? 特别的,取)(x j ?为多项式 j j x x =)(? (j=0, 1,…,m )

则根据最小二乘法原理,可以构造泛函 ∑∑==-=n i m j i j j i m x a f a a a H 1 10))((),,,(? 令 0=??k a H (k=0, 1,…,m ) 则可以得到法方程 ???? ??????? ?=????????????????????????),(),(),(),(),(),(),(),(),(),(),(),(1010101111000100m m m m m m m m f f f a a a ????????????????????? 求该解方程组,则可以得到解m a a a ,,,10 ,因此可得到数据的最小二乘解 ∑=≈m j j j x a x f 0)()(? 曲线拟合:实际工作中,变量间未必都有线性关系,如服药后血药浓度与时间的关系;疾病疗效与疗程长短的关系;毒物剂量与致死率的关系等常呈曲线关系。曲线拟合是指选择适当的曲线类型来拟合观测数据,并用拟合的曲线方程分析两变量间的关系。 五、结构程序设计 在程序结构方面主要是按照顺序结构进行设计,在进行曲线的拟合时,为了进行比较,在程序设计中,直接调用了最小二乘法的拟合函数polyfit ,并且依次调用了plot 、figure 、hold on 函数进行图象的绘制,最后调用了一个绝对值函数abs 用于计算拟合函数与原有数据的误差,进行拟合效果的比较。

计算方法上机实验报告

《计算方法》上机实验报告 班级:XXXXXX 小组成员:XXXXXXX XXXXXXX XXXXXXX XXXXXXX 任课教师:XXX 二〇一八年五月二十五日

前言 通过进行多次的上机实验,我们结合课本上的内容以及老师对我们的指导,能够较为熟练地掌握Newton 迭代法、Jacobi 迭代法、Gauss-Seidel 迭代法、Newton 插值法、Lagrange 插值法和Gauss 求积公式等六种算法的原理和使用方法,并参考课本例题进行了MATLAB 程序的编写。 以下为本次上机实验报告,按照实验内容共分为六部分。 实验一: 一、实验名称及题目: Newton 迭代法 例2.7(P38):应用Newton 迭代法求 在 附近的数值解 ,并使其满足 . 二、解题思路: 设'x 是0)(=x f 的根,选取0x 作为'x 初始近似值,过点())(,00x f x 做曲线)(x f y =的切线L ,L 的方程为))((')(000x x x f x f y -+=,求出L 与x 轴交点的横坐标) (') (0001x f x f x x - =,称1x 为'x 的一次近似值,过点))(,(11x f x 做曲线)(x f y =的切线,求该切线与x 轴的横坐标) (') (1112x f x f x x - =称2x 为'x

的二次近似值,重复以上过程,得'x 的近似值序列{}n x ,把 ) (') (1n n n n x f x f x x - =+称为'x 的1+n 次近似值,这种求解方法就是牛顿迭代法。 三、Matlab 程序代码: function newton_iteration(x0,tol) syms z %定义自变量 format long %定义精度 f=z*z*z-z-1; f1=diff(f);%求导 y=subs(f,z,x0); y1=subs(f1,z,x0);%向函数中代值 x1=x0-y/y1; k=1; while abs(x1-x0)>=tol x0=x1; y=subs(f,z,x0); y1=subs(f1,z,x0); x1=x0-y/y1;k=k+1; end x=double(x1) K 四、运行结果: 实验二:

数值计算实验报告

(此文档为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);

数值分析上机题目详解

第一章 一、题目 设∑ =-= N N j S 2 j 2 1 1,其精确值为)11 123(21+--N N 。 1) 编制按从大到小的顺序1 1 13112122 2-+??+-+-=N S N ,计算S N 的通用程序。 2) 编制按从小到大的顺序1 21 1)1(111222-+ ??+--+-= N N S N ,计算S N 的通用程序。 3) 按两种顺序分别计算64210,10,10S S S ,并指出有效位数。(编制程序时用单精度) 4) 通过本次上机题,你明白了什么? 二、通用程序 N=input('Please Input an N (N>1):'); AccurateValue=single((0-1/(N+1)-1/N+3/2)/2); Sn1=single(0); for a=2:N; Sn1=Sn1+1/(a^2-1); end Sn2=single(0); for a=2:N; Sn2=Sn2+1/((N-a+2)^2-1); end fprintf('The value of Sn (N=%d)\n',N); fprintf('Accurate Calculation %f\n',AccurateValue); fprintf('Caculate from large to small %f\n',Sn1); fprintf('Caculate from small to large %f\n',Sn2); disp('____________________________________________________')

三、结果 从结果可以看出有效位数是6位。 感想:可以得出,算法对误差的传播有一定的影响,在计算时选一种好的算法可以使结果更为精确。从以上的结果可以看到从大到小的顺序导致大数吃小数的现象,容易产生较大的误差,求和运算从小数到大数所得到的结果才比较准确。

《数值计算方法》上机实验报告

《数值计算方法》上机实验报告华北电力大学 实验名称数值il?算方法》上机实验课程名称数值计算方法专业班级:电力实08学生姓名:李超然学号:200801001008 成绩: 指导教师:郝育黔老师实验日期:2010年04月华北电力大学实验报告数值计算方法上机实验报吿一. 各算法的算法原理及计算机程序框图1、牛顿法求解非线性方程 *对于非线性方程,若已知根的一个近似值,将在处展开成一阶 xxfx ()0, fx ()xkk 泰勒公式 "f 0 / 2 八八,fxfxfxxxxx 0 0 0 0 0 kkkk2! 忽略高次项,有 ,fxfxfxxx 0 ()()(),,, kkk 右端是直线方程,用这个直线方程来近似非线性方程。将非线性方程的 **根代入,即fx ()0, X ,* fxfxxx 0 0 0 0, ,, kkk fx 0 fx 0 0,

解出 fX 0 *k XX,, k' fx 0 k 水将右端取为,则是比更接近于的近似值,即xxxxk, Ik, Ik fx ()k 八XX, Ikk* fx()k 这就是牛顿迭代公式。 ,2,计算机程序框图:,见, ,3,输入变量、输出变量说明: X输入变量:迭代初值,迭代精度,迭代最大次数,\0 输出变量:当前迭代次数,当前迭代值xkl ,4,具体算例及求解结果: 2/16 华北电力大学实验报吿 开始 读入 l>k /fx()0?,0 fx 0 Oxx,,01* fx ()0 XX,,,?10 kk, ,1,kN, ?xx, 10 输出迭代输出X输出奇异标志1失败标志

,3,输入变量、输出变量说明: 结束 例:导出计算的牛顿迭代公式,并il ?算。(课本P39例2-16) 115cc (0), 求解结果: 10. 750000 10.723837 10. 723805 10. 723805 2、列主元素消去法求解线性方程组,1,算法原理: 高斯消去法是利用现行方程组初等变换中的一种变换,即用一个不为零的数乘 -个 方程后加只另一个方程,使方程组变成同解的上三角方程组,然后再自下而上 对上三角 3/16 华北电力大学实验报告方程组求解。 列选主元是当高斯消元到第步时,从列的以下(包括)的各元素中选出绝 aakkkkkk 对值最大的,然后通过行交换将其交换到的位置上。交换系数矩阵中的 两行(包括常ekk 数项),只相当于两个方程的位置交换了,因此,列选主元不影响求解的结 ,2,计算机程序框图:,见下页, 输入变量:系数矩阵元素,常向量元素baiji 输出变量:解向量元素bbb,,12n

数值计算方法I上机实验考试题

数值计算方法I 上机实验考试题(两题任选一题) 1.小型火箭初始质量为900千克,其中包括600千克燃料。火箭竖直向上发射时燃料以15千克/秒的速率燃烧掉,由此产生30000牛顿的恒定推力.当燃料用尽时引擎关闭。设火箭上升的整个过程中,空气阻力与速度平方成正比,比例系数为0.4(千克/米).重力加速度取9.8米/秒2. A. 建立火箭升空过程的数学模型(微分方程); B. 求引擎关闭瞬间火箭的高度、速度、加速度,及火箭到达最高点的时间和高度. 2.小型火箭初始质量为1200千克,其中包括900千克燃料。火箭竖直向上发射时燃料以15千克/秒的速率燃烧掉,由此产生40000牛顿的恒定推力.当燃料用尽时引擎关闭。设火箭上升的整个过程中,空气阻力与速度平方成正比,比例系数记作k ,火箭升空过程的数学模型为 0)0(,0,01222==≤≤-+?? ? ??-==t dt dx x t t mg T dt dx k dt x d m 其中)(t x 为火箭在时刻t 的高度,m =1200-15t 为火箭在时刻t 的质量,T (=30000牛顿)为推力,g (=9.8米/秒2)为重力加速度, t 1 (=900/15=60秒)为引擎关闭时刻. 今测得一组数据如下(t ~时间(秒),x ~高度(米),v ~速度(米/秒)): 现有两种估计比例系数k 的方法: 1.用每一个数据(t,x,v )计算一个k 的估计值(共11个),再用它们来估计k 。 2.用这组数据拟合一个k . 请你分别用这两种方法给出k 的估计值,对方法进行评价,并且回答,能否认为空气阻力系数k=0.5(说明理由).

计算方法第二章方程求根上机报告

实验报告名称 班级:学号:姓名:成绩: 1实验目的 1)通过对二分法与牛顿迭代法作编程练习与上级运算,进一步体会二分法与牛顿迭代法的不同特点。 2)编写割线迭代法的程序,求非线性迭代法的解,并与牛顿迭代法。 2 实验内容 用牛顿法和割线法求下列方程的根 x^2-e^x=0; x*e^x-1=0; lgx+x-2=0; 3实验步骤 1)根据二分法和牛顿迭代法,割线法的算法编写相应的求根函数; 2)将题中所给参数带入二分法函数,确定大致区间; 3)用牛顿迭代法和割线法分别对方程进行求解; 3 程序设计 牛顿迭代法x0=1.0; N=100; k=0; eps=5e-6; delta=1e-6; while(1) x1=x0-fc1(x0)/fc2(x0); k=k+1; if k>N disp('Newmethod failed')

break end if(abs(x1-x0)=delta) c=x1; x1=cutnext(x0,x1); x0=c; %x0 x1μYí?μ?μ?x1 x2 è?è?±£′??úx0 x1 end k=k+1; if k>N disp('Cutline method failed') break; end if(abs(x1-x0)

数值分析上机实验报告

数值分析上机实验报告

《数值分析》上机实验报告 1.用Newton 法求方程 X 7-X 4+14=0 在(0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001)。 1.1 理论依据: 设函数在有限区间[a ,b]上二阶导数存在,且满足条件 {}α?上的惟一解在区间平方收敛于方程所生的迭代序列 迭代过程由则对任意初始近似值达到的一个中使是其中上不变号 在区间],[0)(3,2,1,0,) (') ()(],,[x |))(),((|,|,)(||)(|.4;0)(.3],[)(.20 )()(.110......b a x f x k x f x f x x x Newton b a b f a f mir b a c x f a b c f x f b a x f b f x f k k k k k k ==- ==∈≤-≠>+ 令 )9.1()9.1(0)8(4233642)(0)16(71127)(0)9.1(,0)1.0(,1428)(3 2 2 5 333647>?''<-=-=''<-=-='<>+-=f f x x x x x f x x x x x f f f x x x f 故以1.9为起点 ?? ?? ? ='- =+9.1)()(01x x f x f x x k k k k 如此一次一次的迭代,逼近x 的真实根。当前后两个的差<=ε时,就认为求出了近似的根。本程序用Newton 法求代数方程(最高次数不大于10)在(a,b )区间的根。

1.2 C语言程序原代码: #include #include main() {double x2,f,f1; double x1=1.9; //取初值为1.9 do {x2=x1; f=pow(x2,7)-28*pow(x2,4)+14; f1=7*pow(x2,6)-4*28*pow(x2,3); x1=x2-f/f1;} while(fabs(x1-x2)>=0.00001||x1<0.1); //限制循环次数printf("计算结果:x=%f\n",x1);} 1.3 运行结果: 1.4 MATLAB上机程序 function y=Newton(f,df,x0,eps,M) d=0; for k=1:M if feval(df,x0)==0 d=2;break else x1=x0-feval(f,x0)/feval(df,x0); end e=abs(x1-x0); x0=x1; if e<=eps&&abs(feval(f,x1))<=eps d=1;break end end

数值分析实验报告模板

数值分析实验报告模板 篇一:数值分析实验报告(一)(完整) 数值分析实验报告 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.实验目的 1.学习和掌握拉格朗日插值多项式。 2.运用拉格朗日插值多项式进行计算。 2.实验过程 作出插值点(1.00,0.00),(-1.00,-3.00),(2.00,4.00)二、算法步骤 已知:某些点的坐标以及点数。 输入:条件点数以及这些点的坐标。 输出:根据给定的点求出其对应的拉格朗日插值多项式的值。 3.程序流程: (1)输入已知点的个数; (2)分别输入已知点的X坐标; (3)分别输入已知点的Y坐标; 程序如下: #include #include #include float lagrange(float *x,float *y,float xx,int n) /*拉格朗日

插值算法*/ { int i,j; float *a,yy=0.0; /*a作为临时变量,记录拉格朗日插值多项*/ a=(float*)malloc(n*sizeof(float)); for(i=0;i<=n-1;i++) { a[i]=y[i]; for(j=0;j<=n-1;j++) if(j!=i) a[i]*=(xx-x[j])/(x[i]-x[j]); yy+=a[i]; } free(a); return yy; } int main() { int i; int n; float x[20],y[20],xx,yy; printf("Input n:");

scanf("%d",&n); if(n<=0) { printf("Error! The value of n must in (0,20)."); getch();return 1; } for(i=0;i<=n-1;i++) { printf("x[%d]:",i); scanf("%f",&x[i]); } printf("\n"); for(i=0;i<=n-1;i++) { printf("y[%d]:",i);scanf("%f",&y[i]); } printf("\n"); printf("Input xx:"); scanf("%f",&xx); yy=lagrange(x,y,xx,n); printf("x=%f,y=%f\n",xx,yy); getch(); } 举例如下:已知当x=1,-1,2时f(x)=0,-3,4,求f(1.5)的值。

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

实验报告一 题目:非线性方程求解 摘要:非线性方程的解析解通常很难给出,因此线性方程的数值解法就尤为重要。本实验采用两种常见的求解方法二分法和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);

计算方法上机实习题大作业(实验报告).

计算方法实验报告 班级: 学号: 姓名: 成绩: 1 舍入误差及稳定性 一、实验目的 (1)通过上机编程,复习巩固以前所学程序设计语言及上机操作指令; (2)通过上机计算,了解舍入误差所引起的数值不稳定性 二、实验内容 1、用两种不同的顺序计算10000 21n n -=∑,分析其误差的变化 2、已知连分数() 1 01223//(.../)n n a f b b a b a a b =+ +++,利用下面的算法计算f : 1 1 ,i n n i i i a d b d b d ++==+ (1,2,...,0 i n n =-- 0f d = 写一程序,读入011,,,...,,,...,,n n n b b b a a 计算并打印f 3、给出一个有效的算法和一个无效的算法计算积分 1 041 n n x y dx x =+? (0,1,...,1 n = 4、设2 2 11N N j S j == -∑ ,已知其精确值为1311221N N ?? -- ?+?? (1)编制按从大到小的顺序计算N S 的程序 (2)编制按从小到大的顺序计算N S 的程序 (3)按两种顺序分别计算10001000030000,,,S S S 并指出有效位数 三、实验步骤、程序设计、实验结果及分析 1、用两种不同的顺序计算10000 2 1n n -=∑,分析其误差的变化 (1)实验步骤: 分别从1~10000和从10000~1两种顺序进行计算,应包含的头文件有stdio.h 和math.h (2)程序设计: a.顺序计算

#include #include void main() { double sum=0; int n=1; while(1) { sum=sum+(1/pow(n,2)); if(n%1000==0)printf("sun[%d]=%-30f",n,sum); if(n>=10000)break; n++; } printf("sum[%d]=%f\n",n,sum); } b.逆序计算 #include #include void main() { double sum=0; int n=10000; while(1) { sum=sum+(1/pow(n,2)); if(n%1000==0) printf("sum[%d]=%-30f",n,sum); if(n<=1)break; n--; } printf("sum[%d]=%f\n",n,sum); } (3)实验结果及分析: 程序运行结果: a.顺序计算

数值分析实验报告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 的帮助。

数值计算实验报告

2012级6班###(学号)计算机数值方法 实验报告成绩册 姓名:安元龙 学号:2012060501 成绩:

数值计算方法与算法实验报告 学期: 2014 至___2015 第 1 学期 2014年 10月26日课程名称:__数值计算方法与算法 __ 专业:信息与计算科学 12级5班实验编号: 1实验项目Neton插值多项式指导教师__孙峪怀姓名:安元龙学号: 2012060501 实验成绩: 一、实验目的及要求 实验目的: 掌握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. #include #define MAX_N 20 typedef struct tagPOINT { double x; double y; }POINT; int main() { int n; int i,j; POINT points[MAX_N+1];double diff[MAX_N+1]; double x,tmp,newton=0;

数值计算方法上机实习题

数值计算方法上机实习题 1. 设?+=1 05dx x x I n n , (1) 由递推公式n I I n n 1 51+ -=-,从I 0=0.1824, 0=0.1823I 出发,计算20I ; (2) 20=0I ,20=10000I , 用n I I n n 51 5111+- =--,计算0I ; (3) 分析结果的可靠性及产生此现象的原因(重点分析原因)。 答:第一个算法可得出 e 0=|I 0?I 0 ?| e n =|I n ?I n ?|=5n |e 0| 易知第一个算法每一步计算都把误差放大了5倍,n 次计算后更是放大了5n 倍,可靠性低。 第二个算法可得出 e n =|I n ?I n ?| e 0=(15 )n |e n | 可以看出第二个算法每一步计算就把误差缩小5倍,n 次后缩小了5n 倍,可靠性高。

2. 求方程0210=-+x e x 的近似根,要求41105-+?<-k k x x ,并比较计算量。 (1) 在[0,1]上用二分法; 计算根与步数程序: fplot(@(x) exp(x)+10*x-2,[0,1]); grid on; syms x; f=exp(x)+10*x-2; [root,n]=EFF3(f,0,1); fprintf('root=%6.8f ,n=%d \n',root,n); 计算结果显示: root=0.09057617 ,n=11 (2) 取初值00=x ,并用迭代10 21 x k e x -=+;

(3) 加速迭代的结果; (4) 取初值00 x ,并用牛顿迭代法;

数值分析实验报告总结

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

如果 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 ,那 外,还规定其必须满足相容性: 所以

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

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;

计算方法实验报告册

实验一——插值方法 实验学时:4 实验类型:设计 实验要求:必修 一 实验目的 通过本次上机实习,能够进一步加深对各种插值算法的理解;学会使用用三种类型的插值函数的数学模型、基本算法,结合相应软件(如VC/VB/Delphi/Matlab/JAVA/Turbo C )编程实现数值方法的求解。并用该软件的绘图功能来显示插值函数,使其计算结果更加直观和形象化。 二 实验内容 通过程序求出插值函数的表达式是比较麻烦的,常用的方法是描出插值曲线上尽量密集的有限个采样点,并用这有限个采样点的连线,即折线,近似插值曲线。取点越密集,所得折线就越逼近理论上的插值曲线。本实验中将所取的点的横坐标存放于动态数组[]X n 中,通过插值方法计算得到的对应纵坐标存放 于动态数组[]Y n 中。 以Visual C++.Net 2005为例。 本实验将Lagrange 插值、Newton 插值和三次样条插值实现为一个C++类CInterpolation ,并在Button 单击事件中调用该类相应函数,得出插值结果并画出图像。CInterpolation 类为 class CInterpolation { public : CInterpolation();//构造函数 CInterpolation(float *x1, float *y1, int n1);//结点横坐标、纵坐标、下标上限 ~ CInterpolation();//析构函数 ………… ………… int n, N;//结点下标上限,采样点下标上限 float *x, *y, *X;//分别存放结点横坐标、结点纵坐标、采样点横坐标 float *p_H,*p_Alpha,*p_Beta,*p_a,*p_b,*p_c,*p_d,*p_m;//样条插值用到的公有指针,分别存放 i h ,i α,i β,i a ,i b ,i c ,i d 和i m }; 其中,有参数的构造函数为 CInterpolation(float *x1, float *y1, int n1) { //动态数组x1,y1中存放结点的横、纵坐标,n1是结点下标上限(即n1+1个结点) n=n1; N=x1[n]-x1[0]; X=new float [N+1]; x=new float [n+1]; y=new float [n+1];

数值分析上机题(matlab版)(东南大学)

数值分析上机题(matlab版)(东南大学)

数值分析上机报告

第一章 一、题目 精确值为)1 1 123(21+--N N 。 1) 编制按从大到小的顺序 1 1 131121222-+??+-+-= N S N ,计算S N 的通用程序。 2) 编制按从小到大的顺序 1 21 1)1(111222-+??+--+-= N N S N ,计算S N 的通用程序。 3) 按两种顺序分别计算6 42 10,10, 10S S S ,并指出有效位 数。(编制程序时用单精度) 4) 通过本次上机题,你明白了什么? 二、通用程序 clear N=input('Please Input an N (N>1):'); AccurateValue=single((0-1/(N+1)-1/N+3/2)/2); Sn1=single(0); for a=2:N; Sn1=Sn1+1/(a^2-1); end Sn2=single(0); for a=2:N; Sn2=Sn2+1/((N-a+2)^2-1); end fprintf('The value of Sn using different algorithms (N=%d)\n',N); disp('____________________________________________________') fprintf('Accurate Calculation %f\n',AccurateValue); fprintf('Caculate from large to small %f\n',Sn1); fprintf('Caculate from small to large %f\n',Sn2);

相关文档