数值分析课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
-0.0080
a2 =
-0.0164
0.1237
0.0269
a3 =
-0.0093
-0.0072
0.0665
【结果分析】
所以A的逆矩阵是
0.0517 -0.0164 -0.0093
-0.0055 0.1237 -0.0072
-0.0080 0.0269 0.0665
同时,a1、a2、a3分别是三个方程组的解。
由于三个方程组系数矩阵相同,可以将分解后的矩阵重复使用。对第一个方程组,由于A=LU,所以先求解下三角方程组 ,再求解上三角方程组 ,则可得逆矩阵的第一列列向量;类似可解第二、第三方程组,得逆矩阵的第二列列向量的第三列列向量。由三个列向量拼装可得逆矩阵 。
【程序实现】
A = [20 2 3;1 8 1;2 -3 15];
= +
= +
【编程实现】
建立M脚本文件 m3_3.m
x2(1)=100;
y2(1)=0;
t(1)=0;
tstep=1;
for k=1:60
t(k+1)=t(k)+tstep;
x2(k+1)=x2(k)+2*(0-x2(k))/sqrt((0-x2(k))^2+(t(k)-y2(k))^2);
y2(k+1)=y2(k)+2*(t(k)-y2(k))/sqrt((0-x2(k))^2+(t(k)-y2(k))^2);
【算法分析】
>> syms x n;
>> int(1/(x+5),0,1)
>>ans
log(2)+log(3)-log(5)
eval(ans)
ans =
0.1823
Now we use to compute In where n rang from 1 to 20.
s=0.1823
for n=1:20
1023 15621
【结果分析】
要使得最初的椰子数p0为整数,必须取(x +1)为45( =1024)的倍数,一种简单的处理可取x= 1023。
1.2设,
(1)从 尽可能精确的近似值出发,利用递推公式:
计算机从 到 的近似值;
(2)从 较粗糙的估计值出发,用递推公式:
计算从 到 的近似值;
(3)分析所得结果的可靠性以及出现这种现象的原因
07.90000.8500
0015.0443
So U=20.0000 2.00003.0000
07.90000.8500
0015.0443
And from the Gaussion elimination we have that
L= 1 0 0
1/20 1 0
1/10 -3.2/7.9 1
验证:
>>L=[1,0,0;0.05,1,0;0.1,-0.405063,1];
实验三
3.1用泰勒级数的有限项逼近正弦函数
用计算机绘出上面四个函数的图形。
【算法分析】
(1)y1=x,x∈[0,pi/2]
则算法如下:
>> x=0:.1:pi/2;
y1=sin(x);
y2=x;
plot(x,y1,x,y2)
得到的图形如右图:
(2)y₀(x)=sin x ,x∈[0,π];

y(x)≈x- x³/3!
用计算机模拟的方法也可以得到同样的结论。取时间步长为1s,随时间步长的增加,考虑这一系统中的各个元素(狼和兔子)所处的位置变化规律,用计算机作出模拟。最后,根据第60s时狼所在的位置的坐标,判断狼是否能追上兔子。
问题思考与实验:
(1)设兔子奔跑的速度为 ,则狼运动的速度为 。建立平面直角坐标系,若当 时刻,兔子位于点 处,狼位于点 处。试根据 , 的坐标确定一个单位向量 描述狼在 时段内的运动方向。
-3.2893e+006
1.6447e+007
-8.2233e+007
4.1116e+008
-2.0558e+009
(2)首先计算I(30)的近似值
>> syms x n;
>> int(x^30/(x+5),0,1)
<< //所得结果为
ans =
931322574615478515625*log(2)+931322574615478515625*log(3)-931322574615478515625*log(5)-79095966183067699902965545527073/465817912560
s=-5*s+1/n;
disp(s)
end
s =
0.1823
0.0885
0.0575
0.0458
0.0208
0.0958
-0.3125
1.7054
-8.4018
42.1200
-210.5002
1.0526e+003
-5.2629e+003
2.6314e+004
-1.3157e+005
6.5786e+005
【程序实现】
n=input(’input n:’);
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])
运行这段程序后,屏幕出现要求从键盘输入 x 数据的信息input n,输入1200后,MATLAB计算出合适的 x 和 p0 的值为
x1(k)=0;
y1(k)=t(k);
end
axis([0,100,0,60])
hold on
for k=1:61
plot(x2(k),y2(k),'*',x1(k),y1(k),'o')
pause(0.5)
end
hold off
d=sqrt((0-x(61))^2+(t(61)-y(61))^2);
C(2)=C(1)+B(2)
得到结果为:
C(2) =20.0000 2.0000 3.0000
07.9000 0.8500
0-3.2000 14.7000
B(3)=[0,0,0; 0,0,0; 0,0.32,0.85*3.2/7.9];
C(3)=B(3)+C(2)
得到结果为:
C(3)=20.0000 2.00003.0000
问题分析:首先计算狼的初始位置到兔子洞穴的直线距离:
由于狼奔跑的速度是兔子速度的两倍,兔子跑60码的时间狼可以跑120码。如果狼沿直线奔向兔窝,应该是可以追上兔子的。但是,有人推导出狼在追赶兔子过程中的运动曲线为
根据曲线方程,当 时, 。也就是说,在没有兔窝的情况下兔子一直往北跑,在跑到大约66码处将被狼追上。由此可知,在有兔窝时狼是追赶不上兔子的。
试分析椰子数目的变化规律,利用逆向递推的方法求解这一问题(15621)。
【问题分析】
首先分析问题的解答方法,应该采用逆推的方式解决问题。每个水手起来的椰子数量等于前一个水手醒来时椰子数量少一的五分之四。最后每个水手得到的椰子数量会等于最后一堆椰子少一的五分之一。根据这个逆推,由于椰子的数量是整数,所以利用循环语句知道整数的解答为止。

值课
分 程
析 设

专业班级:信息与计算科学09-1班
姓 名:陈育伟
学 号:********
实验一
1.1水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的一个荒岛上,发现那里有一大堆椰子。由于旅途的颠簸,大家都很疲惫,很快就入睡了。第一个水手醒来后,把椰子平分成五堆,将多余的一只给了猴子,他私藏了一堆后便又去睡了。第二、第三、第四、第五个水手也陆续起来,和第一个水手一样,把椰子分成五堆,恰多一只猴子,私藏一堆,再去入睡,天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一只再给猴子,试问原先共有几只椰子?
这一问题的研究方法可以推广到如鱼雷追击潜艇、地对空导弹击飞机等问题上去。
在对真实系统做实验时,可能时间太长、费用太高、危险太大、甚至很难进行。计算机模拟是用计算机模仿实物系统,对系统的结构和行为进行动态演示,以评价或预测系统的行为效果。根据模拟对象的不同特点,分为确定性模拟和随机性模拟两大类。模拟通常所用的是时间步长法,即按照时间流逝的顺序一步一步对所研究的系统进行动态演示,以提取所需要的数据。
U=[20,2,3;0,7.9,0.85;0,0,15.0443];
>> A*B
ans =
20.0000 2.0000 3.0000
1.0000 8.0000 1.0000
2.0000 -2.9995 14.9998
所以
LU= 1 0 020.0000 2.00003.0000
1/20 1 007.90000.8500
plot(x,y1,x,y2)
得到的图形如右图:
【结果分析】
函数采用taloy展开项来逼近原函数,依次采用一阶、二阶、三阶的泰勒公式,显然有限项越多,逼近效果越好,从图形就可以很明显的看出来了。
3.3追赶曲线的计算机模拟
问题描述:欧洲文艺复兴时期的著名人物达·芬奇曾经提出一个有趣的“狼追兔子”问题,当一只兔子正在它的洞穴南面60码处觅食时,一只饿狼出现在兔子正东的100码处。兔子急忙奔向自己的洞穴,狼立即以快于兔子一倍的速度紧追兔子不放。兔子一旦回到洞穴便逃脱厄,问狼是否会追赶上兔子?
b1 = [1;0;0];
b2 = [0;1;0];
b3 = [0;0;1];
[L,U] = lu(A);
Y = inv(L)*b1;
a1 = inv(U)*Y;
Y = inv(L)*b2;
a2 = inv(U)*Y;
Y = inv(L)*b3;
a3 = inv(U)*Y;
a1 =
0.0517
-0.0055
fprintf('狼与兔子的距离为%5.4\n',d)
运行程序可以出现动态的图形
去掉语句pause(0.5)后,可以显示静态的图形如下图:
解决本题时,使用了计算机模拟的方法,动态演示了系统的过程,使得问题的解决大大地简化了。
实验四
实验二
2.1用高斯消元法的消元过程作矩阵分解。设
消元过程可将矩阵A化为上三角矩阵U,试求出消元过程所用的乘数 、 、 并以如下格式构造下三角矩阵L和上三角矩阵U
验证:矩阵A可以分解为L和U的乘积,即A=LU。
【算法分析】
(1)The process of Gaussian elimination
A= [20, 2,3;1,8,1;2,-3,15];
2.4722
2.3056
2.1389
1.9722
1.8056
1.6389
1.4722
1.3056
1.1389
0.9722
0.8056Fra Baidu bibliotek
0.6389
0.4722
0.3056
【结果分析】
第一小题当中首先算出较为精确的I0,之后经过代入的方法计算出 I(20),结果是比较准确的。但是第二小题当中先是算出必是很精确的I(30),本来所得误差比第一步就稍微大一点了,然后再用这个误差稍微大的I(30)回代计算I(20)——I(1),而从I(30)算到I(20)的时候误差这时已经够大了,采用这个误差更大的结果去计算我们想要的值,当然误差大得惊人啦,显然比第一种误差大得多。所以我们使用第一种方法得到的结果较接近准确值。
1/10 -3.2/7.9 10015.0443
L*U≈20 2 3
1 8 1
2 -3 15
【结果分析】
因为在运算过程中遇到除不尽的分数采用的是四舍五入的方法来记录数据,所以所得结果是一个近似值,但是结果非常的接近准确值,所以说这种方法是正确的。
2.2用矩阵分解方法求上题中A的逆矩阵。记
分别求解方程组
具体算法如下:
>> x=0:.1:pi;
y1=sin(x);
y2=x-x.^3/6;
plot(x,y1,x,y2)
得到的图形如右图:
(3)y3=x-x^3/6+x^5/120,x∈[0,pi/2]
具体算法如下:
>>x=0:.1:pi/2;
y1=sin(x);
y2=x-x.^3/6+x.^5/120;
B(1)=[0,0,0;-1,-2/20,-3/20;0,0,0];
C(1)=A+B(1)
得到结果为:
C(1)=20.0000 2.00003.0000
07.9000 0.8500
2.0000-3.000015.0000
B(2)=[0,0,0; 0,0,0; -20/10,-2/10,-3/10];
(2)根据狼的运动方向和速度推导 到 的坐标的具体表达式;
(3)用计算机绘制追赶曲线的图形(包括静态和动态的图形)。
【问题求解】
由于P点的运动方向始终指向Q,设在t= 时刻的位置为 ,则P点的运动方向可以由下面的单位向量表示
=
P点的速度是2m/s,取时间步长为 ,设在t= 时刻,P点的位置为 ,于是P点的位置变化规律为
>>eval (ans)
0
//即I(30)≈0
s=0;
for n=30:-1:2
s=-s/5+1/5*n;
disp(s)
end
s =
0
6
4.6000
4.6800
4.4640
4.3072
4.1386
3.9723
3.8055
3.6389
3.4722
3.3056
3.1389
2.9722
2.8056
2.6389
相关文档
最新文档