数值分析实验2014
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数值分析实验(2014,9,16~10,28)
信计1201班,人数34人
数学系机房
数值分析
计算实习报告册
专业
学号
姓名
2014~2015年第一学期
实验一 数值计算的工具 Matlab
1.解释下MATLAB 程序的输出结果 程序: t=0.1 n=1:10 e=n/10-n*t
e 的结果:0 0 -5.5511e-017 0 0 -1.1102e-016 -1.1102e-016 0 0 0 2.下面MATLAB 程序的的功能是什么? 程序:
x=1;while 1+x>1,x=x/2,pause(0.02),end 用迭代法求出x=x/2,的最小值
x=1;while x+x>x,x=2*x,pause(0.02),end 用迭代法求出x=2*x,的值,使得2x>X x=1;while x+x>x,x=x/2,pause(0.02),end 用迭代法求出x=x/2,的最小值,使得2x>X
3.考虑下面二次代数方程的求解问题
02=++c bx ax
公式a ac
b b x 242-+-=是熟知的,与之等价地有a
c b b c x 422-+-=,对于
1,100000000,1===c b a ,应当如何选择算法。
应该用a
ac
b b x 242-+-=计算,因为b 做分母
4.函数)sin(x 有幂级数展开...!
7!5!3sin 7
53+-+-=x x x x x
利用幂级数计算x sin 的MATLAB 程序为
function s=powersin(x) s=0; t=x; n=1;
while s+t~=s; s=s+t ;
t=-x^2/((n+1)*(n+2))*t ; n=n+2; end t1=cputime; pause(10); t2=cputime; t0=t2-t1
(a)解释上述程序的终止准则。 当s+t=s ,终止循环。
(b)对于2/21,2/11
,2/πππ=x 计算的进度是多少?分别计算多少项? X=pi/2时,s =1.0000 x=11pi/2时,s=-1.0000 x=21pi/2时,s =0.9999 Cputime 分别是0.1563 0.0469 0.0156
5.考虑调和级数∑∞
=11
n n
,它是微积分中的发散级数,在计算机上计算该级数的部
分和,会得到怎么样的结果,为什么?
function s=fun(n) s=0; t=1/n;
for i=1:n s=s+1/i; end
当n=100时s =5.1874 当n=80时s =4.9655 当n=50时,s =4.4992 当n=10时,s =2.9290
6.指数函数的级数展开...!
3!213
2++++=x x x e x
,如果对于0 似计算指数函数的值,这样的算法结果是否会好,为什么? function s=powerexp(x) s=1; n=1; t=1; while s+t~=s; t=(x^n)/factorial(n); s=s+t; n=n+1; end 当x=-1时,s =0.3679 当x=-2时,s =0.1353 当x=-3时,s =0.0498 7.考虑数列n i x i ,...2,1,=,它的统计平均定义为 ∑==n i i x n x 1 1, 标准差2 121)(11⎥⎦⎤⎢⎣⎡--=∑=x x n n i i σ数学上等价于2 122 1)(11⎥⎥⎦ ⎤⎢⎢⎣⎡--=∑=x n x n n i i σ作为标准差的两种算法,你将如何评价他们的得与失。 clc,clear x=randn(1,10000); n=length(x); a=sum(x)/n; y1=sqrt(sum((x-a).^2)/(n-1)); y2=sqrt((sum(x.^2)-n*a^2)/(n-1)); y1,y2 后面的公式更好 改变m 的值求出不同个数x 标准差 ,没有好大差别 实验二 插值法计算实习题 1.已知函数在下列个点的值为 试用4次插值多项式(x)p 4及三次样条插值S(x)(自然边界条件)对数据进行插值。用图给出0,1,11,10}i 0.08i,0.2x ),y ,{(x i i i =+=,(x)p 4及S(x)。 function f=lagfun(x) a=[0.2,0.4,0.6,0.8,1.0]; b=[0.98,0.92,0.81,0.64,0.38]; for i=1:5 L(i)=1; for j=1:5 if j~=i L(i)=L(i)*(x-a(j))/(a(i)-a(j)); end end end f=0; for i=1:5 f=f+L(i)*b(i); end 执行文件 x0=[0.2,0.4,0.6,0.8,1.0]; y0=[0.98,0.92,0.81,0.64,0.38]; plot(x0,y0,'o') hold on grid on fplot('lagfun',[0,1]);hold on x=0:0.1:1; plot(x,newton(x0,y0,x),'r'); 三次样条插值: x=[0.2,0.4,0.6,0.8,1.0]; y=[0.98,0.92,0.81,0.64,0.38]; x1=0.2:0.08:1; y1=interp1(x,y,x1,'spline') plot(x1,y1)