数值分析Word文档下载推荐.docx

上传人:b****6 文档编号:21062535 上传时间:2023-01-27 格式:DOCX 页数:16 大小:254.72KB
下载 相关 举报
数值分析Word文档下载推荐.docx_第1页
第1页 / 共16页
数值分析Word文档下载推荐.docx_第2页
第2页 / 共16页
数值分析Word文档下载推荐.docx_第3页
第3页 / 共16页
数值分析Word文档下载推荐.docx_第4页
第4页 / 共16页
数值分析Word文档下载推荐.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

数值分析Word文档下载推荐.docx

《数值分析Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数值分析Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。

数值分析Word文档下载推荐.docx

其公式求和结果的精确值:

sum);

%误差比较

\n从大到小顺序求和的误差:

abs(sum1-sum));

从小到大的顺序求和的误差:

abs(sum2-sum));

求解结果

100

0.74004948

0.74004954

从大到小顺序求和的误差:

0.00000000

0.00000006

10000

0.74985212

0.74989998

0.00004786

1000000

0.74999905

0.00014693

结果分析

表1.1不同算法有效位数

N

算法顺序

从大到小

8

4

3

从小到大

6

可以看出,若干同号数相加,不同算法得到的结果误差不同。

在从以上的结果可以看到,从大到小的顺序会导致出现大数吃小数的现象,在N增大时,容易产生较大的误差,而求和运算从小数到大数顺序相加所得到的结果才比较准确。

但可以看到N=100时,结果与上述结论有所不同,从大到小顺序相加算法得到的结果与精确值更为接近。

由此提出疑问,是否存在某些N的值,从大到小顺序加法得到的结果更精确,于是分别取不同的N值,将结果误差作比较。

取N=1:

150,分别表示出,从大到小顺序(红色方框虚线),从小到大顺序(蓝色圆圈)结果误差离散数据,如下图1-1。

图1-1求和结果误差分析

可以看出误差较大,即Y轴数值较大的点基本为红色方框,即为从大到小顺序相加得到的结果误差,少数从小到大顺序的结果误差偏高,因此此结果支持原先结论,求和运算从小数到大数顺序相加所得到的结果才比较准确。

猜想:

可能是运算过程中数据的随机舍入误差,导致某些N值的从小到大顺序的求和结果误差偏高。

第二章

20.(上机题)Newton迭代法

(1)给定初值

及容许误差

,编制牛顿法解方程

的通用程序。

(2)给定方程

,易知其有三个根

a)由牛顿方法的局部收敛性可知存在

时,Newton迭代序列收敛于根

,试确定尽可能大的

b)试取若干初始值,观察当

时Newton序列的收敛性以及收敛于哪一个根。

(3)通过本上机题,你明白了什么?

clc;

\n\n上机题第20题Newton迭代法\n\n'

\n

(1)Newton法求解方程f(x)=0根的通用程序\n\n'

symsx;

请输入f(x)的表达式:

例如:

exp(x)-3*x.^2+1\n\n'

fx=input('

f(x)='

x0=input('

请给定初值x0='

xs=x0;

e=input('

请给定容许误差e='

f=x-fx./diff(fx);

x1=subs(f,x0);

whileabs(x1-x0)>

e

x0=x1;

x1=subs(f,x0);

end

f(x)=0在x0=%.1f附近的单根x*=%f\n\n'

xs,x1);

\n\n

(2)给定方程f(x)=x.^3-x=0,求Newton迭代序列收敛于根x*=0时,最大的收敛半径δ'

fx=x.^3/3-x;

e=1e-3;

k=0;

x1=0;

whileabs(x1)<

k=k+0.001;

x0=k;

\n\nNewton迭代序列收敛于根x*=0时,最大的收敛半径(开区间)δ=%.5f'

k)

(1)由于计算机处理速度及工作量等原因,求解最大收敛半径时,选定的搜索步长为0.001,由此得到的结果为:

Newton迭代序列收敛于根x*=0时,最大的收敛半径(开区间)δ=0.77500。

当搜索步长进一步减小时,可以获得更加精确的δ值。

(2)在

,这五个区间上分别取得不同的

,在此因篇幅原因,不详细列出过程,仅阐明结果。

(-∞,-1)区间收敛于-1.73205,(-1,δ)区间部分收敛于1.73205,部分收敛于-1.73205,(-δ,δ)区间收敛于0,(δ,1)区间类似于(-1,δ)区间,(1,∞)收敛于1.73205。

由此可知,Newton法求方程根时,一次只能求解一个初值附近的根,且迭代序列收敛于某一个根有一定的区间限制,同时可能出现在一个区间上局部收敛于不同的根的情况。

第三章

39.(上机题)列主元Gauss消去法

对于某电路的分析,归结为求解线性方程组

其中

(1)编制解

阶线性方程组

的列主元Gauss消去法的通用程序;

(2)用所编程序解线性方程组

,并打印出解向量,保留5位有效数;

(3)本题编程之中,你提高了哪些编程能力?

clear

\n\n上机题第39题列主元Gauss消去法\n\n'

\n

(1)编制n阶线性方程组Ax=b的列主元Gauss消去法通用程序\n\n'

请输入系数矩阵A:

例:

A=[123;

012;

241]'

A=input('

A='

请输入系数矩阵b:

b=[14;

8;

13]'

b=input('

b='

B=[Ab];

n=length(b);

RA=rank(A);

RB=rank(B);

flag=RB-RA;

ifflag>

fprintf('

\n\t\t此方程组无解.\n'

ifflag==0

ifRA==n

\n\n此方程组有唯一解.\n'

n);

X=zeros(n,1);

%列主元判断

forp=1:

n-1

t=find(abs(B(p:

end,p))==max(abs(B(p:

end,p))))+p-1;

ifabs(B(t,p))~=abs(B(p,p))

l=B(t,:

B(t,:

)=B(p,:

B(p,:

)=l;

end

fork=p+1:

n

m=B(k,p)/B(p,p);

B(k,p:

n+1)=B(k,p:

n+1)-m*B(p,p:

n+1);

%从xn至x1逐个求解上三角方程组

b=B(1:

n,n+1);

A=B(1:

n,1:

n);

X(n)=b(n)/A(n,n);

forq=n-1:

1

X(q)=(b(q)-sum(A(q,q+1:

n)*X(q+1:

n)))/A(q,q);

else

\n\t\t此方程组有无穷多解.'

方程组的解向量X='

formatshortg

X

241]

A=[31-13000-10000;

-1335-90-110000;

0-931-1000000;

00-1079-30000-9;

000-3057-70-50;

0000-747-3000;

00000-304100;

0000-50027-2;

000-9000-229]

13]

b=[-15;

27;

-23;

0;

-20;

12;

-7;

7;

10]

此方程组有唯一解.

方程组的解向量X=

X=

-0.28923

0.34544

-0.71281

-0.22061

-0.43040

0.15431

-0.057823

0.20105

0.29023

40.(上机题)逐次超松弛迭代法

(1)编制解

的SOR方法的通用程序(要求

);

(2)对于第39题中所给的线性方程组,取松弛因子

,容许误差

,打印松弛因子、迭代次数、最佳松弛因子及解向量。

\n\n上机题第40题逐次超松弛迭代法\n\n'

\n

(1)编制n阶线性方程组Ax=b的SOR方法通用程序\n\n'

A=[8-11;

210-1;

11-5]'

b=[1;

4;

3]'

请输入初始向量x0:

x0=[0;

0]'

x0='

w=input('

请输入松弛因子(w>

0)w='

请输入容许误差e='

n=length(A);

%将矩阵A划分为三个部分

D=zeros(n);

U=zeros(n);

L=zeros(n);

fori=1:

n

D(i,i)=A(i,i);

%对角线元素矩阵D

forj=1:

i-1

L(i,j)=A(i,j);

%下三角元素矩阵L

fork=i+1:

U(i,k)=A(i,k);

%上三角元素矩阵U

Sw=inv(D+w*L)*((1-w)*D-w*U);

fw=w*inv(D+w*L)*b;

x1=Sw*x0+fw;

whileabs(x1-x0)>

x1=Sw*x0+fw;

方程组的解向量为:

x1

\n\n

(2)求解线性方程组RI=V,取松弛因子w=i/50(i=1,2,…,99),容许误差e=0.5e-5\n\n'

R=[31-13000-10000;

-1335-90-110000;

...

V=[-15;

e=0.5e-5;

n=length(R);

D(i,i)=R(i,i);

L(i,j)=R(i,j);

U(i,k)=R(i,k);

m=zeros(99,2);

p=zeros(9,99);

r=zeros(1,99);

q=0;

\n松弛因子迭代次数\n'

forw=0.02:

0.02:

1.98

x1=x0;

Sw=inv(D+w*L)*((1-w)*D-w*U);

fw=w*inv(D+w*L)*V;

x2=Sw*x1+fw;

c=1;

q=q+1;

whilemax(abs(x2-x1))>

x1=x2;

c=c+1;

m(q,1)=w;

m(q,2)=c;

%f\t\t\t%f\n'

m(q,1),m(q,2));

r(q)=max(abs(V-R*x2));

%余量的一致范数

p(:

q)=x2;

[x,y]=find(m(:

2)==min(m(:

2)));

%寻找迭代次数最少的松弛因子

[xx,yy]=find(r==min(r(x(:

))));

%在上述松弛因子中找到使余量最小的松弛因子

\n最佳松弛因子为:

%f\t\t\t其迭代次数为:

%f\n'

m(x(xx),1),m(x(xx),2));

其对应的解向量为x='

forl=1:

9

\t\t\t\t\t%f\n'

p(l,x(xx)));

\n该解向量对应的r=V-R*x的一致范数为%f'

r(x(xx)))

表3.1松弛因子与迭代次数

松弛因子

迭代次数

0.02

855

0.68

30

1.34

14

0.04

477

0.70

29

1.36

15

0.06

336

0.72

27

1.38

16

0.08

261

0.74

26

1.40

0.10

214

0.76

25

1.42

17

0.12

182

0.78

24

1.44

0.14

158

0.80

1.46

19

0.16

140

0.82

23

1.48

20

0.18

125

0.84

22

1.50

0.20

113

0.86

21

1.52

0.22

103

0.88

1.54

0.24

95

0.90

1.56

0.26

88

0.92

1.58

0.28

82

0.94

18

1.60

28

0.30

76

0.96

1.62

31

0.32

71

0.98

1.64

34

0.34

67

1.00

1.66

36

0.36

63

1.02

1.68

39

0.38

59

1.04

1.70

44

0.40

56

1.06

1.72

50

0.42

53

1.08

13

1.74

55

0.44

51

1.10

1.76

0.46

48

1.12

12

1.78

0.48

46

1.14

11

1.80

89

0.50

1.16

1.82

110

0.52

42

1.18

10

1.84

144

0.54

40

1.20

1.86

207

0.56

38

1.22

1.88

361

0.58

37

1.24

1.90

1412

0.60

35

1.26

1.92

45283

0.62

1.28

1.94

18170

0.64

32

1.30

1.96

11452

0.66

1.32

1.98

8404

为了求得最佳松弛因子,本人的思路为:

首先寻找出使迭代次数最少的松弛因子,然后寻找其中使得余量的一致范数最小的松弛因子,确定为最佳松弛因子。

该方法选择的最佳松弛因子,既能使运算量大大减小,同时能够保证一定精度。

最佳松弛因子为:

1.180000其迭代次数为:

10.000000

其对应的解向量为x=

-0.289234

0.345436

-0.712812

-0.220608

-0.430400

0.154309

-0.057823

0.201054

0.290229

该解向量对应的r=V-R*x的一致范数为0.000014

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1