当前位置:文档之家› 数值分析课程设计报告

数值分析课程设计报告

数值分析课程设计报告
数值分析课程设计报告

本科课程设计(报告)

数值分析课程设计

[设计题一]

设计实验验证Hilbert 矩阵的病态性。

11

121112311111

21n n

H n n

n n ?? ? ? ? ?

=+

? ? ?

?+-??

(提示:先取x (比如x=(1,1…..1))计算出b=Hx,然后通过列主元GAUSS 消去法求解Hx=b,得到近似解x

,比较之,并研究随着n 增大,解的误差变化情况,得出结论 )

设计思路:

(1)取定初值X=(1,1,1,…),计算出b=Hx,然后通过列主元GAUSS消去法求解Hx=b,得到近似解B=(b1,b2,b3…);

(2)再把近似解B,代入方程b=Hx,,解出X1,比较X与X1,判断H矩阵的病态性;

(3)比较各个H矩阵的病态性,研究它们的误差变化情况。

算法步骤:

(1)取一个三阶H矩阵,按照设计思路的方法,判断出三阶H矩阵的病态性;

(2)取一个四、五阶H矩阵,同理,判断出四阶H矩阵的病态性。

程序清单:

Xa=[1;1;1];Ha=[1,1/2,1/3;1/2,1/3,1/4;1/3,1/4,1/5];

Ba=Ha*Xa

Ba=[1.83;1.08;0.78];

Xa=Ha\Ba

Xb=[1;1;1;1];Hb=[1,1/2,1/3,1/4;1/2,1/3,1/4,1/5;1/3,1/4,1/5,1/6;1/4,1/5,1/6,1/7;];

Bb=Hb*Xb

Bb=[2.08;1.28;0.95;0.76];

Xb=Hb\Bb

Xc=[1;1;1;1;1];Hc=[1,1/2,1/3,1/4,1/5;1/2,1/3,1/4,1/5,1/6;1/3,1/4,1/5,1/6,1/7;1/4,1/5,1/6,1/7,1/8;1/5,1/6,1/7,1/8,1/9;];

Bc=Hc*Xc

Bc=[2.28;1.45;1.09;0.89;0.75];

Xc=Hc\Bc

运行过程与输出结果截图:

结果分析:

代入近似解Ba,Bb,Bc 而得到的X 如下: Xa =

0.99000000000000 1.08000000000001 0.89999999999999

Xb =

1.27999999999997 -1.79999999999961 7.19999999999903 -

2.79999999999936

Xc =

1.0e+002 * -0.06999999999975 1.48199999999542 -6.25799999998035 9.37999999997045 -4.53599999998560

由此分析比较初始的Xa,Xb,Xc 可以看出,Hilbert 矩阵是一个病态矩阵,且随着n 的增大,其误差变化加大。

即,Hilbert 矩阵是一个随n 增大而误差偏离更大的病态矩阵。

[设计题二]

1225

年,达。芬奇研究了方程32

210200x x x ++-=并得到它的一个近似

根*

1.368808107x

=。没有人知道他用什么方法得到它。设计两种方法去计算,并比较这

两种方法。

设计思路与算法步骤:

不动点迭代法:

(1) 先把方程变换为x=20/(x.^2+2*x+10),并编译函数M 文件

(2) 利用不动点迭代法,确定迭代次数,进行运算,不妨设迭代次数为20,由题目可设迭代初

始值X0=1

牛顿迭代法:

(1) 用牛顿迭代法,得到迭代方程 x1=x0-f(x0)/f ˊ(x0),编译函数M 文件 (2)取适当的ε,δ,和迭代次数n,进行迭代,直到符合条件时,停止运算。

(3)确定迭代初始值x0=1,设精确为0.000000001.

程序清单:

1、函数文件:

原函数;

function y = fun(x)

y=x.^3+2*x.^2+10*x-20;

迭代函数:

function y=fun1(x)

y=20/(x.^2+2*x+10);

导函数:

function y =dfun(x)

y=3*x.^2+4*x+10;

2、不动点迭代的M文件:

function [k,pcha,xpcha,xk]=diedai(x0,k)

% 输入的量--x0是初始值,k是迭代次数

x(1)=x0;

for i=1:k

x(i+1)=fun1(x(i));%程序中调用的fun1.m为函数y=φ(x)

pcha= abs(x(i+1)-x(i)); xpcha=pcha/( abs(x(i+1))+eps);%偏差计算

i=i+1;xk=x(i);[(i-1) pcha xpcha xk]

end

if (pcha >1)&(xpcha>0.5)&(k>3) %迭代收敛性判断

disp('请用户注意:此迭代序列发散,请重新输入新的迭代公式')

return;

end

if (pcha < 0.001)&(xpcha< 0.0000005)&(k>3)

disp('祝贺您!此迭代序列收敛,且收敛速度较快')

return;

end

p=[(i-1) pcha xpcha xk]';

牛顿迭代的M文件:

function [k,xk,yk,pcha,xpcha]=newton(x0,tx,fx,n)

%k为迭代初始值,xpcha,pcha是误差范围,迭代终止条件,n控制迭代次数

x(1)=x0;

for i=1: n

x(i+1)=x(i)-fun(x(i))/(dfun(x(i))+eps); %牛顿迭代公式与偏差计算表达式

pcha=abs(x(i+1)-x(i));

xpcha= pcha/( abs(x(i+1))+eps); i=i+1;

xk=x(i);yk=fun(x(i)); [(i-1) xk yk pcha xpcha]

if (abs(yk)

return;

end

end

if i>n

k=i-1; xk=x(i);[(i-1) xk yk pcha xpcha]

return;

end

[(i-1),xk,yk,pcha,xpcha]'

运行过程与输出结果截图:

%在命令窗口中输入以下语句,可得以下结果:

[k,pcha,xpcha,xk]=diedai(1,20)

[k,xk,yk,pcha,xpcha]=newton(1,0.000000001, 0.000000001,1000) 不动点迭代

牛顿迭代

结果分析:

迭代法:

运行结果

k =

20

pcha =

1.077823423845103e-007

xpcha =

7.874174939314717e-008

xk =

1.36880807468942

容易看出,进行20次迭代之后,得到的结果x = 1.36880807468942,而且与题目所给的* 1.368808107

x ,十分接近。

牛顿迭代法:

运行结果

k =

5

xk =

1.36880810782137

yk =

pcha =

1.7863568394251e-015

xpcha =

1.2987398576591e-015

可知,利用牛顿迭代法进行五次迭代后,即可得到满足精度的结果,与题目给的答案接近。

总而言之,不动点迭代法与牛顿迭代法这两种方法,可见,牛顿迭代法,运算次数少,且误差

小于不动点迭代的运算误差,故牛顿迭代法比较优越。

[设计题四]

地球卫星飞行的轨道是一个椭圆,椭圆的周长计算公式为

20

s a π

θ=?

其中a 为椭圆长半轴,c 是椭圆中心与地球中心的距离。令H,h 分别为远地点,和近地点距离。R=6371(km )为地球半径。则a=(2R+H+h)/2, c=(H-h)/2.我国第一颗人造卫星H=3484km,h=439km.

(a=(2*6371+3484+439)/2=8332.5, c=(3484-439)/2)=1522.5

试通过复化梯形公式,复化辛普森公式计算卫星轨道的周长,且研究并比较这两种的方法的收敛性。

设计思路与算法步骤:

(1)、编译被积函数M 文件,被积函数表达式为:y=8332.5*sqrt(1-(1522.5/8332.5)^2*sin(x));

(2)

编译算法。不妨设递归次数为15次。

(3)、根据复化辛普森公式,

,编译算法,不妨设递归次数为15次。

程序清单:

被积函数:

function y=fun4(x)

y=8332.5*sqrt(1-(1522.5/8332.5)^2*sin(x));

复化梯形公式;

function T=rctrap(fun4,a,b,m) %fun4表示被积函数,a ,b 是被积函数上下限,m 是递归次数 n=1;h=b-a; T=zeros(1,m+1); x=a; %赋值计算

T(1)=h*(feval(fun4,a)+feval(fun4,b))/2; %初次调用梯形公式 for i=1:m %复化梯形公式主体 h=h/2; n=2*n; s=0; for k=1:n/2

x=a+h*(2*k-1); s=s+feval(fun4,x); end

T(i+1)=T(i)/2+h*s; %最后一次调用复化梯形公式 end T=T(1:m);

复化辛普森公式:

function [y,n,yiter]=SimpsonInt(fun,a,b,epsilon)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%Function : Simpson 积分

%%Argument : fun 是被积函数;a,b 是积分上下限;epsilon 是误差容限 %%Return : y 为积分结果;将[a,b]平均n 等分;yiter 迭代的积分值 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% if (nargin<4) epsilon=1e-6; end

if (nargin<3)

warning(['usage:',mfilename,'(fun,a,b[,epsilon])']); end n=2;

h=(b-a)/4;

y1=feval(fun,a)+feval(fun,b);

y2=feval(fun,(a+b)/2);

y0=(b-a)/6*(y1+4*y2);

yiter=y0;

while 1

y3=sum(feval(fun,a+(1:2:2*n-1)*h)); y=h/3*(y1+2*y2+4*y3);

if abs(y-y0)<15*epsilon

break;

end

n=n+n;

h=h/2;

y2=y2+y3;

y0=y;

yiter=[yiter,y0];

end

运行过程与输出结果截图:

在命令窗口中输入:

Q1=rctrap(@fun4,0,pi/2,15)

vpa(Q1,7)

[y,n,yiter]=SimpsonInt(@fun4,0,pi/2,0.01) vpa(y,7)

可得以下截图

结果分析:

复化梯形公式

vpa(Q1,7) ans =

[ 12978.49, 12955.87, 12950.43, 12949.09, 12948.75, 12948.67, 12948.65, 12948.64, 12948.64, 12948.64, 12948.64, 12948.64, 12948.64, 12948.64, 12948.64]

复化辛普森公式 vpa(y,7)

ans =12948.64

可见,利用复化梯形公式计算得到的周长为12948.64, 而利用复化辛普森公式计算得到的周长为12948.64时,仅递归了4次。由此可见,复化辛普森公式的收敛速度比复化梯形公式快。

[设计题五]

给定单摆方程初值问题

..

0sin ,(0),'(0)0

g l

θθθθθ=-

==

其中g=9.8,l=25. 取初始偏离角度0100.1745

θ==

取初始偏离角度

0300.5236

θ==

其精确解为0()cos ,t t θθωω==

。分别对上述两种情况按照下列方法求出其数值解,比较各方法的优缺点,并将计算结果与精确解做比较(列表、画图)。 (方案I )欧拉法,步长h = 0.025, h = 0.1;

(方案II )改进的欧拉法,步长h = 0.05, h = 0.1; (方案III )四阶经典龙格—库塔法,步长h = 0.1。

设计思路与算法步骤:

对于高阶常微分方程的解法:

1、把二阶微分方程化成标准型dt/dx=-g/l*sinx t(0)=0 x(0)=θx=θ; t =x’

2、把函数编译成矩阵表达式

3、解出精确解

4、利用欧拉法,改进的欧拉法,四阶龙格库塔法,求解

5、在相同的步长内,比较三种方法和精确解的误差大小

程序清单:

函数M文件:

function f=dy(x,y)

f=[y(2);-9.8*sin(y(1))/25];

(1)精确解:

y=0.1745*cos(9.8*x/25)

plot(x,y,'-');

xlabel('x'), ylabel('y'),

(2)欧拉法:

function [x,y]=Euler(fun,x0,xt,y0,n,h);%xt是右端点值

x(1)=x0;y=y0; %赋初值

for i=1:n

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

y(:,i+1)=y(:,i)+h*feval(fun,x(i),y(:,i)); %欧拉公式

end

plot(x,y,'-') %作图

xlabel('x'), ylabel('y'),

(3)改进的欧拉公式:

function [x,y]=Impeuler(fun,x0,xt,y0,n,h);%定义改进的欧拉函数

x(1)=x0;y=y0; %赋值

for i=1:n

x(i+1)=x(i)+h; %改进欧拉公式

y1=y(:,i)+h*feval(fun,x(i),y(:,i));

y2=y(:,i)+h*feval(fun,x(i+1),y1);

y(:,i+1)=(y1+y2)/2;

end

plot(x,y,'-') %作图

xlabel('x'), ylabel('y')

(4) 四阶经典龙格—库塔法:

function [x,y]=RK4(fun,y0,h,a,n);

x(1)=a; %赋值

y(:,1)=y0;

for i=1:n %四阶经典龙格—库塔法公式 x(i+1)=x(i)+h;

k1=feval(fun,x(i),y(:,i));

k2=feval(fun,x(i)+h/2,y(:,i)+h*k1/2);

k3=feval(fun,x(i)+h/2,y(:,i)+h*k2/2);

k4=feval(fun,x(i)+h,y(:,i)+h*k2);

y(:,i+1)=y(:,i)+h*(k1+2*k2+2*k3+k4)/6;

end

plot(x,y,'-') %作图

xlabel('x'), ylabel('y'),

运行过程与输出结果截图:

%在命令窗口中输入,可得以下结果

[x,y]=euler(@dy,0,1,[0.1745;0],10,0.1)

[x,y]=euler(@dy,0,1,[0.1745;0],40,0.025)

[x,y]=euler(@dy,0,1,[0.5236;0],40,0.025)

[x,y]=euler(@dy,0,1,[0.5236;0],10,0.1)

[x,y]=Impeuler(@dy,0,1,[0.1745;0],20,0.05)

[x,y]= Impeuler(@dy,0,1,[0.1745;0],10,0.1)

[x,y]= Impeuler(@dy,0,1,[0.5236;0],20,0.05) [x,y]= Impeuler(@dy,0,1,[0.5236;0],10,0.1) [x,y]=RK4(@dy,[0.5236;0],0.1,0,10)

[x,y]=RK4(@dy,[0.1745;0],0.1,0,10)

y=0.1745*cos(sqrt(9.8/25)*x)

y=0.5236*cos(sqrt(9.8/25)*x)

截图:

1、精确解:

(方案I )欧拉法:

(1) 步长h = 0.025,0100.1745θ==

(2)h=0.1 0100.1745θ==

(3) h=0.025

0300.5236

θ==

(4) h=0.1 0300.5236

θ==

(方案II )改进的欧拉法:

(1)

步长h = 0.05, 0100.1745θ==

(2)

h=0.1, 0100.1745θ==

(1) h=0.1, 0300.5236θ==

(2) h=0.05, 0300.5236θ==

(方案III )四阶经典龙格—库塔法:

(1) 0100.1745θ==

(2)

0300.5236

θ==

结果分析:

1、当

0100.1745

θ==

,h=0.1时,

从上诉的程序运行过程和结果可以看出,利用改进的欧拉法和经典四阶龙格库塔公式解出的值,比较接近精确解,而欧拉法比较远离精确解。且经典四阶龙格库塔公式收敛相对快一点。

2、当

0300.5236

θ==

,h=0.1时,

得出的结论,与

0100.1745

θ==

时,相同。

总而言之,利用四阶龙格库塔方法所得的结果比较具有优越性,且收敛快。而欧拉算法,比较简单,运算比较快,改进的欧拉法处于两者之间

心得体会

这次课程设计的时间不算长,可是我从中学习到了很多东西。由于有选择数学软件这个课程,所以对于matlab这个软件的认识还是有一定的基础。不过,由于实际操作比较小,所以处理起这个课程设计还是比较吃力。

从一开始,我对于matlab的一无所知,到现在可以利用这个软件对一些常用的算法,加于研究和设计,途中经历了很多困难。比如,如何使用for语句,矩阵的运算操作等等,都不太清楚。

具体的,例如设计题二。虽然利用数值分析上所学到的知识,可以从理论上解决这个问题。但是要利用matlab来处理的话,我顿时觉得无从下手,因为,要设计一个算法,毕竟涉及很多细小的问题,比如对于不动点迭代,需要如何设计变量,需要什么变量,for循环中的fun改怎么使用,怎么改变下标。迭代过程的终止条件改如何设计等等。

在遇到这些困难的时候,我要做的最多的就是,不断的搜索和阅读材料。从实例中总结和学习他人的方法,然后挪用到自己的程序算法中,不断的调试,修改,最后才把自己的算法设计出来。在完成那一刻,心中便产生起一种莫名的成就感,也许这些就是我们在成功解决问题后,所得到的心里上最大的回报吧。

虽然,当你对一个无知的事物加以学习的过程是比较繁琐的。但是,当你弄懂,和能够分析它的时候,你会发现,你能感受到一种发自内心无的成就感冲击着你的大脑。只有尝试过,你才知道这个过程的乐趣。

通过这个程序设计,我对于matlab软件的使用,无疑更加熟练了。而且对于数值分析这个课程,我也有了更深刻的体会。通过这个课程设计,我认识到,为什么说,计算方法是为各种数学问题的数值解答研究提供最有效的算法。因为利用计算方法中的知识,我们可以再误差允许的范围内,用最快,最准确的方法去解决我们生活中遇到的问题。例如,卫星运行轨迹的周长运算,虽然可以得到精确的运算表达式,但是按部就班的去积分运算的话,无疑是一件复杂的工程。而利用数值分析中的辛普森和梯形公式去计算,虽然有误差,但是误差范围可以控制,而且计算过程快捷。这就是数值分析在实际生活中存在的意义吧。

数值分析课程设计

淮海工学院计算机工程学院课程设计报告书 课程名:《数值分析》 题目:数值分析课程设计 班级: 学号: 姓名:

数值分析课程设计 课程设计要求 1、研究第一导丝盘速度y与电流周波x的关系。 2、数据拟合问题运用样条差值方法求出温度变化的拟合曲线。 课程设计目的 1、通过编程加深对三次样条插值及曲线拟合的最小二乘法的理解; 2、学习用计算机解决工程问题,主要包括数据处理与分析。 课程设计环境 visual C++ 6.0 课程设计内容 课程设计题目1: 合成纤维抽丝工段中第一导丝盘的速度对丝的质量有很大的影响,第一丝盘的速度和电流周波有重要关系。下面是一组实例数据: 其中x代表电流周波,y代表第一导丝盘的速度 课程设计题目3: 在天气预报网站上获得你家乡所在城市当天24小时温度变化的数据,认真观察分析其变化趋势,在此基础上运用样条差值方法求出温度变化的拟合曲线。然后将该函数曲线打印出来并与原来的温度变化数据形成的曲线进行比较,给出结论。写出你研究的心得体会。 课程设计步骤 1、利用最小二乘法写出题1的公式和算法; 2、利用excel表格画出数据拟合后题1的图像; 3、在Visual C++ 6.0中编写出相应的代码; 4、搜索11月12日南通当地一天的温度变化数据; 5、在Visual C++ 6.0中编写出相应的代码; 6、利用excel表格画出数据拟合后题3的图像 课程设计结果 课程设计题目1 数值拟合

解:根据所给数据,在excel窗口运行: x=[49.2 50.0 49.3 49.0 49.0 49.5 49.8 49.9 50.2 50.2] y=[16.7 17.0 16.8 16.6 16.7 16.8 16.9 17.0 17.0 17.1] 课程设计题目3 数据为:X=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]; Y=[12,12,11,12,12,12,12,12,13,15,16,17,17,18,17,17,17,16,15,15,15,15,14,14]; 源代码为: 第一题: #include #include"math.h" using namespace std; //double x[100],y[100]; int main(){ int i; double k,b; double sum1=0,sum2=0,sum3=0,sum4=0; double x[10]={49.2,50.0,49.3,49.0,49.0,49.5,49.8,49.9,50.2,50.2}; double y[10]={16.7,17.0,16.8,16.6,16.7,16.8,16.9,17.0,17.0,17.1}; for(i=0;i<10;i++){ sum1+=x[i]*y[i]; sum2+=x[i];

数值分析课程设计题目与要求

数值分析课程设计题目与要求 (10级应数及创新班) [设计题一] 编写顺序Gauss消去法和列主元Gauss消去法的函数,再分别调用这两个函数求解下面的84阶方程组: = , 然后考虑将方程组的阶数取为10至100之间多个值进行求解。将你的计算结果与方程组的精确解进行比较。从“快”、“准”、“省”三个方面分析以上两个算法,试提出改进的算法并加以实现和验证。 [设计题二] 编写平方根法和改进的平方根法(参见教材《计算方法》P54的例题2.5)的函数,然后分别调用这两个函数求解对称正定方程组Ax=b,其中A和b分别为: (1)系数矩阵A为矩阵(阶数取为10至100之间多个值): , 向量b随机地选取; (2)系数矩阵A为Hilbert矩阵(阶数取为5至40之间多个值),即A的第i行第j列元素,向量b的第i个分量取为。将你的计算结果与方程组的精确解进 行比较。 若出现问题,分析其原因,提出改进的设想并尝试实现之。

对于迭代法 ,......)2,1,0(99.021=-=+k x x x k k k , 它显然有不动点0* =x 。试设计2个数值实验 得到收敛阶数的大概数值(不利用判定收敛阶的判据定理): (1) 直接用收敛阶的定义; (2) 用最小二乘拟合的方法。 [设计题四] 湖水在夏天会出现分层现象,接近湖面温度较高,越往下温度变低。这种上热下冷的现象影响了水的对流和混合过程,使得下层水域缺氧,导致水生鱼类的死亡。如果把水温T 看成深度x 的函数T(x),有某个湖的观测数据如下: 环境工程师希望: 1) 用三次样条插值求出T(x)。 2) 求在什么深度处dx dT 的绝对值达到最大( 即02 2=dx T d )。 [设计题五] 某飞机头部的光滑外形曲线的型值点坐标由下表给出: ...值y 及一阶、二阶导数值y ’,y ”。绘出模拟曲线的图形。

《数值分析课程设计》教学大纲

《数值分析课程设计》教学大纲 课程编号:1512110303 课程名称: 数值分析课程设计 周数/学分:3/3 先修课程:《数值分析》 适用专业: 信息与计算科学 开课教研室:应用数学教研室 一、目的与要求: 《数值分析课程设计》是实践性教学内容之一,是《数值分析》课程的辅助教学过程,是信息与计算科学专业的必修课。通过设计,使学生深化对所学理论知识的理解,掌握数值计算方法的程序设计能力,初步具备解决实际数值计算问题的能力。 二、课程设计内容: 1.掌握数值分析的基本内容。误差的基本概念,插值与拟合,数值积分,线性代数方程组的解法,非线性方程求根,常微分方程初值问题的数值解法。 2.对每部分内容设计一定难度的问题,要求学生对问题进行分析,确定解决方案。 3.进行模拟与仿真,进行结果分析,编写课程设计报告 三、课程设计步骤与方法 1.教师向学生讲解课程设计目的和要求,补充相关基本知识,布置课程设计任务。 2.学生查找资料,编程、调试程序。本步骤是课程设计的核心内容之一,要求学生分析算法,写出相应程序,并对结果进行解释 3.撰写课程设计报告。 四、课程设计的基本要求 1.算法说明正确无误,图表符合技术规范要求。 2.毎生一台计算机,要求学生使用Matlab软件或Mathematica软件编写相关程序。 3.按要求完成一篇的课程设计报告。 4.课程设计的方式:以集中学习为主;独立完成课程设计阶段规定的全部工作任务。 五、课程设计进度表 序号 内 容 所用时间 1 教师讲解,布置任务 1天 2 学生编写程序并撰写设计报告 11天

3 教师反馈意见,学生修改设计报告 3天 合计 15天 六、课程设计考核方式 平时设计环节中的表现占总成绩30%,课程设计报告和软件运行情况占总成绩70%。 执笔:赵国喜 审定:朱耀生 梁桂珍

数值计算课程设计任务书

数值计算课程设计任务书 学院信息与计算科学/应用数学专业班级学生: 题目:典型数值算法的C++语言程序设计 课程设计从2017 年 6 月12 日起到2017 年7月 1 日 1、课程设计的内容和要求(包括原始数据、技术要求、工作要求等): 每人需作10个算法的程序、必做6题、自选4题。 对每个算法要求用C++语言进行编程。 必选题: 1、高斯列主元法解线性方程组 2、牛顿法解非线性方程组 3、经典四阶龙格库塔法解一阶微分方程组 4、三次样条插值算法(压紧样条)用C++语言进行编程计算 依据计算结果,用Matlab画图并观察三次样条插值效果。 5、龙贝格求积分算法 6、M次多项式曲线拟合,据计算结果,用Matlab画图并观察拟合效果。 自选题:自选4道其他数值算法题目.每道题目重选次数不得超过5次. 2、对课程设计成果的要求〔包括图表、实物等硬件要求〕: 2.1 提交课程设计报告 按照算法要求,应用C++语言设计和开发算法程序,提交由: 1)每个算法的原理与公式说明; 2)每个算法相应的程序设计说明(程序中的主要变量语义说明,变量的数据类型说明,数据在内存中组织和存储结构说明,各函数的输入形参和输出形参说明,函数功能说明,函数中算法主要流程图,函数的调用方法说明); 3)每个程序使用的实例(引用的实例可以自拟,也可以借用相关数值计算参考书中的例题作为作为验证程序是否正确的实例,无论是自拟实例还是引用实例,实例都应详细写入报告的正文中); 4)每个算法的调试记录(包括程序调试(静态调试和动态调试)和程序修改记录、程序测试(可以手工计算进行测试、也可以利用Matlab的函数或

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

偏微分方程数值解课程设计

课程设计报告 课程:偏微分方程数值解学号: 姓名: 班级: 教师:

《偏微分方程数值解》 课程设计指导书 一.课程设计的目的 1.帮助掌握偏微分方程数值解相关知识。 2.理解偏微分方程数值解差分隐格式解决自由振动方程问题的方法。 3.锻炼编写程序代码的能力。 二.设计名称 差分法求自由振动问题的周期解。 三.设计要求 1.要求写出差分隐格式的理论方法。 2.要求编写matlab 程序,画出函数图形。 3.要求写出实验总结及心得体会。 四.设计题目 用差分法求自由振动问题的周期解: 2222000,,0|0,|sin (0,)(2,)t t u u x t t x u u x t u t u t π==???-=-∞<<∞>???? ??==??? =??? 要求用差分隐格式求解,其中14 θ= 。 五.设计细则 1.区域剖分: 构造上式的差分逼近,取空间步长h 和时间步长τ,用两族平行直线 ?? ?===±±=== ,2,1,0,, ,2,1,0,n n t t j jh x x n j τ 作矩形网格。 2.离散格式: 显格式: 于网点),(n j t x 用Taylor 展式,并整理方程得: ??? ?? ??--++=+-++==-+-++-121121102 10102100 )1(2)(),()()1()]()([2),(n j n j n j n j n j j j j j j j j u u r u u r u x x r x x r u x u τ?????

隐格式: 上述显格式并不是绝对稳定的差分格式,为了得到绝对稳定的差分格式,用第1-n 层、 n 层、1+n 层的中心差商的权平均去逼近xx u ,得到下列差分格式: ? ??? ?? ???+-++--++-=+-+-++==----+-++-+++-++-]22)21(2[2), ()()1()]()([2),(2111112112111112 211102 10102100h u u u h u u u h u u u a u u u x x r x x r u x u n j n j n j n j n j n j n j n j n j n j n j n j j j j j j j j θθθττ?????其中10≤≤θ是参数。当0=θ时就是显格式,而当4 1 =θ时可以证明该格式绝对稳定。 隐格式的矩阵形式是: ??? ???????? ???????????=??????????????????????????????????????????????? ?-+-+-+-+--+-+-+++122111121121 12222 222 2222221212121J J j n J n J n j n n z z z z z u u u u u r r r r r r r r r r r r θθθθ θθθθθ θ θθ 其中: 1 111111122]2()2)(21[(-----+-+-++-++--=n j n j n j n j n j n j n j n j j u u u u u u u u r z θθ 3.格式稳定性: 1)显格式: 显格式稳定的充分必要条件是:网格比1

数值分析课程设计

课程设计报告 课程名称 课题名称 专业 班级 学号 姓名 指导教师 年月日

湖南工程学院课程设计任务书 课程名称数值分析 课题 专业班级 学生姓名 学号 指导老师 审批 任务书下达日期2009 年 5 月 4 日任务完成日期2009 年 5 月18日

一、设计内容与设计要求 1.设计内容: 对课程《计算方法》中的常见算法进行综合设计或应用(具体课题题目见后面的供选题目)。 2.设计要求: ●课程设计报告正文内容 a.问题的描述及算法设计; b.算法的流程图(要求画出模块图); c.算法的理论依据及其推导; d.相关的数值结果(通过程序调试),; e.数值计算结果的分析; f.附件(所有程序的原代码,要求对程序写出必要的注释)。 ●书写格式 a.要求用A4纸打印成册 b.正文格式:一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。 c.正文的内容:正文总字数要求在3000字左右(不含程序原代码)。 d.封面格式如下页。 ●考核方式 指导老师负责验收程序的运行结果,并结合学生的工作态度、实际动手能力、创新精神和设计报告等进行综合考评,并按优秀、良好、中等、及格和不及格五个等级给出每位同学的课程设计成绩。具体考核标准包含以下几个部分: a.平时出勤(占10%) b.系统需求分析、功能设计、数据结构设计及程序总体结构合理与否(占10%) c.程序能否完整、准确地运行,个人能否独立、熟练地调试程序(占40%) d.设计报告(占30%) 注意:不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。 e.独立完成情况(占10%)。 ●课程验收要求 a.判定算法设计的合理性,运行相关程序,获得正确的数值结果。

《数值分析》课程设计报告

《数值分析》课程设计实验报告 龙格—库塔法分析Lorenz 方程 200820302033 胡涛 一、问题叙述 考虑著名的Lorenz 方程 () dx s y x dt dy rx y xz dt dz xy bz dt ?=-???=--???=-?? 其中s ,r ,b 为变化区域内有一定限制的实参数,该方程形式简单,表面上看并无惊人之处,但由该方程揭示出的许多现象,促使“混沌”成为数学研究的崭新领域,在实际应用中也产生了巨大的影响。 二、问题分析 Lorenz 方程实际上是一个四元一阶常微分方程,用解析法精确求解是不可能的,只能用数值计算,最主要的有欧拉法、亚当法和龙格- 库塔法等。为了得到较高精度的,我们采用经典四阶龙格—库塔方法求解该问题。 三、实验程序及注释 (1)算法程序 function [T]=Runge_Kutta(f,x0,y0,h,n) %定义算法,其中f 为待解方程组, x0是初始自变量,y0是初始函数 值,h 是步长,n 为步数 if nargin<5 n=100; %如果输入参数个数小于5,则步数 n=100 end r=size(y0);r=r(1); %返回初始输出矩阵的行列数,并将 值赋给r(1) s=size(x0);s=s(1); %返回初始输入矩阵的行列数,并 将值赋给s(1) r=r+s; T=zeros(r,n+1); T(:,1)=[y0;x0]; for t=2:n+1 %以下是具体的求解过程 k1=feval(f,T(1:r-1,t-1)); k2=feval(f,[k1*(h/2)+T(1:r-1,t-1);x0+h/2]); k3=feval(f,[k2*(h/2)+T(1:r-1,t-1);x0+h/2]); k4=feval(f,[k3*h+T(1:r-1,t-1);x0+h]); x0=x0+h; T(:,t)=[T(1:r-1,t-1)+(k1+k2*2+k3*2+k4)*(h/6);x0]; end

12级数值分析课程设计

数值分析课程设计题目与要求 (12级应数及创新班) [设计题一] 编写顺序Gauss消去法和列主元Gauss消去法的函数,再分别调用这两个函数求解下面的84阶方程组: = , 然后考虑将方程组的阶数取为10至100之间多个值进行求解。将你的计算结果与方程组的精确解进行比较。从“快”、“准”、“省”三个方面分析以上两个算法,试提出改进的算法并加以实现和验证。 [设计题二] 编写平方根法和改进的平方根法(参见教材《计算方法》P54的例题2.5)的函数,然后分别调用这两个函数求解对称正定方程组Ax=b,其中A和b分别为: (1)系数矩阵A为矩阵(阶数取为10至100之间多个值): , 向量b随机地选取; (2)系数矩阵A为Hilbert矩阵(阶数取为5至40之间多个值),即A的第i行第j列元素,向量b的第i个分量取为。将你的计算结果与方程组的精确解进 行比较。 若出现问题,分析其原因,提出改进的设想并尝试实现之。

对于迭代法 ,......)2,1,0(99.02 1=-=+k x x x k k k , 它显然有不动点0*=x 。试设计2个数值实验 得到收敛阶数的大概数值(不利用判定收敛阶的判据定理): (1) 直接用收敛阶的定义; (2) 用最小二乘拟合的方法。 [设计题四] 湖水在夏天会出现分层现象,接近湖面温度较高,越往下温度变低。这种上热下冷的现象影响了水的对流和混合过程,使得下层水域缺氧,导致水生鱼类的死亡。如果把水温T 看成深度x 的函数T(x),有某个湖的观测数据如下: 环境工程师希望: 1) 用三次样条插值求出T(x)。 2) 求在什么深度处dx dT 的绝对值达到最大( 即02 2=dx T d )。 [设计题五] 某飞机头部的光滑外形曲线的型值点坐标由下表给出: ...值y 及一阶、二阶导数值y ’,y ”。绘出模拟曲线的图形。

数值分析课程课程设计汇总

课 程 设 计 我再也回不到大二了, 大学是那么短暂 设计题目 数值分析 学生姓名 李飞吾 学 号 x x x x x x x x 专业班级 信息计x x x x x 班 指导教师 设 计 题 目 共15题如下 成绩

数值分析课程设计 1.1 水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的一个荒岛上,发现那里有一大堆椰子。由于旅途的颠簸,大家都很疲惫,很快就入睡了。第一个水手醒来后,把椰子平分成五堆,将多余的一只给了猴子,他私藏了一堆后便又去睡了。第二、第三、第四、第五个水手也陆续起来,和第一个水手一样,把椰子分成五堆,恰多一只猴子,私藏一堆,再去入睡,天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一只再给猴子,试问原先共有几只椰子?(15621) 试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题 解:算法分析:解该问题主要使用递推算法,关于椰子数目的变化规律可以设起初的椰子数为0p ,第一至五次猴子在夜里藏椰子后,椰子的数目分别为01234,,,,p p p p p 再设最后每个人分得x 个椰子,由题: 14 (1)5 k k p p +=- (k=0,1,2,3,4)51(1)5 x p =- 所以551p x =+,11k k p p +=+利用逆向递推方法求解 15 1,4 k k p p +=+ (k=0,1,2,3,4) MATLAB 代码: n=input('n= '); n= 15621 for x=1:n p=5*x+1; for k=1:5 p=5*p/4+1; end if p==fix(p), break end end disp([x,p]) 1.2 设,1 5n n x I dx x =+? (1)从0I 尽可能精确的近似值出发,利用递推公式: 11 5(1,2,20)n n I I n n -=-+= 计算机从1I 到20I 的近似值; (2)从30I 较粗糙的估计值出发,用递推公式:

数值分析课程设计分析方案

郑州轻工业学院 《数值分析》 课程设计报告 题目: 1.非线性方程求解 8.最小二乘法 姓名:杨君芳 院<系):数学与信息科学学院 专业班 级:信科 11-01 学号:541110010148 指导教 师:汪远征 时间:2018年12月30日至2018年1月4日

摘要 本文的内容主要属于数值代数问题的迭代解法和差值问题。 在VC++6.0环境下对非线性方程求根的三种迭代解法<即一般迭代法,牛顿迭代法和弦截法)的算法实现,将抽象问题转化为计算机编程的一般解法思想,实现运用计算机解非线性方程的根。同时完成了运用最小二乘法的思想解决实际问题的简单设计, 本文也对该程序设计的难点、解决技巧、每种方法的理论基础、程序的算法分析、功能分析、模块设计以及算法的优点、缺点和主要参考文献等进行了详细的作答。 ,

目录 《数值分析》1 课程设计报告1 摘要2 目录3 1 理论基础4 1.1 非线性方程的迭代解法4 1.2最小二乘法4 2 算法分析5 2.1 功能分析5 2.1.1非线性方程的迭代解法5 2.2 算法分析5 3 程序设计8 3.1 选单和主窗口设计8 3.1.1非线性方程的迭代解法8 3.1.2最小二乘法10 3.2 模块设计14 3.2.1非线性方程的迭代解法14 3.2.2 最小二乘法18 4 总结24 5 参考文献25

1 理论基础 1.1 非线性方程的迭代解法 1、 一般迭代法:首先将方程f

数值分析课程课程设计

课程设计 我再也回不到大二了, 大学是那么短暂 设计题目________ 数值分析 学生姓名________ 李飞吾 _________ 学号 ______ XXXXXXXX 专业班级信息计XXXXX班 指导教师_________________________

数值分析课程设计 1.1水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的 一个荒岛上,发现那里有一大堆椰子。由于旅途的颠簸,大家都很疲惫, 很快就入睡了。第一个水手醒来后,把椰子平分成五堆,将多余的一只 给了猴子,他私藏了一堆后便又去睡了。第二、第三、第四、第五个水 手也陆续起来,和第一个水手一样,把椰子分成五堆,恰多一只猴子, 私藏一堆,再去入睡,天亮以后,大家把余下的椰子重新等分成五堆, 每人分一堆,正好余一只再给猴子,试问原先共有几只椰子? ( 15621) 试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题 解:算法分析:解该问题主要使用递推算法,关于椰子数目的变化规律 可以设起初的椰子数为p o ,第一至五次猴子在夜里藏椰子后,椰子的数 目分别为Pb ,p 1 ,p 2,P 3,P 4再设最后每个人分得x 个椰子,由题: 4 1 p k 1 ( p k 1) ( k=0,1,2,3,4 ) x -( p 5 1) 5 5 所以P 5 5x 1, p< p< 1 1利用逆向递推方法求解 P k - P k 1 1, ( k=0,1,2,3,4 ) 4 MATLAB^码: n 二in put(' n 二'); n= 15621 for x=1: n p=5*x+1; for k=1:5 p=5*p/4+1; end if P==fix(p), break end end disp([x,p]) 1 n 1. 2 设,I n — dx 05 x (1) 从I 。尽可能精确的近似值出发,利用递推公式: 1 I n 5I n 1 -(n 1,2,L 20) n 计算机从h 到I 20的近似值; (2) 从%较粗糙的估计值出发,用递推公式: 1 1 I n 1 —I n (n 30,29,L ,3,2) 5 5n 输出结果: 1023 15621 结果分析:此题的解题思想是在迭代法 中,判断p 为整数时,输出与p

数值分析课程设计(最终版)

本文主要通过Matlab 软件,对数值分析中的LU 分解法、最小二乘法、复化Simpon 积分、Runge-Kutta 方法进行编程,并利用这些方法在MATLAB 中对一些问题进行求解,并得出结论。 实验一线性方程组数值解法中,本文选取LU 分解法,并选取数据于《数值分析》教材第5章第153页例5进行实验。所谓LU 分解法就是将高斯消去法改写为紧凑形式,可以直接从矩阵A 的元素得到计算L 、U 元素的递推公式,而不需要任何步骤。用此方法得到L 、U 矩阵,从而计算Y 、X 。 实验二插值法和数据拟合中,本文选取最小二乘拟合方法进行实验,数据来源于我们课堂学习该章节时的课件中的多项式拟合例子进行实验。最小二乘拟合是一种数学上的近似和优化,利用已知的数据得出一条直线或者曲线,使之在坐标系上与已知数据之间的距离的平方和最小。利用excel 的自带函数可以较为方便的拟合线性的数据分析。 实验三数值积分中,本文选取复化Simpon 积分方法进行实验,通过将复化Simpson 公式编译成MATLAB 语言求积分∫e ;x dx 1 0完成实验过程的同时,也对复化Simpon 积分章节的知识进行了巩固。 实验四常微分方程数值解,本文选取Runge-Kutta 方法进行实验,通过实验了解Runge-Kutta 法的收敛性与稳定性同时学会了学会用Matlab 编程实现Runge-Kutta 法解常微分方程,并在实验的过程中意识到尽管我们熟知的四种方法,事实上,在求解微分方程初值问题,四阶法是单步长中最优秀的方法,通常都是用该方法求解的实际问题,计算效果比较理想的。 实验五数值方法实际应用,本文采用最小二乘法拟合我国2001年到2015年的人口增长模型,并预测2020年我国人口数量。 关键词:Matlab ;LU 分解法;最小二乘法;复化Simpon 积分;Runge-Kutta

数值分析实验报告总结

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

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

数值分析-课程设计doc

课程设计报告 课程名称数值分析 课题名称数值积分 专业信息与计算科学 班级 学号 姓名 指导教师 2015 年12 月20 日

湖南工程学院 课程设计任务书 课程名称数值分析 课题数值积分 专业班级信息与计算科学0901班 学生姓名 学号 指导老师辉 审批 任务书下达日期2015 年12 月7 日任务完成日期2015 年12 月20日

设计内容与设计要求 1. 设计内容: 非奇异矩阵矩阵A ∈R n*n ,已知A -1的一个近似矩阵D (0)∈R n*n ,则由矩阵公式: ?????+=-=--)()1()1(K K K K K F I D D AD I F , K=0,1,2,3........... (1).已知矩阵A 及其逆矩阵的一个近似D (k)为: A=?? ??? ?? ?? ???--------7.49.43.49.19.47.11.88.78.26 .21.27.07.37.08.38.1 D= ???? ? ???? ???---------185.0061.0388.0293.0199.0009.0046.0230.0089.0016.0169.0035.0270.0163.0460.0211.0 用以上方法计算序列{D (k)}迭代次数超过100次时结束。 (2)分析最后得到的D (k)是否A 的一个较好的近似逆矩阵 2.设计要求: ● 课程设计报告正文内容 a. 问题的描述及算法设计; b. 算法的流程图(要求画出模块图); c. 算法的理论依据及其推导; d. 相关的数值结果(通过程序调试),; e. 数值计算结果的分析; f. 附件(所有程序的原代码,要求对程序写出必要的注释)。 ● 书写格式

数值分析实验报告

学生实验报告实验课程名称 开课实验室 学院年级专业班 学生姓名学号 开课时间至学年学期

if(A(m,k)~=0) if(m~=k) A([k m],:)=A([m k],:); %换行 end A(k+1:n, k:c)=A(k+1:n, k:c)-(A(k+1:n,k)/ A(k,k))*A(k, k:c); %消去end end x=zeros(length(b),1); %回代求解 x(n)=A(n,c)/A(n,n); for k=n-1:-1:1 x(k)=(A(k,c)-A(k,k+1:n)*x(k+1:n))/A(k,k); end y=x; format short;%设置为默认格式显示,显示5位 (2)建立MATLAB界面 利用MA TLAB的GUI建立如下界面求解线性方程组: 详见程序。 五、计算实例、数据、结果、分析 下面我们对以上的结果进行测试,求解:

? ? ? ? ? ? ? ? ? ? ? ? - = ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? - - - - - - 7 2 5 10 13 9 14 4 4 3 2 1 13 12 4 3 3 10 2 4 3 2 1 x x x x 输入数据后点击和,得到如下结果: 更改以上数据进行测试,求解如下方程组: 1 2 3 4 43211 34321 23431 12341 x x x x ?? ???? ?? ???? ?? ???? = ?? ???? - ?? ???? - ???? ?? 得到如下结果:

数值分析实验— MATLAB实现

数值分析实验 ——MATLAB实现 姓名sumnat 学号2013326600000 班级13级应用数学2班 指导老师 2016年1月

一、插值:拉格朗日插值 (1) 1、代码: (1) 2、示例: (1) 二、函数逼近:最佳平方逼近 (2) 1、代码: (2) 2、示例: (2) 三、数值积分:非反常积分的Romberg算法 (3) 1、代码: (3) 2、示例: (4) 四、数值微分:5点法 (5) 1、代码: (5) 2、示例: (6) 五、常微分方程:四阶龙格库塔及Adams加速法 (6) 1、代码:四阶龙格库塔 (6) 2、示例: (7) 3、代码:Adams加速法 (7) 4、示例: (8) 六、方程求根:Aitken 迭代 (8) 1、代码: (8) 2、示例: (9) 七、线性方程组直接法:三角分解 (9) 1、代码: (9) 2、示例: (10) 八、线性方程组迭代法:Jacobi法及G-S法 (11) 1、代码:Jacobi法 (11) 2、示例: (12) 3、代码:G-S法 (12) 4、示例: (12) 九、矩阵的特征值及特征向量:幂法 (13) 1、代码: (13) 2、示例: (13)

一、插值:拉格朗日插值 1、代码: function z=LGIP(x,y)%拉格朗日插值 n=size(x); n=n(2);%计算点的个数 syms a; u=0;%拉格朗日多项式 f=1;%插值基函数 for i=1:n for j=1:n if j==i f=f; else f=f*(a-x(j))/(x(i)-x(j)); end end u=u+y(i)*f;f=1; end z=expand(u);%展开 2、示例: >> x=1:6; y1=x.^5+3*x.^2-6; y2=sin(x)+sqrt(x); >> f1=LGIP(x,y1) f1 = -6+3*a^2+a^5 %可知多项式吻合得很好 >> f2=vpa(LGIP(x,y2),3) f2 = .962e-1*a^4+1.38*a+.300*a^2+.504-.436*a^3-.616e-2*a^5

数值分析实验报告1

实验一 误差分析 实验1.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 ε 其中ε是一个非常小的数。这相当于是对(1.1)中19x 的系数作一个小的扰动。我们希望比较(1.1)和(1.2)根的差别,从而分析方程(1.1)的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个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 =

数值分析课程设计学生题目

《数值分析》课程设计

本课程设计的内容为:每个小组的同学均应完成以下五个案例; 目标:能将数值分析课程中所学的算法知识熟练应用于实际问题中。 案例1 土木工程和环境工程师在设计一条排水渠道时必须考虑渠道的各种参数(如宽度,深度,渠道内壁光滑度)及水流速度、流量、水深等物理量之间的关系。 假设修一条横断面为矩形的水渠,其宽度为B ,假定水流是定常的,也就是说水流速度不随时间而变化。 根据质量守恒定律可以得到 Q=UBH (1.1) 其中Q 是水的流量(s m /3 ),U 是流速(s m /),H 是水的深度(m )。 在水工学中应用的有关流速的公式是 3 /23 /22/1)2()(1H B BH S n U += (1.2) 这里n 是Manning 粗糙系数,它是一个与水渠内壁材料的光滑性有关的无量纲量;S 是水渠 的斜度系数,也是一个无量纲量,它代表水渠底每米内的落差。 把(1.2)代入(1.1)就得到 3 /23 /52/1)2()(1H B BH S n U += (1.3) 为了不同的工业目的(比如说要把污染物稀释到一定的浓度以下,或者为某工厂输入一定量 的水),需要指定流量Q 和B ,求出水的深度。这样,就需要求解 0) 2()(1)(3 /23 /52/1=-+=Q H B BH S n H f (1.4) 一个具体的案例是 s m Q S n m B /5 ,0002.0 ,03.0 ,203==== 求出渠道中水的深度H 。 所涉及的知识——非线性方程解法。 案例2 在化学工程中常常研究在一个封闭系统中同时进行的两种可逆反应 C D A C B A ?+?+2 其中A ,B ,C 和D 代表不同的物质。反应达到平衡是有如下的平衡关系: d a c b a c C C C k C C C k == 22 1 , 其中2 24 1107.3 ,104--?=?=k k 称为平衡常数,),,,(d c b a n C n =代表平衡状态时该物质的浓度。假定反应开始时各种物质的浓度为:

数值分析课程设计报告(95分)

数值分析课程设计报告 设计题1、2、3、5 学院、系: 专业: 姓名: 学号: 任课教师: 提交日期: 电子邮箱:

目录 [设计题一] (3) 1.1问题分析与设计思路 (3) 1.2程序清单 (4) 1.4 结果分析 (5) 1.5设计总结 (6) [设计题二] (6) 2.1问题分析与设计思路 (7) 2.2程序清单 (7) 2.3 运行结果 (9) 2.4结果分析与设计总结 (9) [设计题三] (10) 3.1问题分析与设计思路 (10) 3.2程序清单 (10) 3.3 运行结果 (12) 3.4结果分析与设计总结 (13) [设计题五] (13) 4.1问题分析与设计思路 (14) 4.2程序清单 (15) 4.3 运行结果 (20) 4.4结果分析 (21) 【数值分析课程设计总结】 (22)

11121112 31 111121n n H n n n n ?? ? ? ? ?=+ ? ? ? ?+-?? [设计题一] 设计实验验证Hilbert 矩阵的病态性。 1.1问题分析与设计思路 在求解任何反问题的过程中通常会遇到病态矩阵问题,而且病态矩阵问题还未有很好的解决方法,尤其是长方形、大型矩阵。目前主要有Tikhonov 、奇异值截断、奇异值修正等方 法。 求解方程组时对数据的小扰动很敏感的矩阵就是病态矩阵。解线性方程组Ax =b 时,若对于系数矩阵A 及右端项b 的小扰动δA 、δb ,方程组(A +δA )χ=b +δb 的解χ与原方程组Ax =b 的解差别很大,则称矩阵A 为病态矩阵。方程组的近似解χ一般都不可能恰好使剩余r=b -A χ为零,这时χ亦可看作小扰动问题A χ=b -r(即δA =0,δb =-r)的解,所以当A 为病态时,即使剩余很小,仍可能得到一个与真解相差很大的近似解。 因此,设计思路如下: 令x0=(1,1…..1),计算出b=Hx0,求出b ,然后再用高斯消去法球解Hx=b ,得到近似解x ,然后利用标准差:

相关主题
文本预览
相关文档 最新文档