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

数值分析课程设计

2.4722
2.3056
2.1389
1.9722
1.8056
1.6389
1.4722
1.3056
1.1389
0.9722
0.8056
0.6389
0.4722
0.3056
【结果分析】
第一小题当中首先算出较为精确的I0,之后经过代入的方法计算出 I(20),结果是比较准确的。但是第二小题当中先是算出必是很精确的I(30),本来所得误差比第一步就稍微大一点了,然后再用这个误差稍微大的I(30)回代计算I(20)——I(1),而从I(30)算到I(20)的时候误差这时已经够大了,采用这个误差更大的结果去计算我们想要的值,当然误差大得惊人啦,显然比第一种误差大得多。所以我们使用第一种方法得到的结果较接近准确值。

值课
分 程
析 设

专业班级:信息与计算科学09-1班
姓 名:陈育伟
学 号:********
实验一
1.1水手、猴子和椰子问题:五个水手带了一只猴子来到南太平洋的一个荒岛上,发现那里有一大堆椰子。由于旅途的颠簸,大家都很疲惫,很快就入睡了。第一个水手醒来后,把椰子平分成五堆,将多余的一只给了猴子,他私藏了一堆后便又去睡了。第二、第三、第四、第五个水手也陆续起来,和第一个水手一样,把椰子分成五堆,恰多一只猴子,私藏一堆,再去入睡,天亮以后,大家把余下的椰子重新等分成五堆,每人分一堆,正好余一只再给猴子,试问原先共有几只椰子?
具体算法如下:
>> 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;
-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分别是三个方程组的解。
实验二
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];
-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
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];
【算法分析】
>> 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
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);
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
plot(x,y1,x,y2)
得到的图形如右图:
【结果分析】
函数采用taloy展开项来逼近原函数,依次采用一阶、二阶、三阶的泰勒公式,显然有限项越多,逼近效果越好,从图形就可以很明显的看出来了。
3.3追赶曲线的计算机模拟
问题描述:欧洲文艺复兴时期的著名人物达·芬奇曾经提出一个有趣的“狼追兔子”问题,当一只兔子正在它的洞穴南面60码处觅食时,一只饿狼出现在兔子正东的100码处。兔子急忙奔向自己的洞穴,狼立即以快于兔子一倍的速度紧追兔子不放。兔子一旦回到洞穴便逃脱厄,问狼是否会追赶上兔子?
【程序实现】
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 的值为
实验三
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!
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
>>eval (ans)
0
//即I(30)≈0
s=0;
for n=30:-1:2
s=-s/5+1/5*n;
disp(s)
ends =ຫໍສະໝຸດ 064.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
= +
= +
【编程实现】
建立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);
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];
1/10 -3.2/7.9 10015.0443
L*U≈20 2 3
1 8 1
2 -3 15
【结果分析】
因为在运算过程中遇到除不尽的分数采用的是四舍五入的方法来记录数据,所以所得结果是一个近似值,但是结果非常的接近准确值,所以说这种方法是正确的。
2.2用矩阵分解方法求上题中A的逆矩阵。记
分别求解方程组
fprintf('狼与兔子的距离为%5.4\n',d)
相关主题