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

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

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

序言

数值分析是计算数学的一个主要部分,它不仅要研究各种数学问题的数值解法,同时也要分析所用的数值解法在理论上的合理性,如解法所产生的误差能否满足精度要求:解法是否稳定、是否收敛及熟练的速度等。

由于求解的迭代过程很复杂,计算量很大,所以需要借助其他辅助手段来求解。本文中采用了软件C++来编写求解程序,C++语言简洁紧凑,使用方便灵活,其程序书写形式自由,压缩了一切不必要的编程工作并且控制语句非常丰富(如for循环,while循环,break语句和if语句),对编写程序提供了很大的便利。

在本文中使用C++编写了牛顿法、牛顿-Steffensen法方程求解的程序和雅格比法、高斯-赛德尔迭代法求解方程组的程序及Ru n ge-Kutt a4阶算法,并通过实例求解验证了其可行性,比较了求解同一种问题时不同方法之间的优缺性,其中包含解的精确度和解的收敛速度两个重要指标。

选用该软件编写主要原因是大学时期学习了C++程序设计,因此对于改软件相对而言要熟悉些。

目录

第一章牛顿法和牛顿-Steffensen法迭代求解的比较 (2)

1.1计算结果 (2)

1.2结果分析 (2)

第二章 Jacobi和Causs-Seidel迭代法比较 (2)

2.1计算结果 (3)

2.2结果分析 (3)

第三章观察Ru n ge-Kutt a 4阶算法稳定区间的作用 (4)

3.1计算结果 (4)

3.2结果分析 (4)

总结 (5)

附录 (6)

第一章 牛顿法和牛顿-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.1计算结果

(1)方程可变形为x +1sin =x

从结果对比我们可发现牛顿—Steffensen 加速法比牛顿法要收敛的快,牛顿法对于初值的选取特别重要,比如第(1)问中的初值为4的情况,迭代次数算了40次,远大于其余初值的情况;在第(2)问中的初值为1.6的情况,收敛解

得31.4159,分析其原因应该是x x f cos )('=,x0=1.62

π

≈,0)('≈x f ;在牛顿—

Steffensen 加速法第(1)问中x=1.5、第二问x=0和3的情况,无收敛解。

第二章 Jacobi 和Causs-Seidel 迭代法比较

用雅格比法与高斯-赛德尔迭代法解下列方程组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,

(3)A行分别为A1=[1,3],A2=[-7,1];b=[4,6]T,

2.1计算结果

(1)x0= [0,0, 0]T为初始值,N为迭代次数,0.00001为误差精度,X为收敛

(1)第一小题的雅可比迭代矩阵为

0 -0.3333 0.1667

-0.2500 0 0.5000

0.7500 -0.2500 0

其特征值分别为-0.5427 ,0.2713 + 0.3708i,0.2713 - 0.3708i,经计算谱半ρ小于1,故方程组雅可比迭代收敛。而高斯-赛德尔迭代矩阵径为5427

)

B

.0

(=

0 -0.3333 0.1667

0 0.0833 0.4583

0 -0.2708 0.0104

其特征值为0,0.0469 + 0.3504i,0.0469 - 0.3504i经计算谱半径为ρ0.3535小于1,故原方程组高斯-赛德尔迭代矩阵收敛。

(B

)

=

第二小题的雅可比迭代矩阵为

0 -0.8000 -0.8000

-0.8000 0 -0.8000 -0.8000 -0.8000 0

征值分别为-1.6,0.8,0.8,经计算谱半径为=)(B ρ 1.6大于1,故方程组雅可比迭代发散。 而高斯-赛德尔迭代矩阵为 0 -0.8000 -0.8000 0 0.6400 -0.1600 0 0.1280 0.7680

其特征值为0,0.7040 + 0.1280i ,0.704280i 经计算谱半径为=)(B ρ0.7155小于1,故原方程组高斯-赛德尔迭代矩阵收敛。 第三小题的雅可比迭代矩阵为 0 -3 7 0

其特征值分别为4.5826i ,-4.5826i ,谱半径为=)(B ρ 4.5826大于1,故方程组雅可比迭代发散。 而高斯-赛德尔迭代矩阵为

0 -3 0 -21

其特征值为0,-21,谱半径为=)(B ρ21大于1,故原方程组高斯-赛德尔迭代矩阵发散。

(2)从2.1中的结果列表中可以看到,Causs-Seidel 迭代法比Jacobi 迭代法收敛速度要快,并且方程组右端项对迭代收敛是无影响的。

第三章 观察Ru n ge-Kutt a 4阶算法稳定区间的作用

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

20-=λ,h=0.2时,λh=-4,而Ru n ge-Kutt a 4阶算法的绝对稳定区间是[-2.78,0],故h=0.2时计算不稳定;而h=0.1时,λh=-2,在绝对稳定区间内,计算稳定,结果可靠。

总结

通过这次上机练习,让我对数值分析所介绍的迭代求解方法及其理论有了更深层次的理解,了解了各种方法之间的优缺点,并且认识到了自己在以前的学习中所存在的问题,及时的修补了自己知识上的漏洞。同时也提高了我在编写程序上的熟练程度,所以,我认为这次上机实习是非常有收获的,给予我学习数值分析的帮助也是非常大的。

附录

1.1第(1)问牛顿法

#include

#include

using namespace std ;

int main( )

{

double x,x0;

int i=0;

cout<<"请输入初值:";

cin>>x0;

do

{

x=x0;

x0=x0-(x0+sin(x0)-1)/(1+cos(x0));

i++;

}while(fabs(x-x0)>=0.000001);

cout<<"x="<

cout<<"N="<

return 0;

}

1.2第(1)问牛顿—Steffensen加速法

#include

#include

using namespace std ;

int main( )

{

double x,x0,x1,x2;

int i=0;

cout<<"请输入初值:";

cin>>x0;

do

{

x=x0;

x1= x0-(sin(x0)+x0-1)/(cos(x0)+1);

x2= x1-(sin(x1)+x1-1)/(cos(x1)+1);

x0=x0-(x1-x0)*(x1-x0)/(x2-2*x1+x0);

i++;

}while(fabs(x-x0)>=0.000001);

cout<<"x="<

cout<<"N="<

return 0;

}

1.3第(2)问牛顿法

#include

#include

using namespace std ;

int main( )

{

double x,x0;

int i=0;

cout<<"请输入初值:";

cin>>x0;

do

{

x=x0;

x0=x0-sin(x0)/ cos(x0);

i++;

}while(fabs(x-x0)>=0.000001);

cout<<"x="<

cout<<"N="<

return 0;

}

1.4第(2)问牛顿—Steffensen加速法

#include

#include

using namespace std ;

int main( )

{

double x,x0,x1,x2;

int i=0;

cout<<"请输入初值:";

cin>>x0;

do

{

x=x0;

x1= x0-sin(x0)/ cos(x0);

x2= x1-sin(x1)/ cos(x1);

x0=x0-(x1-x0)*(x1-x0)/(x2-2*x1+x0);

i++;

}while(fabs(x-x0)>=0.000001);

cout<<"x="<

cout<<"N="<

return 0;

}

2.1雅格比法

#include

#include

using namespace std ;

int main( )

{

double a[10][10],b[10],sum=0.0,x[10],y[10],c,s=0.0;

int i,k=0,n,j;

cout<<"请输入维数:";

cin>>n;

cout<<"请输入数组A:";

for(i=0;i

for(j=0;j

cin>>a[i][j];

cout<<"请输入数组B:";

for(i=0;i

cin>>b[i];

cout<<"请输入初始X:";

for(i=0;i

cin>>x[i];

do

{for(i=0;i

{for(j=0;j

sum=sum+a[i][j]*x[j];

for(j=i+1;j

sum=sum+a[i][j]*x[j];

y[i]=(b[i]-sum)/a[i][i];

sum=0;

}

c=0;

for(i=0;i

if(c

c=fabs(x[i]-y[i]);

if(c>0.00001)

c=0;

else s=1;

for(i=0;i

x[i]=y[i];

k++;

}while(s!=1);

for(i=0;i

cout<<"解为:"<

cout<<"N="<

return 0;

}

2.2高斯-赛德尔迭代法

#include

#include

using namespace std ;

int main( )

{

double a[10][10],b[10],sum=0.0,x[10],y[10],c,s=0.0,z[10];

int i,k=0,n,j;

cout<<"请输入维数:";

cin>>n;

cout<<"请输入数组A:";

for(i=0;i

for(j=0;j

cin>>a[i][j];

cout<<"请输入数组B:";

for(i=0;i

cin>>b[i];

cout<<"请输入初始X:";

for(i=0;i

cin>>x[i];

do

{for(i=1;i

z[i]=x[i];

for(i=0;i

{for(j=0;j

sum=sum+a[i][j]*x[j];

for(j=i+1;j

sum=sum+a[i][j]*x[j];

y[i]=(b[i]-sum)/a[i][i];

sum=0;

x[i]=y[i];

}

c=0;

for(i=0;i

if(c

c=fabs(z[i]-y[i]);

if(c>0.00001)

c=0;

else s=1;

for(i=0;i

z[i]=y[i];

k++;

}while(s!=1);

for(i=0;i

cout<<"解为:"<

cout<<"N="<

return 0;

}

3

#include

#include

using namespace std ;

int main( )

{

double x,y0=1,k1,k2,k3,k4,y,h,y1;

int i;

cout<<"请输入x值:";

cin>>x;

cout<<"请输入步长:";

cin>>h;

y1=exp((-20)*x);

for(i=0;i<(x/h);i++)

{

y=y0;

k1=h*(-1)*20*y;

k2=h*(-1)*20*(y+k1/2);

k3=h*(-1)*20*(y+k2/2);

k4=h*(-1)*20*(y+k3);

y0=y0+(k1+2*k2+2*k3+k4)/6;

}

cout<<"y="<

cout<<"y(x)="<

cout<<"误差="<

}

东南大学数值分析上机题答案

数值分析上机题 第一章 17.(上机题)舍入误差与有效数 设∑=-= N j N j S 2 2 11 ,其精确值为)111-23(21+-N N 。 (1)编制按从大到小的顺序1 -1 ···1-311-21222N S N +++=,计算N S 的通用 程序; (2)编制按从小到大的顺序1 21 ···1)1(111 222-++--+ -=N N S N ,计算N S 的通用程序; (3)按两种顺序分别计算210S ,410S ,610S ,并指出有效位数(编制程序时用单精度); (4)通过本上机题,你明白了什么? 解: 程序: (1)从大到小的顺序计算1 -1 ···1-311-21222N S N +++= : function sn1=fromlarge(n) %从大到小计算sn1 format long ; sn1=single(0); for m=2:1:n sn1=sn1+1/(m^2-1); end end (2)从小到大计算1 21 ···1)1(111 2 22 -++--+-= N N S N function sn2=fromsmall(n) %从小到大计算sn2 format long ; sn2=single(0); for m=n:-1:2 sn2=sn2+1/(m^2-1); end end (3) 总的编程程序为: function p203()

clear all format long; n=input('please enter a number as the n:') sn=1/2*(3/2-1/n-1/(n+1));%精确值为sn fprintf('精确值为%f\n',sn); sn1=fromlarge(n); fprintf('从大到小计算的值为%f\n',sn1); sn2=fromsmall(n); fprintf('从小到大计算的值为%f\n',sn2); function sn1=fromlarge(n) %从大到小计算sn1 format long; sn1=single(0); for m=2:1:n sn1=sn1+1/(m^2-1); end end function sn2=fromsmall(n) %从小到大计算sn2 format long; sn2=single(0); for m=n:-1:2 sn2=sn2+1/(m^2-1); end end end 运行结果:

西南交大 数值分析题库

考试目标及考试大纲 本题库的编纂目的旨在给出多套试题,每套试题的考查范围及难度配置均基于“水平测试”原则,按照教学大纲和教学内容的要求,通过对每套试题的解答,可以客观公正的评定出学生对本课程理论体系和应用方法等主要内容的掌握水平。通过它可以有效鉴别和分离不同层次的学习水平,从而可以对学生的学习成绩给出客观的综合评定结果。 本题库力求作到能够较为全面的覆盖教学内容,同时突显对重点概念、重点内容和重要方法的考查。考试内容包括以下部分: 绪论与误差:绝对误差与相对误差、有效数字、误差传播分析的全微分法、相对误差估计的条件数方法、数值运算的若干原则、数值稳定的算法、常用数值稳定技术。 非线性方程求解:方程的近似解之二分法、迭代法全局收敛性和局部收敛定理、迭代法误差的事前估计法和事后估计法、迭代过程的收敛速度、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公式的节点和系数。本段加黑斜体内容理论推导可以淡化,但概念需要理解。 常微分方程数值解:常微分方程初值问题数值解法之欧拉及其改进法、龙格—库塔法、阿当姆斯方法。

东南大学数值分析上机作业汇总

东南大学数值分析上机作业 汇总 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

数值分析上机报告 院系: 学号: 姓名:

目录 作业1、舍入误差与有效数 (1) 1、函数文件cxdd.m (1) 2、函数文件cddx.m (1) 3、两种方法有效位数对比 (1) 4、心得 (2) 作业2、Newton迭代法 (2) 1、通用程序函数文件 (3) 2、局部收敛性 (4) (1)最大δ值文件 (4) (2)验证局部收敛性 (4) 3、心得 (6) 作业3、列主元素Gauss消去法 (7) 1、列主元Gauss消去法的通用程序 (7) 2、解题中线性方程组 (7) 3、心得 (9) 作业4、三次样条插值函数 (10) 1、第一型三次样条插值函数通用程序: (10) 2、数据输入及计算结果 (12)

作业1、舍入误差与有效数 设∑ =-=N j N j S 2 2 11 ,其精确值为?? ? ??---1112321N N . (1)编制按从小到大的顺序1 1 131121222-? ??+-+-=N S N ,计算N S 的通用程序; (2)编制按从大到小的顺序()1 21 11111222-???+--+-=N N S N ,计算N S 的通用程序; (3)按两种顺序分别计算642101010,,S S S ,并指出有效位数; (4)通过本上机你明白了什么? 程序: 1、函数文件cxdd.m function S=cxdd(N) S=0; i=2.0; while (i<=N) S=S+1.0/(i*i-1); i=i+1; end script 运行结果(省略>>): S=cxdd(80) S= 0.737577 2、函数文件cddx.m function S=cddx (N) S=0; for i=N:-1:2 S=S+1/(i*i-1); end script 运行结果(省略>>): S=cddx(80) S= 0.737577 3、两种方法有效位数对比

东南大学 数值分析 考试要求

第一章绪论 误差的基本概念:了解误差的来源,理解绝对误差、相对误差和有效数的概念,熟练掌握数据误差对函数值影响的估计式。 机器数系:了解数的浮点表示法和机器数系的运算规则。 数值稳定性:理解算法数值稳定性的概念,掌握分析简单算例数值稳定性的方法,了解病态问题的定义,学习使用秦九韶算法。 第二章非线性方程解法 简单迭代法:熟练掌握迭代格式、几何表示以及收敛定理的内容,理解迭代格式收敛的定义、局部收敛的定义和局部收敛定理的内容。 牛顿迭代法:熟练掌握Newton迭代格式及其应用,掌握局部收敛性的证明和大范围收敛定理的内容,了解Newton法的变形和重根的处理方法。 第三章线性方程组数值解法 (1)Guass消去法:会应用高斯消去法和列主元Guass消去法求解线性方程组,掌握求解三对角方程组的追赶法。 (2)方程组的性态及条件数:理解向量范数和矩阵范数的定义、性质,会计算三种常用范数,掌握谱半径与2- 范数的关系,会计算条件数,掌握实用误差分析法。 (3)迭代法:熟练掌握Jacobi迭代法、Guass-Seidel迭代法及SOR方法,能够判断迭代格式的收敛性。 (4)幂法:掌握求矩阵按模最大和按模最小特征值的幂法。 第四章插值与逼近 (1)Lagrange插值:熟练掌握插值条件、Lagrange插值多项式的表达形式和插值余项。(2)Newton插值:理解差商的定义、性质,会应用差商表计算差商,熟练掌握Newton插值多项式的表达形式,了解Newton型插值余项的表达式。 (3)Hermite插值:掌握Newton型Hermite插值多项式的求法。 (4)高次插值的缺点和分段低次插值:了解高次插值的缺点和Runge现象,掌握分段线性插值的表达形式及误差分析过程。 (5)三次样条插值:理解三次样条插值的求解思路,会计算第一、二类边界条件下的三次样条插值函数,了解收敛定理的内容。 (6)最佳一致逼近:掌握赋范线性空间的定义和连续函数的范数,理解最佳一致逼近多项式的概念和特征定理,掌握最佳一致逼近多项式的求法。 (7)最佳平方逼近:理解内积空间的概念,掌握求离散数据的最佳平方逼近的方法,会求超定方程组的最小二乘解,掌握连续函数的最佳平方逼近的求法。

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

一. 填空 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 设2 21 1N N j S j ==-∑ ,其精确值为1311221N N ??-- ?+?? 。 (1)编制按从大到小的顺序222 111 21311 N S N = +++---,计算N S 的通用程序。 (2)编制按从小到大的顺序22 21111(1)121 N S N N =+++----,计算N S 的通用程序。 (3)按两种顺序分别计算210S ,410S ,610S ,并指出有效位数。(编制程序时用单精度) (4)通过本上机题,你明白了什么? 程序代码(matlab 编程): clc clear a=single(1./([2:10^7].^2-1)); S1(1)=single(0); S1(2)=1/(2^2-1); for N=3:10^2 S1(N)=a(1); for i=2:N-1 S1(N)=S1(N)+a(i); end end S2(1)=single(0); S2(2)=1/(2^2-1); for N=3:10^2 S2(N)=a(N-1); for i=linspace(N-2,1,N-2) S2(N)=S2(N)+a(i); end end S1表示按从大到小的顺序的S N S2表示按从小到大的顺序的S N 计算结果

通过本上机题,看出按两种不同的顺序计算的结果是不相同的,按从大到小的顺序计算的值与精确值有较大的误差,而按从小到大的顺序计算的值与精确值吻合。从大到小的顺序计算得到的结果的有效位数少。计算机在进行数值计算时会出现“大数吃小数”的现象,导致计算结果的精度有所降低,我们在计算机中进行同号数的加法时,采用绝对值较小者先加的算法,其结果的相对误差较小。

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

用复化梯形公式计算积分 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.请按任课老师要求的时间和载体(电子或纸质)提交给任课老师。

东南大学-数值分析上机题作业-MATLAB版

2015.1.9 上机作业题报告 JONMMX 2000

1.Chapter 1 1.1题目 设S N =∑1j 2?1 N j=2 ,其精确值为 )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)按两种顺序分别计算64210,10,10S S S ,并指出有效位数。(编制程序时用单精度) (4)通过本次上机题,你明白了什么? 1.2程序 1.3运行结果

1.4结果分析 按从大到小的顺序,有效位数分别为:6,4,3。 按从小到大的顺序,有效位数分别为:5,6,6。 可以看出,不同的算法造成的误差限是不同的,好的算法可以让结果更加精确。当采用从大到小的顺序累加的算法时,误差限随着N 的增大而增大,可见在累加的过程中,误差在放大,造成结果的误差较大。因此,采取从小到大的顺序累加得到的结果更加精确。 2.Chapter 2 2.1题目 (1)给定初值0x 及容许误差ε,编制牛顿法解方程f(x)=0的通用程序。 (2)给定方程03 )(3 =-=x x x f ,易知其有三个根3,0,3321= *=*-=*x x x ○1由牛顿方法的局部收敛性可知存在,0>δ当),(0δδ+-∈x 时,Newton 迭代序列收敛于根x2*。试确定尽可能大的δ。 ○2试取若干初始值,观察当),1(),1,(),,(),,1(),1,(0+∞+-----∞∈δδδδx 时Newton 序列的收敛性以及收敛于哪一个根。 (3)通过本上机题,你明白了什么? 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。

东南大学数值分析上机解剖

第一章 一、题目 设∑ =-=N j N j S 22 1 1,其精确值为)11 123(21+--N N 。 (1)编制按从大到小的顺序1 1 131121222-+ ??+-+-=N S N ,计算SN 的通用程序。 (2)编制按从小到大的顺序1 21 1)1(111222-+ ??+--+-=N N S N ,计算SN 的通用程序。 (3)按两种顺序分别计算64210,10,10S S S ,并指出有效位数。(编制程序时用单精度) (4)通过本次上机题,你明白了什么? 二、MATLAB 程序 N=input('请输入N(N>1):'); AccurateValue=single((0-1/(N+1)-1/N+3/2)/2); %single 使其为单精度 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('Sn 的值 (N=%d)\n',N); disp('____________________________________________________') fprintf('精确值 %f\n',AccurateValue); fprintf('从大到小计算的结果 %f\n',Sn1); fprintf('从小到大计算的结果 %f\n',Sn2); disp('____________________________________________________')

数值分析上机题(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);

数值分析西南交通大学

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) 附录

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

数值分析上机报告

第一章 一、题目 精确值为)1 1123(21+--N N 。 1) 编制按从大到小的顺序11 131121222-+ ??+-+-=N S N ,计算S N 的通用程序。 2) 编制按从小到大的顺序1 21 1)1(111222-+ ??+--+-= N N S N ,计算S N 的通用程序。 3) 按两种顺序分别计算64210,10,10S S S ,并指出有效位数。(编制程序时用单精度) 4) 通过本次上机题,你明白了什么? 二、通用程序

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

第二章 一、题目 (1)给定初值0x 及容许误差ε,编制牛顿法解方程f(x)=0的通用程序。 (2)给定方程03 )(3 =-=x x x f ,易知其有三个根3,0,3321=*=*- =*x x x a) 由牛顿方法的局部收敛性可知存在,0>δ当),(0δδ+-∈x 时,Newton 迭代序列收 敛于根x 2*。试确定尽可能大的δ。 b)试取若干初始值,观察当),1(),1,(),,(),,1(),1,(0+∞+-----∞∈δδδδx 时Newton 序列的收敛性以及收敛于哪一个根。 (3)通过本上机题,你明白了什么? 二、通用程序

1.运行search.m 文件 结果为: The maximum delta is 0.774597 即得最大的δ为0.774597,Newton 迭代序列收敛于根* 2x =0的最大区间为 (-0.774597,0.774597)。 2.运行Newton.m 文件 在区间(,1),(1,),(,),(,1),(1,)δδδδ-∞----++∞上各输入若干个数,计算结果如下: 区间(,1)-∞-上取-1000,-100,-50,-30,-10,-8,-7,-5,-3,-1.5

数值分析上机实验

目录 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)

东南大学_数值分析_第七章_偏微分方程数值解法

第七章 偏微分方程数值解法 ——Crank-Nicolson 格式 ****(学号) *****(姓名) 上机题目要求见教材P346,10题。 一、算法原理 本文研究下列定解问题(抛物型方程) 22(,) (0,0)(,0)() (0) (0,)(), (1,)() (0)u u a f x t x l t T t x u x x x l u t t u t t t T ?αβ???-=<<≤≤???? =≤≤??==<≤?? (1) 的有限差分法,其中a 为正常数,,,,f ?αβ为已知函数,且满足边界条件和初始条件。关于式(1)的求解,采用离散化方法,剖分网格,构造差分格式。其中,网格剖分是将区域{}0,0D x l t T =≤≤≤≤用两簇平行直线 (0) (0)i k x x ih i M t t k k N τ==≤≤?? ==≤≤? 分割成矩形网格,其中,l T h M N τ==分别为空间步长和时间步长。将式(1)中的偏导数使用不同的差商代替,将得到不同的差分格式,如古典显格式、古典隐格式、Crank-Nicolson 格式等。其中,Crank-Nicolson 格式具有更高的收敛阶数,应用更广泛,故本文采用Crank-Nicolson 格式求解抛物型方程。 Crank-Nicolson 格式推导:在节点(,)2 i k x t τ +处考虑式(1),有 22(,)(,)(,)222 i k i k i k u u x t a x t f x t t x τττ??+-+=+?? (2) 对偏导数 (,)2 i k u x t t τ ?+?用中心差分展开 []2311+13 1(,)(,)(,)(,) ()224k k i k i k i k i i k i k u u x t u x t u x t x t t t t ττηητ++??+=--<

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