东南大学数值分析上机作业word版保证正确文档格式.docx

上传人:b****7 文档编号:21876555 上传时间:2023-02-01 格式:DOCX 页数:18 大小:318.43KB
下载 相关 举报
东南大学数值分析上机作业word版保证正确文档格式.docx_第1页
第1页 / 共18页
东南大学数值分析上机作业word版保证正确文档格式.docx_第2页
第2页 / 共18页
东南大学数值分析上机作业word版保证正确文档格式.docx_第3页
第3页 / 共18页
东南大学数值分析上机作业word版保证正确文档格式.docx_第4页
第4页 / 共18页
东南大学数值分析上机作业word版保证正确文档格式.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

东南大学数值分析上机作业word版保证正确文档格式.docx

《东南大学数值分析上机作业word版保证正确文档格式.docx》由会员分享,可在线阅读,更多相关《东南大学数值分析上机作业word版保证正确文档格式.docx(18页珍藏版)》请在冰豆网上搜索。

东南大学数值分析上机作业word版保证正确文档格式.docx

disp('

'

fprintf('

ThevalueofSnusingdifferentalgorithms(N=%d)\n'

N);

====================================================='

AccurateCalculation%f\n'

AccurateValue);

CaculatefromlargetosmallSn1%f\n'

Sn1);

CaculatefromsmalltolargeSn2%f\n'

Sn2);

求解结果:

100

ThevalueofSnusingdifferentalgorithms(N=100)

=====================================================

AccurateCalculation0.740049

CaculatefromlargetosmallSn10.740049

CaculatefromsmalltolargeSn20.740050

10000

ThevalueofSnusingdifferentalgorithms(N=10000)

AccurateCalculation0.749900

CaculatefromlargetosmallSn10.749852

CaculatefromsmalltolargeSn20.749900

1000000

ThevalueofSnusingdifferentalgorithms(N=1000000)

AccurateCalculation0.749999

CaculatefromsmalltolargeSn20.749999

=====================================================

结果分析:

有效位数

n

顺序

102

104

106

从大到小

6

3

从小到大

5

从程序的输出误差结果可以看出,按照不同的顺序相加造成的误差限是不同的,按照从大到小相加的顺序就是一个病态问题,而按照从小到大顺序相加的误差很小,并且在从大到小顺序相加的误差随着n的增大而增大。

因此,采取从小到大的顺序累加得到的结果更加精确。

第二章

20.牛顿迭代法

(1)给定初值

及容许误差

,编制牛顿法解方程f(x)=0的通用程序。

(2)给定方程

易知其有三个根

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

时,Newton迭代序列收敛于根x2*。

试确定尽可能大的

②试取若干初始值,观察当

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

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

Matlab编写程序:

2.2编写相应的matlab程序

2.2.1定义f(x)函数

functionF=fu(x)

F=x^3/3-x;

End

2.2.2定义f(x)的导函数

functionF=dfu(x)

F=x*x-1;

2.2.3求根的通用程序

x0=input('

Pleaseinputaninitialvaluex0:

ep=input('

Pleaseinputanacceptederror:

flag=1;

whileflag==1

x1=x0-fu(x0)/dfu(x0);

ifabs(x1-x0)<

=ep

flag=0;

end

x0=x1;

Oneoftheapproximaterootsis:

%f\n'

x0);

2.2.4求sigma的通用程序

eps=input('

Pleaseinputthesearchingaccuracy:

Pleaseinputanacceptederror:

k=0;

x0=0;

whileflag==1;

sigma=k*eps;

x0=sigma;

k=k+1;

m=0;

flag1=1;

whileflag1==1&

&

m<

=10^3

ep

flag1=0;

m=m+1;

ifflag1==1||abs(x0)>

最大的sigma值为:

sigma);

2.3运行结果

2.3.1寻找最大的sigma值

主要是在0的基础上,不断的增加步长,带入Newton公式,验证该值是否收敛于0,不断的循环,最后得到最小的不收敛于0的sigma值,此时也为最大满足收敛于0的最大的sigma值。

改变不同的步长,分别得到不同的sigma值,取其中的最小值,即为满足条件的最大的sigma值。

程序相应的运行结果如下:

>

chapter2_2

10^-6

0.774597

10^-4

0.774600

10^-2

0.780000

2.3.2运行chapter2_1程序

(1)当初值x0属于

内时,程序运行结果如下,

chaper2_1

-10000

-1.732051

-100

-10

-1.1

可以得出不论取何值,Newton迭代式收敛,方程的近似解都收敛于

(2)当初值x0属于

,程序运行结果如下,

-0.9

1.732051

-0.85

-0.774598

可以得出不论取何值,在此区间上Newton迭代式不收敛。

(3)当初值x0属于

-0.76

0.000000

-0.5

-0.1

-0.01

-0.000000

0.01

0.1

0.5

0.76

可以得出在此区间内,不论取何值,Newton迭代式收敛,方程的近似解都收敛于0。

(4)当初值x0属于

内时,运行程序结果如下,

0.774598

0.8

0.9

0.95

(5)当初值x0属于区间

运行程序结果如下,

1.1

10

可以得出,不管x0取何值,Newton迭代式都收敛,且收敛于根

对于多根方程,迭代序列收敛于某一个特定区间,且在一个区间上,可能收敛于不同值。

第三章

39.列主元Gauss消去法

列主元Gauss消去法对于某电路的分析,归结为求解线性方程组

其中

(1)编制解n阶线性方程组

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

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

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

上机程序

通用高斯列主元消去法

n=input('

PleaseinputtheorderofmatrixA:

n='

%输入线性方程组阶数n

b=zeros(1,n);

A=input('

InputmatrixA(suchasa2ordermatrix:

[12;

3,4]):

b(1,:

)=input('

Inputthecolumnvectorb:

%输入行向量b

b=b'

;

C=[A,b];

%得到增广矩阵

%%列主元消去得上三角矩阵

fori=1:

n-1

[maximum,index]=max(abs(C(i:

n,i)));

%%执行此语句后,index为该列最大值的行数值

index=index+i-1;

T=C(index,:

C(index,:

)=C(i,:

C(i,:

)=T;

fork=i+1:

n%%列主元消去

ifC(k,i)~=0

C(k,:

)=C(k,:

)-C(k,i)/C(i,i)*C(i,:

%%回代求解%%

x=zeros(n,1);

x(n)=C(n,n+1)/C(n,n);

fori=n-1:

-1:

1

x(i)=(C(i,n+1)-C(i,i+1:

n)*x(i+1:

n,1))/C(i,i);

A=C(1:

n,1:

n);

Theupperteianguularmatrixis:

fork=1:

n

fprintf('

%f'

A(k,:

));

\n'

Solutionoftheequations:

%.5g\n'

x);

%以5位有效数字输出结果

运行程序结果如下所示:

n=9

[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]

[-1527-230-2012-7710]

方程的解为:

-0.28923

0.34544

-0.71281

-0.22061

-0.4304

0.15431

-0.057823

0.20105

0.29023

由上述结果得:

通过本题的编程计算,我更加了解了列主元高斯消去法的基本原理,也学会了MATLAB中的矩阵处理模块。

第四章

一、题目

(1)编制求第一型3次样条插值函数的通用程序;

(2)已知汽车曲线型值点的数据如下:

2

4

7

8

9

2.51

3.30

4.04

4.70

5.22

5.54

5.78

5.40

5.57

5.70

5.80

端点条件为

=0.8,

=0.2。

用所编制程序求车门的3次样条插值函数S(x),并打印出S(i+0.5)(i=0,1,…9)。

二、通用程序

x=[0;

1;

2;

3;

4;

5;

6;

7;

8;

9;

10];

y=[2.51;

3.3;

4.04;

4.7;

5.22;

5.54;

5.78;

5.4;

5.57;

5.7;

5.8];

dy=[0.8;

0.2];

h=zeros(8,1);

u=zeros(9,1);

nameda=zeros(9,1);

d=zeros(11,1);

mm=zeros(11,1);

m=zeros(11,11);

h(i)=x(i+1)-x(i);

u(i)=h(i)/(h(i)+h(i+1));

nameda(i)=1-u(i);

d

(1)=6*((y

(2)-y

(1))/h

(1)-dy

(1))/h

(1);

d(11)=6*(-(y(11)-y(10))/h(10)+dy

(2))/h(10);

fori=2:

d(i)=6*((y(i+1)-y(i))/h(i)-(y(i)-y(i-1))/h(i-1))/(x(i+1)-x(i-1));

m(i,i-1)=u(i-1);

m(i,i)=2;

m(i,i+1)=nameda(i-1);

m(1,1)=2;

m(1,2)=1;

m(11,10)=1;

m(11,11)=2;

mm=inv(m)*d;

fx=zeros(1,10);

forj=1:

t=input('

请输入0到10之间的一个整数:

t=t+0.5;

i=fix(t);

fx(j)=y(i+1)+((y(i+2)-y(i+1))/h(i+1)-h(i+1)*(1/3*mm(i+1)+1/6*mm(i+2)))*(t-x(i+1))+0.5*mm(i+1)*(t-x(i+1))^2+1/(6*h(i+1))*(mm(i+2)-mm(i+1))*(t-x(i+1))^3;

disp(fx);

sx=zeros(901,1);

forj=0:

0.01:

i=fix(j);

sx(k)=y(i+1)+((y(i+2)-y(i+1))/h(i+1)-h(i+1)*(1/3*mm(i+1)+1/6*mm(i+2)))*(j-x(i+1))+0.5*mm(i+1)*(j-x(i+1))^2+1/(6*h(i+1))*(mm(i+2)-mm(i+1))*(j-x(i+1))^3;

三、求解结果

函数的输出结果如下截图:

其分别对应着i从0取到9。

从以上的两个曲线可以看出,拟合曲线与y-x的曲线基本一致,三次样条函数较好的拟合原函数,通过本次的编程,加强了我对三次样条插值的理解。

第六章

1、RK4方法的通用程序

2、AB4方法的通用程序

3、A

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

当前位置:首页 > 自然科学 > 生物学

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

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