《数值分析》课程设计—作业.doc
《《数值分析》课程设计—作业.doc》由会员分享,可在线阅读,更多相关《《数值分析》课程设计—作业.doc(53页珍藏版)》请在三一办公上搜索。
1、 数值分析课程设计作业(本文档内的有些运行结果,限于篇幅,使文档结构更和谐、紧凑,已做相关的改动,程序代码没变) 实验一1.1 水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的一个荒岛上,发现那里有一大堆椰子。由于旅途的颠簸,大家都很疲惫,很快就入睡了。第一个水手醒来后,把椰子平分成五堆,将多余的一只给了猴子,他私藏了一堆后便又去睡了。第二、第三、第四、第五个水手也陆续起来,和第一个水手一样,把椰子分成五堆,恰多一只猴子,私藏一堆,再去入睡,天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一只再给猴子,试问原先共有几只椰子?试分析椰子数目的变化规律,利用逆向递推的方法求解这
2、一问题。解:一、 问题分析:对于本题,比较简单,我们只需要判断原来椰子的个数及每个人私藏了一份之后剩下的是否能被5除余1,直到最后分完。function fentao(n)a=cat(1,7);for j=n:-1:1 a(1)=j;i=1; while i fentao(20001)a = 15621 12496 9996 7996 6396 5116 4092对于第一个程序,n取2000;对于第二个程序,n取20001,就能得到我们想要的结果,即原先一共有15621个椰子,最终平均每人得4092个椰子。 1.2 当时,选择稳定的算法计算积分.解:一、问题分析:由知: 以及: 得递推关系:
3、, 但是通过仔细观察就能知道上述递推公式每一步都将误差放大十倍,即使初始误差很小,但是误差的传播会逐步扩大,也就是说用它构造的算法是不稳定的,因此我们改进上述递推公式(算法)如下: 通过比较不难得出该误差是逐步缩小的,即算法是稳定的。二、 问题求解:为了利用上面稳定的算法,需要我们估计初值的值。因为 所以当n=100的时,我们有: 9.090909090909091e-0049.645173882220725e-004于是可取他们的平均值,有=9.368041486564908e-004,利用上述稳定算法,可求得相应的值和程序如下(限于篇幅,这里只给出了前后各十个连续的数据,详细的数据会连同作
4、业一并上交): 积分计算对照表 1n计算值准确值误差10.0591827610.059182761020.0402929470.040292947030.0294028930.0294028931.17997E-1640.0227087130.0227087131.5278E-1650.0183339560.018333956060.015312850.015312851.13285E-1670.0131250370.013125037080.01147650.0114765090.0101930630.0101930630910.000999990.000999992.68937E-1192
5、0.000989110.000989112.71896E-10930.0009784640.0009784642.74854E-09940.0009680450.0009680452.77813E-08950.0009578450.0009578462.80771E-07960.0009478620.0009478592.83729E-06970.0009380510.0009380782.86687E-05980.0009287660.0009284970.000289646990.0009164210.000919110.0029260391000.0009368040.000909911
6、0.029556214 I=cat(1,100);J=cat(1,100);K=cat(1,100);I(100)=9.368041486564908e-004;format long;%求近似值for n=99:-1:1 I(n)=(1-exp(-n)/n-I(n+1)/10;end%求精确值for n=1:100 syms x; k=n; J(k)=int(exp(-k*x)/(exp(-x)+10),x,0,1);end%求误差for n=1:100 K(n)=abs(I(n)-J(n)/J(n);endn=1:100;A=n;I;J;K;B=Axlswrite(1_2.xls,B) f
7、ormat long min=(1-exp(-100)/(11*100),max=(1-exp(-100)/(100*(exp(-1)+10)min = 9.090909090909091e-004max = 9.645173882220725e-004 I100=(min+max)/2I100 = 9.368041486564908e-0041.3 绘制静态和动态的Koch分形曲线问题描述:从一条直线段开始,将线段中间的三分之一部分用一个等边三角形的另两条边代替,形成具有5个结点的新的图形;在新的图形中,又将图中每一直线段中间的三分之一部分都用一个等边三角形的另两条边代替,再次形成新的图形,
8、这时,图形中共有17个结点。这种迭代继续进行下去可以形成Koch分形曲线。在迭代过程中,图形中的结点将越来越多,而曲线最终显示细节的多少取决于所进行的迭代次数和显示系统的分辨率。Koch分形曲线的绘制与算法设计和计算机实现相关。图1.1 Koch曲线的形成过程解:一、算法分析: 考虑由直线段(2个点)产生第一个图形(5个点)的过程。上图中,设和分别为原始直线段的两个端点,现需要在直线段的中间依次插入三个点,。显然位于线段三分之一处,位于线段三分之二处,点的位置可看成是由点以点为轴心,逆时针旋转600而得。旋转由正交矩阵实现。算法根据初始数据(和点的坐标),产生图1中5个结点的坐标。结点的坐标数
9、组形成一个矩阵,矩阵的第一行为的坐标,第二行为的坐标,第五行为的坐标。矩阵的第一列元素分别为5个结点的坐标,第二列元素分别为5个结点的坐标。进一步考虑该曲线形成过程中结点数目的变化规律。设第次迭代产生的结点数为,第次迭代产生的结点数为,则和中间的递推关系为。二、 问题求解: 、程序代码p=0 0;10 0; %P为初始两个点的坐标,第一列为x坐标,第二列为y坐标n=2; %n为结点数A=cos(pi/3) -sin(pi/3);sin(pi/3) cos(pi/3); %旋转矩阵for k=1:6 d=diff(p)/3; %diff计算相邻两个点的坐标之差,得到相邻两点确定的向量 %则d就计
10、算出每个向量长度的三分之一,与题中将线段三等分对应 m=4*n-3; %迭代公式 q=p(1:n-1,:); %以原点为起点,前n-1个点的坐标为终点形成向量 p(5:4:m,:)=p(2:n,:); %迭代后处于4k+1位置上的点的坐标为迭代前的相应坐标 p(2:4:m,:)=q+d; %用向量方法计算迭代后处于4k+2位置上的点的坐标 p(3:4:m,:)=q+d+d*A; %用向量方法计算迭代后处于4k+3位置上的点的坐标 p(4:4:m,:)=q+2*d; %用向量方法计算迭代后处于4k位置上的点的坐标 n=m; subplot(2,3,k) plot(p(:,1),p(:,2),r)
11、 %绘出每相邻两个点的连线axis(0,3,0,3) %迭代后新的结点数目 %axis offend 、运行结果: 实验二2.1 小行星轨道问题:一天文学家要确定一颗小行星绕太阳运行的轨道,他在轨道平面内建立以太阳为原点的直角坐标系,在五个不同的对小行星作了五次观察,测得轨道上五个点的坐标数据(单位:万公里)如下表所示:P1P2P3P4P5X坐标5360558460628596666268894Y坐标602611179169542349268894由开普勒第一定律知,小行星轨道为一椭圆,椭圆的一般方程可表示为:现需要建立椭圆的方程以供研究。(1) 分别将五个点的数据代入椭圆一般方程中,写出五个
12、待定系数满足的等式,整理后写出线性方程组以及方程组的系数矩阵和右端项b;(2) 用MARLAB求低阶方程的指令Ab求出待定系数;(3) 分别用直接法、Jacobi迭代法、Gauss-Seidel迭代法求出待定系数.解:(1)、程序代码:X=53605 58460 62859 66662 68894;Y=6026 11197 16954 23492 68894;B=X.*X;2*X.*Y;Y.*Y;2*X;2*Y; %B是系数矩阵的转置A=B;%A是系数矩阵A=vpa(A,16)syms a1 a2 a3 a4 a5;a=a1;a2;a3;a4;a5;b=-1;-1;-1;-1;-1;b=sym
13、(A*a) 、运行结果:A = 2873496025.0, 646047460.0, 36312676.0, 107210.0, 12052.0 3417571600.0, 1309153240.0, 125372809.0, 116920.0, 22394.0 3951253881.0, 2131422972.0, 287438116.0, 125718.0, 33908.0 4443822244.0, 3132047408.0, 551874064.0, 133324.0, 46984.0 4746383236.0, 9492766472.0, 4746383236.0, 137788.0
14、, 137788.0 b = 2873496025.0*a1 + 646047460.0*a2 + 36312676.0*a3 + 107210.0*a4 + 12052.0*a5 3417571600.0*a1 + 1309153240.0*a2 + 125372809.0*a3 + 116920.0*a4 + 22394.0*a5 3951253881.0*a1 + 2131422972.0*a2 + 287438116.0*a3 + 125718.0*a4 + 33908.0*a5 4443822244.0*a1 + 3132047408.0*a2 + 551874064.0*a3 +
15、133324.0*a4 + 46984.0*a5 4746383236.0*a1 + 9492766472.0*a2 + 4746383236.0*a3 + 137788.0*a4 + 137788.0*a5 即是方程组的形式如下:-1=2873496025.0*a1 + 646047460.0*a2 + 36312676.0*a3 + 107210.0*a4 + 12052.0*a5-1=3417571600.0*a1 + 1309153240.0*a2 + 125372809.0*a3 + 116920.0*a4 + 22394.0*a5-1=3951253881.0*a1 + 21314
16、22972.0*a2 + 287438116.0*a3 + 125718.0*a4 + 33908.0*a5-1=4443822244.0*a1 + 3132047408.0*a2 + 551874064.0*a3 + 133324.0*a4 + 46984.0*a5-1=4746383236.0*a1 + 9492766472.0*a2 + 4746383236.0*a3 + 137788.0*a4 + 137788.0*a5(2) 、用指令Ab求出待定系数的值如下: b=-1;-1;-1;-1;-1;A;a=Ab a = 0.00000000008015133713757207070503
17、4479362305 -0.000000000099919136582879577308894350837601 -0.00000000017639794583181340912897589334276 -0.000012556065177690492529375516352892 0.000015497775048603393791640753306649 (3) 、1)、直接法 、程序代码:function RA,RB,n,X=bilizy(A,b)B=A,b;n=length(b);RA=rank(A);RB=rank(B);rank_cha=RB-RA;if rank_cha0, di
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值分析 数值 分析 课程设计 作业
链接地址:https://www.31ppt.com/p-4194736.html