文档视界 最新最全的文档下载
当前位置:文档视界 › 东南大学_数值分析_第七章_偏微分方程数值解法

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

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

第七章 偏微分方程数值解法

——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 ττηητ++??+=--<

i k u x t x τ

?+?在节点(,)i k x t 和1(,)i k x t +表示为

222+122224

+122

1(,)=(,)+(,)22 (,) ()8i k i k i k k k i i k i k u u u

x t x t x t x x x u

x t t x t

ττ

ηη?????+????????-

<

对以上两个偏导数用二阶差分展开

[]2112224

i+14

1

(,)(,)2(,)(,) (,) ()12i k i k i k i k k

k i k i i u x t u x t u x t u x t x h

h u t x x x ξξ+-?=-+??-<

[]21111112224

1i+14

1

(,)(,)2(,)(,) (,) ()12i k i k i k i k k k

i k i i u x t u x t u x t u x t x h

h u t x x x

ξξ++++-++?=-+??-<

将式(4)(5)(6)分别代入式(3),略去高阶小量,用k i u 代替(,)i k u x t 并化简得

()()()21111

11112122,22k k k k k k k k i i i i i i i i i k a u u u u u u u u f x t h ττ+++++-+-????---++-+=+ ????? (7) 令2/r a h τ=,将式(7)联合式(1)初始条件和边界条件,用矩阵的形式表示为:

1111221221111122

1122221122221122 k k k k k k

M M k k M M r r r r u u r r r r r r

u u r r r r u u r r u u r r r r +++--+--????

+---????????????

????-+--????????????????????=????????????????-+--???????

?????

????????

-+-????????

()()()()()()112211,22,2 ,2,22k k k k M k M k k k r f x t t t f x t f x t r f x t t t ττααττττττββ+--+???

?+++ ??????????

?+ ???????

+??

??

????+ ?

??????

????+++ ???????

(8) Crank-Nicolson 格式的截断误差为22()R O h τ=+,具有较高的精度。

二、计算代码

Crank_Nicolson 格式完整代码

function U=Crank_Nicolson(f,a,x0,xn,dx,t0,tm,dt,g,s0,sn) %采用Crank_Nicolson 格式求解抛物线型偏微分方程 % du/dt-a*d2u/dx2=f(x,t) %Input - f 抛物方程右端函数 % - a 为二阶导系数 % - x0 and xn 空间域端点 % - t0 and tm 时间域端点 % - dx 为空间步长,dt 为时间步长 % - g 为初始条件函数 % - s0,sn 为边界条件函数

%Output - U 输出,横坐标为空间,纵坐标为时间 M=(tm-t0)/dt;N=(xn-x0)/dx;%网格数 x=x0+dx:dx:xn-dx; t=t0:dt:tm; u=feval(g,x);u=u'; r=a*dt/dx/dx;%步长比

%Crank-Nicolson 格式:A*u_(k+1)=B*u_k+C

A=-r/2*[zeros(1,N-1);eye(N-2,N-2),zeros(N-2,1)]-r/2* ...

[zeros(N-2,1),eye(N-2,N-2);zeros(1,N-1)]+(1+r)*eye(N-1,N-1); A=inv(A);

B=r/2*[zeros(1,N-1);eye(N-2,N-2),zeros(N-2,1)]+r/2* ...

[zeros(N-2,1),eye(N-2,N-2);zeros(1,N-1)]+(1-r)*eye(N-1,N-1); U=[]; for k=1:M

C=dt*feval(f,x,t(k)+0.5*dt); C=C';

C(1)=C(1)+r/2*(feval(s0,t(k))+feval(s0,t(k+1))); C(N-1)=C(N-1)+r/2*(feval(sn,t(k))+feval(sn,t(k+1))); u=A*(B*u+C); U=[U;u']; end

三、计算结果及分析

对于定解问题

2210 (01,01)(,0) (01)(0,), (1,) (01)x t t u u

x t t x u x e x u t e u t e t +???-=<<≤≤????

=≤≤?

?==<≤??

(9)

取空间步长1/x M ?=,时间步长1/t N ?=,采用Crank_Nicolson 格式计算,并将计算结果与精确值()x t y x e +=作比较,计算调用程序Crank_Nicolson.m ,如下

clc

format long

f=inline('0*x+0*t');%抛物方程右端函数 g=inline('exp(x)');%初始条件函数

s0=inline('exp(t)');sn=inline('exp(t+1)');%边界条件函数 a=1;x0=0;xn=1;t0=0;tm=1; M=40;N=40; err=[]; kk=4; for ii=1:kk

dx=1/N;dt=(tm-t0)/M;%空间步长,时间步长

U=Crank_Nicolson(f,a,x0,xn,dx,t0,tm,dt,g,s0,sn);%调用Crank_Nicolson 函数 U_CN=U(length(U),N/5:N/5:4*N/5); %在四个目标点处的数值解 fu=inline('exp(x+t)'); %精确方程 xx=0.2:0.2:0.8;tt=1.0;

U_real=feval(fu,xx,tt); %在四个目标点处的精确解 %abs(U_CN-U_real)

err=[err,sqrt((U_CN-U_real)*(U_CN-U_real)')]; %平方误差和开方 M=M*2;N=N*2;%步长反复二分 end for ii=2:kk

err(ii)/err(ii-1)%误差观察 end

fprintf('%16.15f ', err)

在MATLAB 中运行以上程序,计算结果如表1所示

表1 Crank_Nicolson 格式计算结果及其误差(40M N ==)

从表1可以看出,在空间步长和时间步长均为0.25时,采用Crank_Nicolson 格式计算抛物线方程(5)的数值解与精确解之间的误差达到了410-,故很好的实现偏微分方程的数值解法,且具有较高的精度和较低的运算复杂度。同时,为了比较不同的步长所带来的计算精度,本文通过将步长反复二分,观察四个输出点的误差均方和减小的规律,如表2所示。

表2 不同步长下的误差及其规律

从表2可以看出,随着空间步长和时间步长的减小,数值计算的误差呈下降趋势,说明,随着时间步长和空间步长的减小,计算结果可以收敛到精确解。同时,通过观察表2最后一列,可见,时间步长和空间步长同时减半,计算误差降低为原来的四分之一,这与Crank_Nicolson 格式的截断误差22()R O h τ=+(其中为τ时间步长,h 为空间步长)是符合一致的。

四、结论

本文介绍了偏微分方程求解的Crank_Nicolson 方法,其主要思想是用离散的、只含有限个未知数的差分方程去近似代替连续变量的微分方程和边界条件,并将相应的差分方程的解作为原问题的近似解。Crank_Nicolson 格式是一种隐格式,是绝对稳定的。同时,本文考察了其收敛性,实验证明,Crank_Nicolson 格式是收敛的,且具有二阶收敛性。

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

数值分析上机题 第一章 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 运行结果:

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

东南大学数值分析上机作业 汇总 -标准化文件发布号:(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)最佳平方逼近:理解内积空间的概念,掌握求离散数据的最佳平方逼近的方法,会求超定方程组的最小二乘解,掌握连续函数的最佳平方逼近的求法。

东南大学《数值分析》-上机题

数值分析上机题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 计算结果

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

东南大学-数值分析上机题作业-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程序

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

第一章 一、题目 设∑ =-=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);

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

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

第七章 偏微分方程数值解法 ——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 ττηητ++??+=--<

东南大学数值分析上机题答案说课讲解

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

数值分析上机题 第一章 17.(上机题)舍入误差与有效数 设∑=-= N j N j S 2 2 11 ,其精确值为)111-23(21+-N N 。 (1)编制按从大到小的顺序1 -1 ···1-311-212 22N 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-212 22N 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 222-++--+ -= 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 运行结果:

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

数值分析上机报告 姓名: 学号: 专业: 2013年10月27日

第一章 舍入误差与有效数 设2 21 1N N j S j ==-∑ ,其精确值为1311221N N ??-- ? +?? 。 (1)编制按从大到小的顺序222 111 21311 N S N = +++---,计算N S 的通用程序。 (2)编制按从小到大的顺序2221111(1)121N S N N =+++----,计算N S 的通用程序。 (3)按两种顺序分别计算210S ,410S ,610S ,并指出有效位数。(编制程序时用单精度) (4)通过本上机题,你明白了什么? 解: (1) #include void main() { float n,i,s; printf("please input n="); scanf("%f",&n); for(i=2,s=0;i<=n;s+=1/(i*i-1),i++); printf("s=%f\n",s); } (2) #include void main() { float n,i,s; printf("please input n="); scanf("%f",&n); for(i=n,s=0;i>=2;s+=1/(i*i-1),i--); printf("s=%f\n",s); } (3)按从大到小顺序:210S =0.740049 有效位数6位 410S =0.749852 有效位数3位 610S =0.749852 有效位数3位 按从小到大顺序: 210S =0.740050 有效位数5位

410S =0.749900 有效位数6位 610S =0.749999 有效位数6位 (4)通过上述实验数据可以看出此次算法使用从小到大的顺序进行得到的数据相对而言更精确,可以得到这样的启示:在计算数值时,要先分析不同算法对结果的影响,避免大数吃小数的现象,找出能得到更精确的结果的算法。 第二章 (上机题)Newton 迭代法 (1)给定初值0x 及容许误差ε,编制Newton 法解方程()0f x =根的通用程序。 (2)给定方程3 ()/30f x x x =-=,易知其有三个根1x *=,20x * =,3x * = 1.由Newton 方法的局部收敛性可知存在0δ>,当0(,)x δδ∈-时,Newton 迭代序列收敛于根2x * 。试确定尽可能大的δ。 2.试取若干初始值,观察当0(,1)x ∈-∞-,(1,)δ--,(,)δδ-,(,1)δ,(1,)∞时Newton 序列是否收敛以及收敛于哪一个根。 (3)通过本上机题,你明白了什么? 解: (1)#include #include #define eps 0.000001 float f(float x) { float f; f=x*x*x/3-x; return(f); } float df(float x) { float df; df=x*x-1; return (df); } void main(void) { float x0,x1,a;

数值分析上机题4-5章

数值分析上机报告 姓名:徐敬梁 学号:220141447(A) 院系:自动化

第五章 一.重积分的计算 (1) 给定积分()((,)),d b c a I f f x y dx dy =蝌取初始步长h 和k 及精度e ,应用复化梯形 公式,采用逐次二分步长的方法并应用外推思想编制计算()I f 的通用程序,计算至相邻两次近似值之差的绝对值不超过e 为止; (2) 用所编程序计算积分226300()(tan())I f x y dx dy p p =+蝌取51102 e -= 二.主程序 %Get the approximation of a double integral of f(x,y) %on a rectangular region R={(x,y)|a<=x<=b,c<=y<=d} %with given step m=(b-a)/h and n=(d-c)/k %and given error epsilon Function[bestres,res]=getDoubleIntegral(f,a,b,c,d,m,n,epsilon); Res=[]; Count=1; Res(count,1)=getT(f,a,b,c,d,2^count*m,2^count*n); Count=2; Res(count,1)=getT(f,a,b,c,d,2^count*m,2^count*n); Res(count-1,2)=4/3*res(count,1)-1/3*res(count-1,1); Res1=res(1,1); Res2=res(2,1); Co=[4/3-1/3;16/15-1/15;64/63-1/63]; While abs(res1-res2)>epsilon Count=count+1; Res(count,1)=get(f,a,b,c,d,2^count*m,2^count*n); For I =1:size(co,1) If count >1 Res(count-i,i+1)=co(i,1)*res(count-i+1,i)+co(i,2)*res(count-I,i); End End I=size(co,1); While size(res,1)-i-1<0 i=i-1 end res1=res(count-I,i); res2=res(count-i+1,i); bestres=res2; end end %Get approximation of a double integral of f(x,y) %on a rectangular region R={(x,y)|a<=x<=b,c<=y<=d}

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

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

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

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

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

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

1 题目 设S N =∑1N 2?1 N N =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)通过本次上机题,你明白了什么 程序 运行结果

结果分析 按从大到小的顺序,有效位数分别为:6,4,3。 按从小到大的顺序,有效位数分别为:5,6,6。 可以看出,不同的算法造成的误差限是不同的,好的算法可以让结果更加精确。当采用从大到小的顺序累加的算法时,误差限随着N 的增大而增大,可见在累加的过程中,误差在放大,造成结果的误差较大。因此,采取从小到大的顺序累加得到的结果更加精确。 2 题目 (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)通过本上机题,你明白了什么 程序

数值分析课程教学大纲

《数值分析》课程教学大纲 适用专业信息与计算科学 总学时72 学分 4 一、编写说明 (一)本课程的性质、地位和作用 随着计算机的迅速发展,在科学、技术、工程、生产、医学、经济和人文等领域中抽象出来的许多数学问题可以应用计算机计算、求解,本课程详细、系统地介绍了计算机中常用的数值计算方法及有关理论。通过学习使学生掌握数值分析的基本知识,学会使用数值分析方法解决实际问题的技能技巧,并为后继应用型课程奠定基础。本课程是信息与计算科学专业的一门重要的专业课程。 (二)本大纲制定的依据 数值分析是一门内容丰富,研究方法深刻,有自身体系的课程,既有纯数学高度抽象性与严密科学性的特点,又有应用的广泛性与实际实验的高度技术性的特点,是一门与计算机使用密切结合的实用性很强的数学课程。因此学习本课程时,要注意掌握方法的基本原理和思想,要注意方法处理的技巧及与计算机的结合,重视误差分析、收敛性及稳定性的基本理论。 (三)大纲内容选编原则与要求 1.要学好计算方法课程必须掌握高数、线性代数和算法语言的基本内容,还需能熟练应用计算机。任课教师在讲授每章之前,可用少量时间把涉及到的学过的内容复习一下。 2.为掌握好本课内容,学生应做一定数量的理论分析与计算练习。 3.各章的上机时间可调整,也可讲完几章后再上机,任课教师可灵活掌握。 (四)实践环节 1.实践环节主要分为习题课、上机、问题讨论、课后辅导和课后作业几部分。其中习题课12学时,上机16学时,问题讨论可在辅导课或课后完成,课后辅导每周2学时(不占总学时)。 2.上机主要内容与要求: 插值法、函数逼近、数值积分与数值微分、常微分方程初值问题的数值解法、方程求根、解线性方程组的直接方法、解线性方程组的迭代法、矩阵的特征值与特征向量计算。 要求把以上章节学过的主要算法编程,上机求解问题,其中每章2学时。

数值分析上机题课后作业全部东南大学

2015.1.9

1.Chapter 1 1.1题目 设S N =∑1 j 2?1 N j=2 ,其精确值为 )1 1123(21+--N N 。 (1)编制按从大到小的顺序1 1 1311212 22-+??+-+-=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程序

东南大学数值分析编程作业

数值分析编程作业 姓名:李红兵 学号:130891 指导老师:曹婉容

目录 P20.第17题:舍入误差与有效数 (3) P56.第20题:Newton迭代法 (5) P126.第39题:列主元Gauss消去法 (13) P127.第40题:逐次超松弛迭代法 (16) P195.第37题:3次样条插值函数 (22) P256.第23题:重积分的计算 (24) P307.第23题:常微分方程初值问题数值解 (26) P346.第10题:抛物方程Crank-Nicolson格式 (31)

注:源程序放在对应的文件夹里,如第一题放在“P20.第17题:舍入误差与有效数”文件夹里; P20.第17题:舍入误差与有效数 设22 11311,--122N N+1 N N j S j == -∑ 其精确值为()。 (1)编制按从小到大的顺序222111 +++ 2-13-1N -1N S = ?????,计算N S 的通用程序; (2)编制按从小到大的顺序222 111 +++N -1N-1-12-1 N S =?????(),计算N S 的通用程序; (3)按两种顺序分别计算210S ,410S ,610S ,并指出有效位数(编制程序时用单精度); (4)通过本上机题你明白了什么? 答 (1)(2)程序:程序放在computation.m,goon.m 文件里,运行程序时只需输入命令main

(3)运行结果: N=100时,S1有6位有效数字,S2都是有效数字 N=10000时,S1有4位有效数字,S2都是有效数字 N=1000000时,S1有3位有效数字,S2都是有效数字 (4)体会:当N从小到大变化时,SN的项从大到小,反之SN的项从小到大。 从运算结果可见,第一种计算结果总是比第2、3种计算结果小,这是由于大数吃小数的原因(计算机表示一个数值是用字节表示的,当程序进行计算时,先将第一项和第二项相加,然后再加第三项……所以加到后面会由于项的值很小,不能加到这个字节里,所以就被忽略

《数值分析》习题1

习题1 1. 以下各表示的近似数,问具有几位有效数字?并将它舍入成有效数。 (1)* 1x =451.023, 1x =451.01; (2)* 2x =-0.045 113, 2x =-0.045 18; (3)* 3x =23.421 3, 3x =23.460 4; (4)*4x = 3 1 , 4x =0.333 3; (5)* 5x =23.496, 5x =23.494; (6)* 6x =96×510, 6x =96.1×510; (7)* 7x =0.000 96, 7x =0.96×310-; (8)* 8x =-8 700, 8x =-8 700.3。 解:(1) =* 1x 451.023 =1x 451.01 =-1*1 x x 0.0131102 1 -?≤,1x 具有4位有效数字。→1x 451.0 (2) -=* 2x 0.045 113 -=2x 0.045 18 =-

=-4*4x x 4102 1 000033.0-?< ,4x 具有4位有效数字,=4x 0.3333 (5) =* 5 x 23.496,=5x 23.494 =-5* 5x x =-494.23496.232102 1002.0-?< 5x 具有4位有效数字, →5x 23.50 (不能写为23.49) (6) =* 6 x 51096?71096.0?= =6x 5101.96?710961.0?= =-6* 6x x 710001.0-?7210102 1--??≤ 6x 具有2位有效数字,57610961096.0?=?=x (7) =* 7 x 0.00096 371096.0-?=x 3*71096.0-?=x =-7* 7x x 0 7x 精确 (8) 8700* 8 -=x 8x 3.8700-= 8* 8 x x -0102 1 3.0?≤= 8x 具有4位有效数字,8x 8700-=精确 2.以下各数均为有效数字: (1) 0.1062 + 0.947; (3)2.747?6.83; (2)23.46―12.753; (4)1.473 / 0.064 。 问经过上述运算后,准确结果所在的最小区间分别是什么? 解:(1) 1x =0.1062,2x =0.947,1x +2x =1.0532 )(1x e 4 1021-?≤,)(2x e 3102 1-?≤ )()()(2121x e x e x x e +≈+≤ +≤)()(21x e x e 34102 1 1021--?+? =0.00055

东南大学数值分析上机报告完整版

数值分析上机实验报告 目录 1.chapter1舍入误差及有效数 (2) 2.chapter2Newton迭代法 (3) 3.chapter3线性代数方程组数值解法-列主元Gauss消去法 (7) 4.chapter3线性代数方程组数值解法-逐次超松弛迭代法 (9) 5.chapter4多项式插值与函数最佳逼近 (10)

1.chapter1舍入误差及有效数 1.1题目 设S N =∑1 j 2?1N j=2,其精确值为 )1 1 123(21+--N N 。 (1)编制按从大到小的顺序11 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)通过本次上机题,你明白了什么? 1.2编写相应的matlab 程序 clear; N=input('please input N:'); AValue=((3/2-1/N-1/(N+1))/2); sn1=single(0); sn2=single(0); for i=2:N sn1=sn1+1/(i*i-1); %从大到小相加的通用程序% end ep1=abs(sn1-AValue); for j=N:-1:2 sn2=sn2+1/(j*j-1); %从小到大相加的通用程序% end ep2=abs(sn2-AValue); fprintf('精确值为:%f\n',AValue); fprintf('从大到小的顺序累加得sn=%f\n',sn1); fprintf('从大到小相加的误差ep1=%f\n',ep1); fprintf('从小到大的顺序累加得sn=%f\n',sn2); fprintf('从小到大相加的误差ep2=%f\n',ep2); disp('================================='); 1.3matlab 运行程序结果 >> chaper1 please input N:100 精确值为:0.740050 从大到小的顺序累加得sn=0.740049 从大到小相加的误差ep1=0.000001 从小到大的顺序累加得sn=0.740050 从小到大相加的误差ep2=0.000000 >> chaper1

数值分析上机题答案

20.(上机题)舍入误差与有效数 设∑=-=N j N j S 2211,其精确值为)11123(21+--N N 。 (1)编制按从小到大的顺序 11131121222-+???+-+-=N S N ,计算N S 的通用程序。 (2)编制按从大到小的顺序 1211)1(111222-+???+--+-= N N S N ,计算N S 的通用程序。 (3)按两种顺序分别计算642101010,,S S S ,并指出有效位数。(编制程序时用单精度) (4)通过本上机题,你明白了什么? c++代码: #include #include void main(){ float S1,S2,S=0.0,N,j; fstream myfile; //定义文件 myfile.open("chap0.txt",ios::in|ios::out); for (int i=0;i<3;i++) { do //读入三组数据 { cout<<"请输入N 值:"; cin>>N; cout<=2;j--) S2=S2+(float) (1.0/(j*j-1.0)); myfile<<"按从大到小的顺序求和结果S1=:"<

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